diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml new file mode 100644 index 000000000..af8eaf1fc --- /dev/null +++ b/.github/workflows/documentation.yml @@ -0,0 +1,30 @@ +name: Build Documentation +on: + push: + branches: + - main + tags: + - "*" + pull_request: + branches: + - "*" + +permissions: + contents: write + +jobs: + build-documentation: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Build Docs + run: | + ./script/build_docs + + - name: Deploy Docs + if: github.ref == 'refs/heads/main' + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: docs diff --git a/Nimble.xcodeproj/project.pbxproj b/Nimble.xcodeproj/project.pbxproj index 4d2f55b88..1ffef9319 100644 --- a/Nimble.xcodeproj/project.pbxproj +++ b/Nimble.xcodeproj/project.pbxproj @@ -125,6 +125,7 @@ 857D1849253610A900D8693A /* BeWithin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857D1848253610A900D8693A /* BeWithin.swift */; }; 857D184F2536124400D8693A /* BeWithinTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857D184D2536123F00D8693A /* BeWithinTest.swift */; }; 8913649429E6925F00AD535E /* utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F14FB63194180C5009F2A08 /* utils.swift */; }; + 8914E31C2BB866BF00C888DE /* Nimble.docc in Sources */ = {isa = PBXBuildFile; fileRef = 8914E31B2BB866BF00C888DE /* Nimble.docc */; }; 891729D52B1842D6005CC866 /* DSL+Require.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891729D42B1842D6005CC866 /* DSL+Require.swift */; }; 891729D72B18431D005CC866 /* Requirement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891729D62B18431D005CC866 /* Requirement.swift */; }; 891A04712AB0164500B46613 /* AsyncTimerSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 891A04702AB0164500B46613 /* AsyncTimerSequence.swift */; }; @@ -310,6 +311,7 @@ 7B5358C11C39155600A23FAA /* ObjCSatisfyAnyOfTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ObjCSatisfyAnyOfTest.m; sourceTree = ""; }; 857D1848253610A900D8693A /* BeWithin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeWithin.swift; sourceTree = ""; }; 857D184D2536123F00D8693A /* BeWithinTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BeWithinTest.swift; sourceTree = ""; }; + 8914E31B2BB866BF00C888DE /* Nimble.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = Nimble.docc; sourceTree = ""; }; 891729D42B1842D6005CC866 /* DSL+Require.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DSL+Require.swift"; sourceTree = ""; }; 891729D62B18431D005CC866 /* Requirement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Requirement.swift; sourceTree = ""; }; 891A04702AB0164500B46613 /* AsyncTimerSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncTimerSequence.swift; sourceTree = ""; }; @@ -463,6 +465,7 @@ 1F1A742E1940169200FFFC47 /* Nimble.h */, 8952ADDC2B4F159400D9305F /* PrivacyInfo.xcprivacy */, 1FD8CD241968AB07008ED995 /* Utils */, + 8914E31B2BB866BF00C888DE /* Nimble.docc */, ); name = Nimble; path = Sources/Nimble; @@ -839,6 +842,7 @@ 1F43728C1A1B343C00EB80F8 /* SourceLocation.swift in Sources */, 1FD8CD4F1968AB07008ED995 /* BeLessThanOrEqual.swift in Sources */, 1F1871E71CA8A18400A34BF2 /* Polling.swift in Sources */, + 8914E31C2BB866BF00C888DE /* Nimble.docc in Sources */, 1FDBD8681AF8A4FF0089F27B /* AssertionDispatcher.swift in Sources */, AE4BA9AE1C88DDB500B73906 /* Errors.swift in Sources */, 892FDF1329D3EA7700523A80 /* AsyncExpression.swift in Sources */, diff --git a/Package.resolved b/Package.resolved index 989bd3792..4a6747690 100644 --- a/Package.resolved +++ b/Package.resolved @@ -17,6 +17,24 @@ "revision" : "dc9af4781f2afdd1e68e90f80b8603be73ea7abc", "version" : "2.2.0" } + }, + { + "identity" : "swift-docc-plugin", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-docc-plugin", + "state" : { + "revision" : "26ac5758409154cc448d7ab82389c520fa8a8247", + "version" : "1.3.0" + } + }, + { + "identity" : "swift-docc-symbolkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-docc-symbolkit", + "state" : { + "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", + "version" : "1.0.0" + } } ], "version" : 2 diff --git a/Package.swift b/Package.swift index 0c6ae39f0..566f9540f 100644 --- a/Package.swift +++ b/Package.swift @@ -20,6 +20,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/mattgallagher/CwlPreconditionTesting.git", .upToNextMajor(from: "2.1.0")), + .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"), ], targets: { var testHelperDependencies: [PackageDescription.Target.Dependency] = ["Nimble"] diff --git a/Package@swift-5.9.swift b/Package@swift-5.9.swift index 3a52f3140..d7ed190e7 100644 --- a/Package@swift-5.9.swift +++ b/Package@swift-5.9.swift @@ -20,6 +20,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/mattgallagher/CwlPreconditionTesting.git", .upToNextMajor(from: "2.2.0")), + .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"), ], targets: { var testHelperDependencies: [PackageDescription.Target.Dependency] = ["Nimble"] diff --git a/README.md b/README.md index 4372f086b..f3b7ded3a 100644 --- a/README.md +++ b/README.md @@ -19,1990 +19,10 @@ expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi")) expect(ocean.isClean).toEventually(beTruthy()) ``` -# How to Use Nimble +# Documentation - - -**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - -- [Some Background: Expressing Outcomes Using Assertions in XCTest](#some-background-expressing-outcomes-using-assertions-in-xctest) -- [Nimble: Expectations Using `expect(...).to`](#nimble-expectations-using-expectto) - - [Custom Failure Messages](#custom-failure-messages) - - [Type Safety](#type-safety) - - [Operator Overloads](#operator-overloads) - - [Lazily Computed Values](#lazily-computed-values) - - [C Primitives](#c-primitives) - - [Async/Await Support](#asyncawait-support) - - [Async Matchers](#async-matchers) - - [Polling Expectations](#polling-expectations) - - [Using Polling Expectations in Async Tests](#using-polling-expectations-in-async-tests) - - [Verifying a Matcher will Never or Always Match](#verifying-a-matcher-will-never-or-always-match) - - [Waiting for a Callback to be Called](#waiting-for-a-callback-to-be-called) - - [Changing the Timeout and Polling Intervals](#changing-the-timeout-and-polling-intervals) - - [Changing default Timeout and Poll Intervals](#changing-default-timeout-and-poll-intervals) - - [Quick](#quick) - - [XCTest](#xctest) - - [Objective-C Support](#objective-c-support) - - [Disabling Objective-C Shorthand](#disabling-objective-c-shorthand) -- [Using `require` to demand that a matcher pass before continuing](#using-require-to-demand-that-a-matcher-pass-before-continuing) - - [Polling with `require`.](#polling-with-require) - - [Using `require` with Async expressions and Async matchers](#using-require-with-async-expressions-and-async-matchers) - - [Using `unwrap` to replace `require(...).toNot(beNil())`](#using-unwrap-to-replace-requiretonotbenil) - - [Throwing a Custom Error from Require](#throwing-a-custom-error-from-require) -- [Built-in Matcher Functions](#built-in-matcher-functions) - - [Type Checking](#type-checking) - - [Equivalence](#equivalence) - - [Identity](#identity) - - [Comparisons](#comparisons) - - [Types/Classes](#typesclasses) - - [Truthiness](#truthiness) - - [Swift Assertions](#swift-assertions) - - [Swift Error Handling](#swift-error-handling) - - [Exceptions](#exceptions) - - [Collection Membership](#collection-membership) - - [Strings](#strings) - - [Collection Elements](#collection-elements) - - [Swift](#swift) - - [Objective-C](#objective-c) - - [Collection Count](#collection-count) - - [Notifications](#notifications) - - [Result](#result) - - [Matching a value to any of a group of matchers](#matching-a-value-to-any-of-a-group-of-matchers) - - [Custom Validation](#custom-validation) - - [Mapping a Value to Another Value](#mapping-a-value-to-another-value) -- [Writing Your Own Matchers](#writing-your-own-matchers) - - [MatcherResult](#matcherresult) - - [Lazy Evaluation](#lazy-evaluation) - - [Type Checking via Swift Generics](#type-checking-via-swift-generics) - - [Customizing Failure Messages](#customizing-failure-messages) - - [Basic Customization](#basic-customization) - - [Full Customization](#full-customization) - - [Asynchronous Matchers](#asynchronous-matchers) - - [Supporting Objective-C](#supporting-objective-c) - - [Properly Handling `nil` in Objective-C Matchers](#properly-handling-nil-in-objective-c-matchers) -- [Installing Nimble](#installing-nimble) - - [Installing Nimble as a Submodule](#installing-nimble-as-a-submodule) - - [Installing Nimble via CocoaPods](#installing-nimble-via-cocoapods) - - [Installing Nimble via Swift Package Manager](#installing-nimble-via-swift-package-manager) - - [Xcode](#xcode) - - [Package.Swift](#packageswift) - - [Using Nimble without XCTest](#using-nimble-without-xctest) - - [Privacy Statement](#privacy-statement) - - - -# Some Background: Expressing Outcomes Using Assertions in XCTest - -Apple's Xcode includes the XCTest framework, which provides -assertion macros to test whether code behaves properly. -For example, to assert that `1 + 1 = 2`, XCTest has you write: - -```swift -// Swift - -XCTAssertEqual(1 + 1, 2, "expected one plus one to equal two") -``` - -Or, in Objective-C: - -```objc -// Objective-C - -XCTAssertEqual(1 + 1, 2, @"expected one plus one to equal two"); -``` - -XCTest assertions have a couple of drawbacks: - -1. **Not enough macros.** There's no easy way to assert that a string - contains a particular substring, or that a number is less than or - equal to another. -2. **It's hard to write asynchronous tests.** XCTest forces you to write - a lot of boilerplate code. - -Nimble addresses these concerns. - -# Nimble: Expectations Using `expect(...).to` - -Nimble allows you to express expectations using a natural, -easily understood language: - -```swift -// Swift - -import Nimble - -expect(seagull.squawk).to(equal("Squee!")) -``` - -```objc -// Objective-C - -@import Nimble; - -expect(seagull.squawk).to(equal(@"Squee!")); -``` - -> The `expect` function autocompletes to include `file:` and `line:`, - but these parameters are optional. Use the default values to have - Xcode highlight the correct line when an expectation is not met. - -To perform the opposite expectation--to assert something is *not* -equal--use `toNot` or `notTo`: - -```swift -// Swift - -import Nimble - -expect(seagull.squawk).toNot(equal("Oh, hello there!")) -expect(seagull.squawk).notTo(equal("Oh, hello there!")) -``` - -```objc -// Objective-C - -@import Nimble; - -expect(seagull.squawk).toNot(equal(@"Oh, hello there!")); -expect(seagull.squawk).notTo(equal(@"Oh, hello there!")); -``` - -## Custom Failure Messages - -Would you like to add more information to the test's failure messages? Use the `description` optional argument to add your own text: - -```swift -// Swift - -expect(1 + 1).to(equal(3)) -// failed - expected to equal <3>, got <2> - -expect(1 + 1).to(equal(3), description: "Make sure libKindergartenMath is loaded") -// failed - Make sure libKindergartenMath is loaded -// expected to equal <3>, got <2> -``` - -Or the *WithDescription version in Objective-C: - -```objc -// Objective-C - -@import Nimble; - -expect(@(1+1)).to(equal(@3)); -// failed - expected to equal <3.0000>, got <2.0000> - -expect(@(1+1)).toWithDescription(equal(@3), @"Make sure libKindergartenMath is loaded"); -// failed - Make sure libKindergartenMath is loaded -// expected to equal <3.0000>, got <2.0000> -``` - -## Type Safety - -Nimble makes sure you don't compare two types that don't match: - -```swift -// Swift - -// Does not compile: -expect(1 + 1).to(equal("Squee!")) -``` - -> Nimble uses generics--only available in Swift--to ensure - type correctness. That means type checking is - not available when using Nimble in Objective-C. :sob: - -## Operator Overloads - -Tired of so much typing? With Nimble, you can use overloaded operators -like `==` for equivalence, or `>` for comparisons: - -```swift -// Swift - -// Passes if squawk does not equal "Hi!": -expect(seagull.squawk) != "Hi!" - -// Passes if 10 is greater than 2: -expect(10) > 2 -``` - -> Operator overloads are only available in Swift, so you won't be able - to use this syntax in Objective-C. :broken_heart: - -## Lazily Computed Values - -The `expect` function doesn't evaluate the value it's given until it's -time to match. So Nimble can test whether an expression raises an -exception once evaluated: - -```swift -// Swift - -// Note: Swift currently doesn't have exceptions. -// Only Objective-C code can raise exceptions -// that Nimble will catch. -// (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064) -let exception = NSException( - name: NSInternalInconsistencyException, - reason: "Not enough fish in the sea.", - userInfo: ["something": "is fishy"]) -expect { exception.raise() }.to(raiseException()) - -// Also, you can customize raiseException to be more specific -expect { exception.raise() }.to(raiseException(named: NSInternalInconsistencyException)) -expect { exception.raise() }.to(raiseException( - named: NSInternalInconsistencyException, - reason: "Not enough fish in the sea")) -expect { exception.raise() }.to(raiseException( - named: NSInternalInconsistencyException, - reason: "Not enough fish in the sea", - userInfo: ["something": "is fishy"])) -``` - -Objective-C works the same way, but you must use the `expectAction` -macro when making an expectation on an expression that has no return -value: - -```objc -// Objective-C - -NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException - reason:@"Not enough fish in the sea." - userInfo:nil]; -expectAction(^{ [exception raise]; }).to(raiseException()); - -// Use the property-block syntax to be more specific. -expectAction(^{ [exception raise]; }).to(raiseException().named(NSInternalInconsistencyException)); -expectAction(^{ [exception raise]; }).to(raiseException(). - named(NSInternalInconsistencyException). - reason("Not enough fish in the sea")); -expectAction(^{ [exception raise]; }).to(raiseException(). - named(NSInternalInconsistencyException). - reason("Not enough fish in the sea"). - userInfo(@{@"something": @"is fishy"})); - -// You can also pass a block for custom matching of the raised exception -expectAction(exception.raise()).to(raiseException().satisfyingBlock(^(NSException *exception) { - expect(exception.name).to(beginWith(NSInternalInconsistencyException)); -})); -``` - -## C Primitives - -Some testing frameworks make it hard to test primitive C values. -In Nimble, it just works: - -```swift -// Swift - -let actual: CInt = 1 -let expectedValue: CInt = 1 -expect(actual).to(equal(expectedValue)) -``` - -In fact, Nimble uses type inference, so you can write the above -without explicitly specifying both types: - -```swift -// Swift - -expect(1 as CInt).to(equal(1)) -``` - -> In Objective-C, Nimble only supports Objective-C objects. To - make expectations on primitive C values, wrap then in an object - literal: - -```objc -expect(@(1 + 1)).to(equal(@2)); -``` - -## Async/Await Support - -Nimble makes it easy to await for an async function to complete. Simply pass -the async function in to `expect`: - -```swift -// Swift -await expect { await aFunctionReturning1() }.to(equal(1)) -``` - -The async function is awaited on first, before passing it to the matcher. This -enables the matcher to run synchronous code like before, without caring about -whether the value it's processing was abtained async or not. - -Async support is Swift-only, and it requires that you execute the test in an -async context. For XCTest, this is as simple as marking your test function with -`async`. If you use Quick, all tests in Quick 6 are executed in an async context. -In Quick 7 and later, only tests that are in an `AsyncSpec` subclass will be -executed in an async context. - -To avoid a compiler errors when using synchronous `expect` in asynchronous contexts, -`expect` with async expressions does not support autoclosures. However, the `expecta` -(expect async) function is provided as an alternative, which does support autoclosures. - -```swift -// Swift -await expecta(await aFunctionReturning1()).to(equal(1))) -``` - -Similarly, if you're ever in a situation where you want to force the compiler to -produce a `SyncExpectation`, you can use the `expects` (expect sync) function to -produce a `SyncExpectation`. Like so: - -```swift -// Swift -expects(someNonAsyncFunction()).to(equal(1))) - -expects(await someAsyncFunction()).to(equal(1)) // Compiler error: 'async' call in an autoclosure that does not support concurrency -``` - -### Async Matchers - -In addition to asserting on async functions prior to passing them to a -synchronous matcher, you can also write matchers that directly take in an -async value. These are called `AsyncMatcher`s. This is most obviously useful -when directly asserting against an actor. In addition to writing your own -async matchers, Nimble currently ships with async versions of the following -matchers: - -- `allPass` -- `containElementSatisfying` -- `satisfyAllOf` and the `&&` operator overload accept both `AsyncMatcher` and - synchronous `Matcher`s. -- `satisfyAnyOf` and the `||` operator overload accept both `AsyncMatcher` and - synchronous `Matcher`s. - -Note: Async/Await support is different than the `toEventually`/`toEventuallyNot` -feature described below. - -## Polling Expectations - -In Nimble, it's easy to make expectations on values that are updated -asynchronously. Just use `toEventually` or `toEventuallyNot`: - -```swift -// Swift -DispatchQueue.main.async { - ocean.add("dolphins") - ocean.add("whales") -} -expect(ocean).toEventually(contain("dolphins", "whales")) -``` - - -```objc -// Objective-C - -dispatch_async(dispatch_get_main_queue(), ^{ - [ocean add:@"dolphins"]; - [ocean add:@"whales"]; -}); -expect(ocean).toEventually(contain(@"dolphins", @"whales")); -``` - -Note: toEventually triggers its polls on the main thread. Blocking the main -thread will cause Nimble to stop the run loop. This can cause test pollution -for whatever incomplete code that was running on the main thread. Blocking the -main thread can be caused by blocking IO, calls to sleep(), deadlocks, and -synchronous IPC. - -In the above example, `ocean` is constantly re-evaluated. If it ever -contains dolphins and whales, the expectation passes. If `ocean` still -doesn't contain them, even after being continuously re-evaluated for one -whole second, the expectation fails. - -### Using Polling Expectations in Async Tests - -You can easily use `toEventually` or `toEventuallyNot` in async contexts as -well. You only need to add an `await` statement to the beginning of the line: - -```swift -// Swift -DispatchQueue.main.async { - ocean.add("dolphins") - ocean.add("whales") -} -await expect(ocean).toEventually(contain("dolphens", "whiles")) -``` - -Starting in Nimble 12, `toEventually` et. al. now also supports async -expectations. For example, the following test is now supported: - -```swift -actor MyActor { - private var counter = 0 - - func access() -> Int { - counter += 1 - return counter - } -} - -let subject = MyActor() -await expect { await subject.access() }.toEventually(equal(2)) -``` - -### Verifying a Matcher will Never or Always Match - -You can also test that a value always or never matches throughout the length of the timeout. Use `toNever` and `toAlways` for this: - -```swift -// Swift -ocean.add("dolphins") -expect(ocean).toAlways(contain("dolphins")) -expect(ocean).toNever(contain("hares")) -``` - -```objc -// Objective-C -[ocean add:@"dolphins"] -expect(ocean).toAlways(contain(@"dolphins")) -expect(ocean).toNever(contain(@"hares")) -``` - -### Waiting for a Callback to be Called - -You can also provide a callback by using the `waitUntil` function: - -```swift -// Swift - -waitUntil { done in - ocean.goFish { success in - expect(success).to(beTrue()) - done() - } -} -``` - -```objc -// Objective-C - -waitUntil(^(void (^done)(void)){ - [ocean goFishWithHandler:^(BOOL success){ - expect(success).to(beTrue()); - done(); - }]; -}); -``` - -`waitUntil` also optionally takes a timeout parameter: - -```swift -// Swift - -waitUntil(timeout: .seconds(10)) { done in - ocean.goFish { success in - expect(success).to(beTrue()) - done() - } -} -``` - -```objc -// Objective-C - -waitUntilTimeout(10, ^(void (^done)(void)){ - [ocean goFishWithHandler:^(BOOL success){ - expect(success).to(beTrue()); - done(); - }]; -}); -``` - -Note: `waitUntil` triggers its timeout code on the main thread. Blocking the main -thread will cause Nimble to stop the run loop to continue. This can cause test -pollution for whatever incomplete code that was running on the main thread. -Blocking the main thread can be caused by blocking IO, calls to sleep(), -deadlocks, and synchronous IPC. - -### Changing the Timeout and Polling Intervals - -Sometimes it takes more than a second for a value to update. In those -cases, use the `timeout` parameter: - -```swift -// Swift - -// Waits three seconds for ocean to contain "starfish": -expect(ocean).toEventually(contain("starfish"), timeout: .seconds(3)) - -// Evaluate someValue every 0.2 seconds repeatedly until it equals 100, or fails if it timeouts after 5.5 seconds. -expect(someValue).toEventually(equal(100), timeout: .milliseconds(5500), pollInterval: .milliseconds(200)) -``` - -```objc -// Objective-C - -// Waits three seconds for ocean to contain "starfish": -expect(ocean).withTimeout(3).toEventually(contain(@"starfish")); -``` - -### Changing default Timeout and Poll Intervals - -In some cases (e.g. when running on slower machines) it can be useful to modify -the default timeout and poll interval values. This can be done as follows: - -```swift -// Swift - -// Increase the global timeout to 5 seconds: -Nimble.PollingDefaults.timeout = .seconds(5) - -// Slow the polling interval to 0.1 seconds: -Nimble.PollingDefaults.pollInterval = .milliseconds(100) -``` - -You can set these globally at test startup in two ways: - -#### Quick - -If you use [Quick](https://github.com/Quick/Quick), add a [`QuickConfiguration` subclass](https://github.com/Quick/Quick/blob/main/Documentation/en-us/ConfiguringQuick.md) which sets your desired `PollingDefaults`. - -```swift -import Quick -import Nimble - -class PollingConfiguration: QuickConfiguration { - override class func configure(_ configuration: QCKConfiguration) { - Nimble.PollingDefaults.timeout = .seconds(5) - Nimble.PollingDefaults.pollInterval = .milliseconds(100) - } -} -``` - -#### XCTest - -If you use [XCTest](https://developer.apple.com/documentation/xctest), add an object that conforms to [`XCTestObservation`](https://developer.apple.com/documentation/xctest/xctestobservation) and implement [`testBundleWillStart(_:)`](https://developer.apple.com/documentation/xctest/xctestobservation/1500772-testbundlewillstart). - -Additionally, you will need to register this observer with the [`XCTestObservationCenter`](https://developer.apple.com/documentation/xctest/xctestobservationcenter) at test startup. To do this, set the `NSPrincipalClass` key in your test bundle's Info.plist and implement a class with that same name. - -For example - -```xml - - - - - - - NSPrincipalClass - MyTests.TestSetup - - -``` - -```swift -// TestSetup.swift -import XCTest -import Nimble - -@objc -class TestSetup: NSObject { - override init() { - XCTestObservationCenter.shared.register(PollingConfigurationTestObserver()) - } -} - -class PollingConfigurationTestObserver: NSObject, XCTestObserver { - func testBundleWillStart(_ testBundle: Bundle) { - Nimble.PollingDefaults.timeout = .seconds(5) - Nimble.PollingDefaults.pollInterval = .milliseconds(100) - } -} -``` - -In Linux, you can implement `LinuxMain` to set the PollingDefaults before calling `XCTMain`. - -## Objective-C Support - -Nimble has full support for Objective-C. However, there are two things -to keep in mind when using Nimble in Objective-C: - -1. All parameters passed to the `expect` function, as well as matcher - functions like `equal`, must be Objective-C objects or can be converted into - an `NSObject` equivalent: - - ```objc - // Objective-C - - @import Nimble; - - expect(@(1 + 1)).to(equal(@2)); - expect(@"Hello world").to(contain(@"world")); - - // Boxed as NSNumber * - expect(2).to(equal(2)); - expect(1.2).to(beLessThan(2.0)); - expect(true).to(beTruthy()); - - // Boxed as NSString * - expect("Hello world").to(equal("Hello world")); - - // Boxed as NSRange - expect(NSMakeRange(1, 10)).to(equal(NSMakeRange(1, 10))); - ``` - -2. To make an expectation on an expression that does not return a value, - such as `-[NSException raise]`, use `expectAction` instead of - `expect`: - - ```objc - // Objective-C - - expectAction(^{ [exception raise]; }).to(raiseException()); - ``` - -The following types are currently converted to an `NSObject` type: - - - **C Numeric types** are converted to `NSNumber *` - - `NSRange` is converted to `NSValue *` - - `char *` is converted to `NSString *` - -For the following matchers: - -- `equal` -- `beGreaterThan` -- `beGreaterThanOrEqual` -- `beLessThan` -- `beLessThanOrEqual` -- `beCloseTo` -- `beTrue` -- `beFalse` -- `beTruthy` -- `beFalsy` -- `haveCount` - - -If you would like to see more, [file an issue](https://github.com/Quick/Nimble/issues). - -## Disabling Objective-C Shorthand - -Nimble provides a shorthand for expressing expectations using the -`expect` function. To disable this shorthand in Objective-C, define the -`NIMBLE_DISABLE_SHORT_SYNTAX` macro somewhere in your code before -importing Nimble: - -```objc -#define NIMBLE_DISABLE_SHORT_SYNTAX 1 - -@import Nimble; - -NMB_expect(^{ return seagull.squawk; }, __FILE__, __LINE__).to(NMB_equal(@"Squee!")); -``` - -> Disabling the shorthand is useful if you're testing functions with - names that conflict with Nimble functions, such as `expect` or - `equal`. If that's not the case, there's no point in disabling the - shorthand. - -# Using `require` to demand that a matcher pass before continuing - -Nimble 13.1 added the `require` dsl to complement `expect`. `require` -looks similar to `expect` and works with matchers just like `expect` does. The -difference is that `require` requires that the matcher passes - if the matcher -doesn't pass, then `require` will throw an error. Additionally, if `require` -does pass, then it'll return the result of running the expression. - -For example, in testing a function that returns an array, you might need to -first guarantee that there are exactly 3 items in the array before continuing -to assert on it. Instead of writing code that needlessly duplicates an assertion -and a conditional like so: - -```swift -let collection = myFunction() -expect(collection).to(haveCount(3)) -guard collection.count == 3 else { return } -// ... -``` - -You can replace that with: - -```swift -let collection = try require(myFunction()).to(haveCount(3)) -// ... -``` - -## Polling with `require`. - -Because `require` does everything you can do with `expect`, you can also use -`require` to [poll matchers](#polling-expectations) using `toEventually`, -`eventuallyTo`, `toEventuallyNot`, `toNotEventually`, `toNever`, `neverTo`, -`toAlways`, and `alwaysTo`. These work exactly the same as they do when using -`expect`, except that they throw if they fail, and they return the value of the -expression when they pass. - -## Using `require` with Async expressions and Async matchers - -`require` also works with both async expressions -(`require { await someExpression() }.to(...)`), and async matchers -(`require().to(someAsyncMatcher())`). - -Note that to prevent compiler confusion, -you cannot use `require` with async autoclosures. That is, -`require(await someExpression())` will not compile. You can instead either -make the closure explicit (`require { await someExpression() }`), or use the -`requirea` function, which does accept autoclosures. -Similarly, if you ever wish to use the sync version of `require` when the -compiler is trying to force you to use the async version, you can use the -`requires` function, which only allows synchronous expressions. - -## Using `unwrap` to replace `require(...).toNot(beNil())` - -It's very common to require that a value not be nil. Instead of writing -`try require(...).toNot(beNil())`, Nimble provides the `unwrap` function. This -expression throws an error if the expression evaluates to nil, or returns the -non-nil result when it passes. For example: - -```swift -let value = try unwrap(nil as Int?) // throws -let value = try unwrap(1 as Int?) // returns 1 -``` - -Additionally, there is also the `pollUnwrap` function, which aliases to -`require(...).toEventuallyNot(beNil())`. This is extremely useful for verifying -that a value that is updated on a background thread was eventually set to a -non-nil value. - -Note: As with `require`, there are `unwraps`, `unwrapa`, `pollUnwraps`, and -`pollUnwrapa` variants for allowing you to use autoclosures specifically with -synchronous or asynchronous code. - -## Throwing a Custom Error from Require - -By default, if the matcher fails in a `require`, then a `RequireError` will be -thrown. You can override this behavior and throw a custom error by passing a -non-nil `Error` value to the `customError` parameter: - -```swift -try require(1).to(equal(2)) // throws a `RequireError` -try require(customError: MyCustomError(), 1).to(equal(2)) // throws a `MyCustomError` -``` - -# Built-in Matcher Functions - -Nimble includes a wide variety of matcher functions. - -## Type Checking - -Nimble supports checking the type membership of any kind of object, whether -Objective-C conformant or not: - -```swift -// Swift - -protocol SomeProtocol{} -class SomeClassConformingToProtocol: SomeProtocol{} -struct SomeStructConformingToProtocol: SomeProtocol{} - -// The following tests pass -expect(1).to(beAKindOf(Int.self)) -expect("turtle").to(beAKindOf(String.self)) - -let classObject = SomeClassConformingToProtocol() -expect(classObject).to(beAKindOf(SomeProtocol.self)) -expect(classObject).to(beAKindOf(SomeClassConformingToProtocol.self)) -expect(classObject).toNot(beAKindOf(SomeStructConformingToProtocol.self)) - -let structObject = SomeStructConformingToProtocol() -expect(structObject).to(beAKindOf(SomeProtocol.self)) -expect(structObject).to(beAKindOf(SomeStructConformingToProtocol.self)) -expect(structObject).toNot(beAKindOf(SomeClassConformingToProtocol.self)) -``` - -```objc -// Objective-C - -// The following tests pass -NSMutableArray *array = [NSMutableArray array]; -expect(array).to(beAKindOf([NSArray class])); -expect(@1).toNot(beAKindOf([NSNull class])); -``` - -Objects can be tested for their exact types using the `beAnInstanceOf` matcher: - -```swift -// Swift - -protocol SomeProtocol{} -class SomeClassConformingToProtocol: SomeProtocol{} -struct SomeStructConformingToProtocol: SomeProtocol{} - -// Unlike the 'beKindOf' matcher, the 'beAnInstanceOf' matcher only -// passes if the object is the EXACT type requested. The following -// tests pass -- note its behavior when working in an inheritance hierarchy. -expect(1).to(beAnInstanceOf(Int.self)) -expect("turtle").to(beAnInstanceOf(String.self)) - -let classObject = SomeClassConformingToProtocol() -expect(classObject).toNot(beAnInstanceOf(SomeProtocol.self)) -expect(classObject).to(beAnInstanceOf(SomeClassConformingToProtocol.self)) -expect(classObject).toNot(beAnInstanceOf(SomeStructConformingToProtocol.self)) - -let structObject = SomeStructConformingToProtocol() -expect(structObject).toNot(beAnInstanceOf(SomeProtocol.self)) -expect(structObject).to(beAnInstanceOf(SomeStructConformingToProtocol.self)) -expect(structObject).toNot(beAnInstanceOf(SomeClassConformingToProtocol.self)) -``` - -## Equivalence - -```swift -// Swift - -// Passes if 'actual' is equivalent to 'expected': -expect(actual).to(equal(expected)) -expect(actual) == expected - -// Passes if 'actual' is not equivalent to 'expected': -expect(actual).toNot(equal(expected)) -expect(actual) != expected -``` - -```objc -// Objective-C - -// Passes if 'actual' is equivalent to 'expected': -expect(actual).to(equal(expected)) - -// Passes if 'actual' is not equivalent to 'expected': -expect(actual).toNot(equal(expected)) -``` - -Values must be `Equatable`, `Comparable`, or subclasses of `NSObject`. -`equal` will always fail when used to compare one or more `nil` values. - -## Identity - -```swift -// Swift - -// Passes if 'actual' has the same pointer address as 'expected': -expect(actual).to(beIdenticalTo(expected)) -expect(actual) === expected - -// Passes if 'actual' does not have the same pointer address as 'expected': -expect(actual).toNot(beIdenticalTo(expected)) -expect(actual) !== expected -``` - -It is important to remember that `beIdenticalTo` only makes sense when comparing -types with reference semantics, which have a notion of identity. In Swift, -that means types that are defined as a `class`. - -This matcher will not work when comparing types with value semantics such as -those defined as a `struct` or `enum`. If you need to compare two value types, -consider what it means for instances of your type to be identical. This may mean -comparing individual properties or, if it makes sense to do so, conforming your type -to `Equatable` and using Nimble's equivalence matchers instead. - - -```objc -// Objective-C - -// Passes if 'actual' has the same pointer address as 'expected': -expect(actual).to(beIdenticalTo(expected)); - -// Passes if 'actual' does not have the same pointer address as 'expected': -expect(actual).toNot(beIdenticalTo(expected)); -``` - -## Comparisons - -```swift -// Swift - -expect(actual).to(beLessThan(expected)) -expect(actual) < expected - -expect(actual).to(beLessThanOrEqualTo(expected)) -expect(actual) <= expected - -expect(actual).to(beGreaterThan(expected)) -expect(actual) > expected - -expect(actual).to(beGreaterThanOrEqualTo(expected)) -expect(actual) >= expected -``` - -```objc -// Objective-C - -expect(actual).to(beLessThan(expected)); -expect(actual).to(beLessThanOrEqualTo(expected)); -expect(actual).to(beGreaterThan(expected)); -expect(actual).to(beGreaterThanOrEqualTo(expected)); -``` - -> Values given to the comparison matchers above must implement - `Comparable`. - -Because of how computers represent floating point numbers, assertions -that two floating point numbers be equal will sometimes fail. To express -that two numbers should be close to one another within a certain margin -of error, use `beCloseTo`: - -```swift -// Swift - -expect(actual).to(beCloseTo(expected, within: delta)) -``` - -```objc -// Objective-C - -expect(actual).to(beCloseTo(expected).within(delta)); -``` - -For example, to assert that `10.01` is close to `10`, you can write: - -```swift -// Swift - -expect(10.01).to(beCloseTo(10, within: 0.1)) -``` - -```objc -// Objective-C - -expect(@(10.01)).to(beCloseTo(@10).within(0.1)); -``` - -There is also an operator shortcut available in Swift: - -```swift -// Swift - -expect(actual) ≈ expected -expect(actual) ≈ (expected, delta) - -``` -(Type option+x to get `≈` on a U.S. keyboard) - -The former version uses the default delta of 0.0001. Here is yet another way to do this: - -```swift -// Swift - -expect(actual) ≈ expected ± delta -expect(actual) == expected ± delta - -``` -(Type option+shift+= to get `±` on a U.S. keyboard) - -If you are comparing arrays of floating point numbers, you'll find the following useful: - -```swift -// Swift - -expect([0.0, 2.0]) ≈ [0.0001, 2.0001] -expect([0.0, 2.0]).to(beCloseTo([0.1, 2.1], within: 0.1)) - -``` - -> Values given to the `beCloseTo` matcher must conform to `FloatingPoint`. - -## Types/Classes - -```swift -// Swift - -// Passes if 'instance' is an instance of 'aClass': -expect(instance).to(beAnInstanceOf(aClass)) - -// Passes if 'instance' is an instance of 'aClass' or any of its subclasses: -expect(instance).to(beAKindOf(aClass)) -``` - -```objc -// Objective-C - -// Passes if 'instance' is an instance of 'aClass': -expect(instance).to(beAnInstanceOf(aClass)); - -// Passes if 'instance' is an instance of 'aClass' or any of its subclasses: -expect(instance).to(beAKindOf(aClass)); -``` - -> Instances must be Objective-C objects: subclasses of `NSObject`, - or Swift objects bridged to Objective-C with the `@objc` prefix. - -For example, to assert that `dolphin` is a kind of `Mammal`: - -```swift -// Swift - -expect(dolphin).to(beAKindOf(Mammal)) -``` - -```objc -// Objective-C - -expect(dolphin).to(beAKindOf([Mammal class])); -``` - -> `beAnInstanceOf` uses the `-[NSObject isMemberOfClass:]` method to - test membership. `beAKindOf` uses `-[NSObject isKindOfClass:]`. - -## Truthiness - -```swift -// Passes if 'actual' is not nil, true, or an object with a boolean value of true: -expect(actual).to(beTruthy()) - -// Passes if 'actual' is only true (not nil or an object conforming to Boolean true): -expect(actual).to(beTrue()) - -// Passes if 'actual' is nil, false, or an object with a boolean value of false: -expect(actual).to(beFalsy()) - -// Passes if 'actual' is only false (not nil or an object conforming to Boolean false): -expect(actual).to(beFalse()) - -// Passes if 'actual' is nil: -expect(actual).to(beNil()) -``` - -```objc -// Objective-C - -// Passes if 'actual' is not nil, true, or an object with a boolean value of true: -expect(actual).to(beTruthy()); - -// Passes if 'actual' is only true (not nil or an object conforming to Boolean true): -expect(actual).to(beTrue()); - -// Passes if 'actual' is nil, false, or an object with a boolean value of false: -expect(actual).to(beFalsy()); - -// Passes if 'actual' is only false (not nil or an object conforming to Boolean false): -expect(actual).to(beFalse()); - -// Passes if 'actual' is nil: -expect(actual).to(beNil()); -``` - -## Swift Assertions - -If you're using Swift, you can use the `throwAssertion` matcher to check if an assertion is thrown (e.g. `fatalError()`). This is made possible by [@mattgallagher](https://github.com/mattgallagher)'s [CwlPreconditionTesting](https://github.com/mattgallagher/CwlPreconditionTesting) library. - -```swift -// Swift - -// Passes if 'somethingThatThrows()' throws an assertion, -// such as by calling 'fatalError()' or if a precondition fails: -expect { try somethingThatThrows() }.to(throwAssertion()) -expect { () -> Void in fatalError() }.to(throwAssertion()) -expect { precondition(false) }.to(throwAssertion()) - -// Passes if throwing an NSError is not equal to throwing an assertion: -expect { throw NSError(domain: "test", code: 0, userInfo: nil) }.toNot(throwAssertion()) - -// Passes if the code after the precondition check is not run: -var reachedPoint1 = false -var reachedPoint2 = false -expect { - reachedPoint1 = true - precondition(false, "condition message") - reachedPoint2 = true -}.to(throwAssertion()) - -expect(reachedPoint1) == true -expect(reachedPoint2) == false -``` - -Notes: - -* This feature is only available in Swift. -* The tvOS simulator is supported, but using a different mechanism, requiring you to turn off the `Debug executable` scheme setting for your tvOS scheme's Test configuration. - -## Swift Error Handling - -You can use the `throwError` matcher to check if an error is thrown. - -```swift -// Swift - -// Passes if 'somethingThatThrows()' throws an 'Error': -expect { try somethingThatThrows() }.to(throwError()) - -// Passes if 'somethingThatThrows()' throws an error within a particular domain: -expect { try somethingThatThrows() }.to(throwError { (error: Error) in - expect(error._domain).to(equal(NSCocoaErrorDomain)) -}) - -// Passes if 'somethingThatThrows()' throws a particular error enum case: -expect { try somethingThatThrows() }.to(throwError(NSCocoaError.PropertyListReadCorruptError)) - -// Passes if 'somethingThatThrows()' throws an error of a particular type: -expect { try somethingThatThrows() }.to(throwError(errorType: NimbleError.self)) -``` - -When working directly with `Error` values, using the `matchError` matcher -allows you to perform certain checks on the error itself without having to -explicitly cast the error. - -The `matchError` matcher allows you to check whether or not the error: - -- is the same _type_ of error you are expecting. -- represents a particular error value that you are expecting. - -This can be useful when using `Result` or `Promise` types, for example. - -```swift -// Swift - -let actual: Error = ... - -// Passes if 'actual' represents any error value from the NimbleErrorEnum type: -expect(actual).to(matchError(NimbleErrorEnum.self)) - -// Passes if 'actual' represents the case 'timeout' from the NimbleErrorEnum type: -expect(actual).to(matchError(NimbleErrorEnum.timeout)) - -// Passes if 'actual' contains an NSError equal to the one provided: -expect(actual).to(matchError(NSError(domain: "err", code: 123, userInfo: nil))) -``` - -Note: This feature is only available in Swift. - -## Exceptions - -```swift -// Swift - -// Passes if 'actual', when evaluated, raises an exception: -expect(actual).to(raiseException()) - -// Passes if 'actual' raises an exception with the given name: -expect(actual).to(raiseException(named: name)) - -// Passes if 'actual' raises an exception with the given name and reason: -expect(actual).to(raiseException(named: name, reason: reason)) - -// Passes if 'actual' raises an exception which passes expectations defined in the given closure: -// (in this case, if the exception's name begins with "a r") -expect { exception.raise() }.to(raiseException { (exception: NSException) in - expect(exception.name).to(beginWith("a r")) -}) -``` - -```objc -// Objective-C - -// Passes if 'actual', when evaluated, raises an exception: -expect(actual).to(raiseException()) - -// Passes if 'actual' raises an exception with the given name -expect(actual).to(raiseException().named(name)) - -// Passes if 'actual' raises an exception with the given name and reason: -expect(actual).to(raiseException().named(name).reason(reason)) - -// Passes if 'actual' raises an exception and it passes expectations defined in the given block: -// (in this case, if name begins with "a r") -expect(actual).to(raiseException().satisfyingBlock(^(NSException *exception) { - expect(exception.name).to(beginWith(@"a r")); -})); -``` - -Note: Swift currently doesn't have exceptions (see [#220](https://github.com/Quick/Nimble/issues/220#issuecomment-172667064)). -Only Objective-C code can raise exceptions that Nimble will catch. - -## Collection Membership - -```swift -// Swift - -// Passes if all of the expected values are members of 'actual': -expect(actual).to(contain(expected...)) - -// Passes if 'actual' is empty (i.e. it contains no elements): -expect(actual).to(beEmpty()) -``` - -```objc -// Objective-C - -// Passes if expected is a member of 'actual': -expect(actual).to(contain(expected)); - -// Passes if 'actual' is empty (i.e. it contains no elements): -expect(actual).to(beEmpty()); -``` - -> In Swift `contain` takes any number of arguments. The expectation - passes if all of them are members of the collection. In Objective-C, - `contain` only takes one argument [for now](https://github.com/Quick/Nimble/issues/27). - -For example, to assert that a list of sea creature names contains -"dolphin" and "starfish": - -```swift -// Swift - -expect(["whale", "dolphin", "starfish"]).to(contain("dolphin", "starfish")) -``` - -```objc -// Objective-C - -expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"dolphin")); -expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"starfish")); -``` - -> `contain` and `beEmpty` expect collections to be instances of - `NSArray`, `NSSet`, or a Swift collection composed of `Equatable` elements. - -To test whether a set of elements is present at the beginning or end of -an ordered collection, use `beginWith` and `endWith`: - -```swift -// Swift - -// Passes if the elements in expected appear at the beginning of 'actual': -expect(actual).to(beginWith(expected...)) - -// Passes if the the elements in expected come at the end of 'actual': -expect(actual).to(endWith(expected...)) -``` - -```objc -// Objective-C - -// Passes if the elements in expected appear at the beginning of 'actual': -expect(actual).to(beginWith(expected)); - -// Passes if the the elements in expected come at the end of 'actual': -expect(actual).to(endWith(expected)); -``` - -> `beginWith` and `endWith` expect collections to be instances of - `NSArray`, or ordered Swift collections composed of `Equatable` - elements. - - Like `contain`, in Objective-C `beginWith` and `endWith` only support - a single argument [for now](https://github.com/Quick/Nimble/issues/27). - -For code that returns collections of complex objects without a strict -ordering, there is the `containElementSatisfying` matcher: - -```swift -// Swift - -struct Turtle { - let color: String -} - -let turtles: [Turtle] = functionThatReturnsSomeTurtlesInAnyOrder() - -// This set of matchers passes regardless of whether the array is -// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: - -expect(turtles).to(containElementSatisfying({ turtle in - return turtle.color == "green" -})) -expect(turtles).to(containElementSatisfying({ turtle in - return turtle.color == "blue" -}, "that is a turtle with color 'blue'")) - -// The second matcher will incorporate the provided string in the error message -// should it fail -``` - -Note: in Swift, `containElementSatisfying` also has a variant that takes in an -async function. - -```objc -// Objective-C - -@interface Turtle : NSObject -@property (nonatomic, readonly, nonnull) NSString *color; -@end - -@implementation Turtle -@end - -NSArray * __nonnull turtles = functionThatReturnsSomeTurtlesInAnyOrder(); - -// This set of matchers passes regardless of whether the array is -// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: - -expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { - return [[turtle color] isEqualToString:@"green"]; -})); -expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { - return [[turtle color] isEqualToString:@"blue"]; -})); -``` - -For asserting on if the given `Comparable` value is inside of a `Range`, use the `beWithin` matcher. - -```swift -// Swift - -// Passes if 5 is within the range 1 through 10, inclusive -expect(5).to(beWithin(1...10)) - -// Passes if 5 is not within the range 2 through 4. -expect(5).toNot(beWithin(2..<5)) -``` - -## Strings - -```swift -// Swift - -// Passes if 'actual' contains 'substring': -expect(actual).to(contain(substring)) - -// Passes if 'actual' begins with 'prefix': -expect(actual).to(beginWith(prefix)) - -// Passes if 'actual' ends with 'suffix': -expect(actual).to(endWith(suffix)) - -// Passes if 'actual' represents the empty string, "": -expect(actual).to(beEmpty()) - -// Passes if 'actual' matches the regular expression defined in 'expected': -expect(actual).to(match(expected)) -``` - -```objc -// Objective-C - -// Passes if 'actual' contains 'substring': -expect(actual).to(contain(expected)); - -// Passes if 'actual' begins with 'prefix': -expect(actual).to(beginWith(prefix)); - -// Passes if 'actual' ends with 'suffix': -expect(actual).to(endWith(suffix)); - -// Passes if 'actual' represents the empty string, "": -expect(actual).to(beEmpty()); - -// Passes if 'actual' matches the regular expression defined in 'expected': -expect(actual).to(match(expected)) -``` - -## Collection Elements - -Nimble provides a means to check that all elements of a collection pass a given expectation. - -### Swift - -In Swift, the collection must be an instance of a type conforming to -`Sequence`. - -```swift -// Swift - -// Providing a custom function: -expect([1, 2, 3, 4]).to(allPass { $0 < 5 }) - -// Composing the expectation with another matcher: -expect([1, 2, 3, 4]).to(allPass(beLessThan(5))) -``` - -There are also variants of `allPass` that check against async matchers, and -that take in async functions: - -```swift -// Swift - -// Providing a custom function: -expect([1, 2, 3, 4]).to(allPass { await asyncFunctionReturningBool($0) }) - -// Composing the expectation with another matcher: -expect([1, 2, 3, 4]).to(allPass(someAsyncMatcher())) -``` - -### Objective-C - -In Objective-C, the collection must be an instance of a type which implements -the `NSFastEnumeration` protocol, and whose elements are instances of a type -which subclasses `NSObject`. - -Additionally, unlike in Swift, there is no override to specify a custom -matcher function. - -```objc -// Objective-C - -expect(@[@1, @2, @3, @4]).to(allPass(beLessThan(@5))); -``` - -## Collection Count - -```swift -// Swift - -// Passes if 'actual' contains the 'expected' number of elements: -expect(actual).to(haveCount(expected)) - -// Passes if 'actual' does _not_ contain the 'expected' number of elements: -expect(actual).notTo(haveCount(expected)) -``` - -```objc -// Objective-C - -// Passes if 'actual' contains the 'expected' number of elements: -expect(actual).to(haveCount(expected)) - -// Passes if 'actual' does _not_ contain the 'expected' number of elements: -expect(actual).notTo(haveCount(expected)) -``` - -For Swift, the actual value must be an instance of a type conforming to `Collection`. -For example, instances of `Array`, `Dictionary`, or `Set`. - -For Objective-C, the actual value must be one of the following classes, or their subclasses: - - - `NSArray`, - - `NSDictionary`, - - `NSSet`, or - - `NSHashTable`. - -## Notifications - -```swift -// Swift -let testNotification = Notification(name: Notification.Name("Foo"), object: nil) - -// Passes if the closure in expect { ... } posts a notification to the default -// notification center. -expect { - NotificationCenter.default.post(testNotification) -}.to(postNotifications(equal([testNotification]))) - -// Passes if the closure in expect { ... } posts a notification to a given -// notification center -let notificationCenter = NotificationCenter() -expect { - notificationCenter.post(testNotification) -}.to(postNotifications(equal([testNotification]), from: notificationCenter)) - -// Passes if the closure in expect { ... } posts a notification with the provided names to a given -// notification center. Make sure to use this when running tests on Catalina, -// using DistributedNotificationCenter as there is currently no way -// of observing notifications without providing specific names. -let distributedNotificationCenter = DistributedNotificationCenter() -expect { - distributedNotificationCenter.post(testNotification) -}.toEventually(postDistributedNotifications(equal([testNotification]), - from: distributedNotificationCenter, - names: [testNotification.name])) -``` - -> This matcher is only available in Swift. - -## Result - -```swift -// Swift -let aResult: Result = .success("Hooray") - -// passes if result is .success -expect(aResult).to(beSuccess()) - -// passes if result value is .success and validates Success value -expect(aResult).to(beSuccess { value in - expect(value).to(equal("Hooray")) -}) - -// passes if the result value is .success and if the Success value matches -// the passed-in matcher (in this case, `equal`) -expect(aResult).to(beSuccess(equal("Hooray"))) - -// passes if the result value is .success and if the Success value equals -// the passed-in value (only available when the Success value is Equatable) -expect(aResult).to(beSuccess("Hooray")) - - -enum AnError: Error { - case somethingHappened -} -let otherResult: Result = .failure(.somethingHappened) - -// passes if result is .failure -expect(otherResult).to(beFailure()) - -// passes if result value is .failure and validates error -expect(otherResult).to(beFailure { error in - expect(error).to(matchError(AnError.somethingHappened)) -}) - -// passes if the result value is .failure and if the Failure value matches -// the passed-in matcher (in this case, `matchError`) -expect(otherResult).to(beFailure(matchError(AnError.somethingHappened))) -``` - -> This matcher is only available in Swift. - -## Matching a value to any of a group of matchers - -```swift -// Swift - -// passes if actual is either less than 10 or greater than 20 -expect(actual).to(satisfyAnyOf(beLessThan(10), beGreaterThan(20))) - -// can include any number of matchers -- the following will pass -// **be careful** -- too many matchers can be the sign of an unfocused test -expect(6).to(satisfyAnyOf(equal(2), equal(3), equal(4), equal(5), equal(6), equal(7))) - -// in Swift you also have the option to use the || operator to achieve a similar function -expect(82).to(beLessThan(50) || beGreaterThan(80)) -``` - -Note: In swift, you can mix and match synchronous and asynchronous matchers -using by `satisfyAnyOf`/`||`. - -```objc -// Objective-C - -// passes if actual is either less than 10 or greater than 20 -expect(actual).to(satisfyAnyOf(beLessThan(@10), beGreaterThan(@20))) - -// can include any number of matchers -- the following will pass -// **be careful** -- too many matchers can be the sign of an unfocused test -expect(@6).to(satisfyAnyOf(equal(@2), equal(@3), equal(@4), equal(@5), equal(@6), equal(@7))) -``` - -Note: This matcher allows you to chain any number of matchers together. This provides flexibility, - but if you find yourself chaining many matchers together in one test, consider whether you - could instead refactor that single test into multiple, more precisely focused tests for - better coverage. - -## Custom Validation - -```swift -// Swift - -// passes if .succeeded is returned from the closure -expect { - guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else { - return .failed(reason: "wrong enum case") - } - - return .succeeded -}.to(succeed()) - -// passes if .failed is returned from the closure -expect { - guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else { - return .failed(reason: "wrong enum case") - } - - return .succeeded -}.notTo(succeed()) -``` - -The `String` provided with `.failed()` is shown when the test fails. - -When using `toEventually()` be careful not to make state changes or run process intensive code since this closure will be ran many times. - -## Mapping a Value to Another Value - -Sometimes, you only want to match against a property or group of properties. -For example, if you wanted to check that only one or a few properties of a value -are equal to something else. For this, use the `map` matcher to convert a value -to another value and check it with a matcher. - -```swift -// Swift - -expect(someValue).to(map(\.someProperty, equal(expectedProperty))) - -// or, for checking multiple different properties: - -expect(someValue).to(satisfyAllOf( - map(\.firstProperty, equal(expectedFirstProperty)), - map({ $0.secondProperty }, equal(expectedSecondProperty)) -)) -``` - -The `map` matcher takes in either a closure or a keypath literal, and a matcher -to compose with. It also works with async closures and async matchers. - -In most cases, it is simpler and easier to not use map (that is, prefer -`expect(someValue.property).to(equal(1))` to -`expect(someValue).to(map(\.property, equal(1)))`). But `map` is incredibly -useful when combined with `satisfyAllOf`/`satisfyAnyOf`, especially for checking -a value that cannot conform to `Equatable` (or you don't want to make it -conform to `Equatable`). However, if you find yourself reusing `map` many times -to do a fuzzy-equals of a given type, you will find writing a custom matcher to -be much easier to use and maintain. - -# Writing Your Own Matchers - -In Nimble, matchers are Swift functions that take an expected -value and return a `Matcher` closure. Take `equal`, for example: - -```swift -// Swift - -public func equal(expectedValue: T?) -> Matcher { - // Can be shortened to: - // Matcher { actual in ... } - // - // But shown with types here for clarity. - return Matcher { (actualExpression: Expression) throws -> MatcherResult in - let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") - if let actualValue = try actualExpression.evaluate() { - return MatcherResult( - bool: actualValue == expectedValue!, - message: msg - ) - } else { - return MatcherResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - } -} -``` - -The return value of a `Matcher` closure is a `MatcherResult` that indicates -whether the actual value matches the expectation and what error message to -display on failure. - -> The actual `equal` matcher function does not match when - `expected` are nil; the example above has been edited for brevity. - -Since matchers are just Swift functions, you can define them anywhere: -at the top of your test file, in a file shared by all of your tests, or -in an Xcode project you distribute to others. - -> If you write a matcher you think everyone can use, consider adding it - to Nimble's built-in set of matchers by sending a pull request! Or - distribute it yourself via GitHub. - -For examples of how to write your own matchers, just check out the -[`Matchers` directory](https://github.com/Quick/Nimble/tree/main/Sources/Nimble/Matchers) -to see how Nimble's built-in set of matchers are implemented. You can -also check out the tips below. - -## MatcherResult - -`MatcherResult` is the return struct that `Matcher` return to indicate -success and failure. A `MatcherResult` is made up of two values: -`MatcherStatus` and `ExpectationMessage`. - -Instead of a boolean, `MatcherStatus` captures a trinary set of values: - -```swift -// Swift - -public enum MatcherStatus { -// The matcher "passes" with the given expression -// eg - expect(1).to(equal(1)) -case matches - -// The matcher "fails" with the given expression -// eg - expect(1).toNot(equal(1)) -case doesNotMatch - -// The matcher never "passes" with the given expression, even if negated -// eg - expect(nil as Int?).toNot(equal(1)) -case fail - -// ... -} -``` - -Meanwhile, `ExpectationMessage` provides messaging semantics for error reporting. - -```swift -// Swift - -public indirect enum ExpectationMessage { -// Emits standard error message: -// eg - "expected to , got " -case expectedActualValueTo(/* message: */ String) - -// Allows any free-form message -// eg - "" -case fail(/* message: */ String) - -// ... -} -``` - -Matchers should usually depend on either `.expectedActualValueTo(..)` or -`.fail(..)` when reporting errors. Special cases can be used for the other enum -cases. - -Finally, if your Matcher utilizes other Matchers, you can utilize -`.appended(details:)` and `.appended(message:)` methods to annotate an existing -error with more details. - -A common message to append is failing on nils. For that, `.appendedBeNilHint()` -can be used. - -## Lazy Evaluation - -`actualExpression` is a lazy, memoized closure around the value provided to the -`expect` function. The expression can either be a closure or a value directly -passed to `expect(...)`. In order to determine whether that value matches, -custom matchers should call `actualExpression.evaluate()`: - -```swift -// Swift - -public func beNil() -> Matcher { - // Matcher.simpleNilable(..) automatically generates ExpectationMessage for - // us based on the string we provide to it. Also, the 'Nilable' postfix indicates - // that this Matcher supports matching against nil actualExpressions, instead of - // always resulting in a MatcherStatus.fail result -- which is true for - // Matcher.simple(..) - return Matcher.simpleNilable("be nil") { actualExpression in - let actualValue = try actualExpression.evaluate() - return MatcherStatus(bool: actualValue == nil) - } -} -``` - -In the above example, `actualExpression` is not `nil` -- it is a closure -that returns a value. The value it returns, which is accessed via the -`evaluate()` method, may be `nil`. If that value is `nil`, the `beNil` -matcher function returns `true`, indicating that the expectation passed. - -## Type Checking via Swift Generics - -Using Swift's generics, matchers can constrain the type of the actual value -passed to the `expect` function by modifying the return type. - -For example, the following matcher, `haveDescription`, only accepts actual -values that implement the `Printable` protocol. It checks their `description` -against the one provided to the matcher function, and passes if they are the same: - -```swift -// Swift - -public func haveDescription(description: String) -> Matcher { - return Matcher.simple("have description") { actual in - return MatcherStatus(bool: actual.evaluate().description == description) - } -} -``` - -## Customizing Failure Messages - -When using `Matcher.simple(..)` or `Matcher.simpleNilable(..)`, Nimble -outputs the following failure message when an expectation fails: - -```swift -// where `message` is the first string argument and -// `actual` is the actual value received in `expect(..)` -"expected to \(message), got <\(actual)>" -``` - -You can customize this message by modifying the way you create a `Matcher`. - -### Basic Customization - -For slightly more complex error messaging, receive the created failure message -with `Matcher.define(..)`: - -```swift -// Swift - -public func equal(_ expectedValue: T?) -> Matcher { - return Matcher.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in - let actualValue = try actualExpression.evaluate() - let matches = actualValue == expectedValue && expectedValue != nil - if expectedValue == nil || actualValue == nil { - if expectedValue == nil && actualValue != nil { - return MatcherResult( - status: .fail, - message: msg.appendedBeNilHint() - ) - } - return MatcherResult(status: .fail, message: msg) - } - return MatcherResult(bool: matches, message: msg) - } -} -``` - -In the example above, `msg` is defined based on the string given to -`Matcher.define`. The code looks akin to: - -```swift -// Swift - -let msg = ExpectationMessage.expectedActualValueTo("equal <\(stringify(expectedValue))>") -``` - -### Full Customization - -To fully customize the behavior of the Matcher, use the overload that expects -a `MatcherResult` to be returned. - -Along with `MatcherResult`, there are other `ExpectationMessage` enum values you can use: - -```swift -public indirect enum ExpectationMessage { -// Emits standard error message: -// eg - "expected to , got " -case expectedActualValueTo(/* message: */ String) - -// Allows any free-form message -// eg - "" -case fail(/* message: */ String) - -// Emits standard error message with a custom actual value instead of the default. -// eg - "expected to , got " -case expectedCustomValueTo(/* message: */ String, /* actual: */ String) - -// Emits standard error message without mentioning the actual value -// eg - "expected to " -case expectedTo(/* message: */ String) - -// ... -} -``` - -For matchers that compose other matchers, there are a handful of helper -functions to annotate messages. - -`appended(message: String)` is used to append to the original failure message: - -```swift -// produces "expected to be true, got (use beFalse() for inverse)" -// appended message do show up inline in Xcode. -.expectedActualValueTo("be true").appended(message: " (use beFalse() for inverse)") -``` - -For a more comprehensive message that spans multiple lines, use -`appended(details: String)` instead: - -```swift -// produces "expected to be true, got \n\nuse beFalse() for inverse\nor use beNil()" -// details do not show inline in Xcode, but do show up in test logs. -.expectedActualValueTo("be true").appended(details: "use beFalse() for inverse\nor use beNil()") -``` - -## Asynchronous Matchers - -To write matchers against async expressions, return an instance of -`AsyncMatcher`. The closure passed to `AsyncMatcher` is async, and the -expression you evaluate is also asynchronous and needs to be awaited on. - -```swift -// Swift - -actor CallRecorder { - private(set) var calls: [Arguments] = [] - - func record(call: Arguments) { - calls.append(call) - } -} - -func beCalled(with arguments: Argument) -> AsyncMatcher> { - AsyncMatcher { (expression: AsyncExpression>) in - let message = ExpectationMessage.expectedActualValueTo("be called with \(arguments)") - guard let calls = try await expression.evaluate()?.calls else { - return MatcherResult(status: .fail, message: message.appendedBeNilHint()) - } - - return MatcherResult(bool: calls.contains(args), message: message.appended(details: "called with \(calls)")) - } -} -``` - -In this example, we created an actor to act as an object to record calls to an -async function. Then, we created the `beCalled(with:)` matcher to check if the -actor has received a call with the given arguments. - -## Supporting Objective-C - -To use a custom matcher written in Swift from Objective-C, you'll have -to extend the `NMBMatcher` class, adding a new class method for your -custom matcher. The example below defines the class method -`+[NMBMatcher beNilMatcher]`: - -```swift -// Swift - -extension NMBMatcher { - @objc public class func beNilMatcher() -> NMBMatcher { - return NMBMatcher { actualExpression in - return try beNil().satisfies(actualExpression).toObjectiveC() - } - } -} -``` - -The above allows you to use the matcher from Objective-C: - -```objc -// Objective-C - -expect(actual).to([NMBMatcher beNilMatcher]()); -``` - -To make the syntax easier to use, define a C function that calls the -class method: - -```objc -// Objective-C - -FOUNDATION_EXPORT NMBMatcher *beNil() { - return [NMBMatcher beNilMatcher]; -} -``` - -### Properly Handling `nil` in Objective-C Matchers - -When supporting Objective-C, make sure you handle `nil` appropriately. -Like [Cedar](https://github.com/pivotal/cedar/issues/100), -**most matchers do not match with nil**. This is to bring prevent test -writers from being surprised by `nil` values where they did not expect -them. - -Nimble provides the `beNil` matcher function for test writer that want -to make expectations on `nil` objects: - -```objc -// Objective-C - -expect(nil).to(equal(nil)); // fails -expect(nil).to(beNil()); // passes -``` - -If your matcher does not want to match with nil, you use `Matcher.define` or `Matcher.simple`. -Using those factory methods will automatically generate expected value failure messages when they're nil. - -```swift -public func beginWith(_ startingElement: S.Element) -> Matcher where S.Element: Equatable { - return Matcher.simple("begin with <\(startingElement)>") { actualExpression in - guard let actualValue = try actualExpression.evaluate() else { return .fail } - - var actualGenerator = actualValue.makeIterator() - return MatcherStatus(bool: actualGenerator.next() == startingElement) - } -} - -extension NMBMatcher { - @objc public class func beginWithMatcher(_ expected: Any) -> NMBMatcher { - return NMBMatcher { actualExpression in - let actual = try actualExpression.evaluate() - let expr = actualExpression.cast { $0 as? NMBOrderedCollection } - return try beginWith(expected).satisfies(expr).toObjectiveC() - } - } -} -``` +Nimble's documentation is now lives in [Sources/Nimble/Nimble.docc](Sources/Nimble/Nimble.docc) +as a Documentation Catalog. You can easily browse it [quick.github.io/Nimble](https://quick.github.io/Nimble/documentation/nimble). # Installing Nimble @@ -2011,46 +31,10 @@ extension NMBMatcher { Quick and Nimble, follow [the installation instructions in the Quick Documentation](https://github.com/Quick/Quick/blob/main/Documentation/en-us/InstallingQuick.md). -Nimble can currently be installed in one of two ways: using CocoaPods, or with -git submodules. - -## Installing Nimble as a Submodule - -To use Nimble as a submodule to test your macOS, iOS or tvOS applications, follow -these 4 easy steps: - -1. Clone the Nimble repository -2. Add Nimble.xcodeproj to the Xcode workspace for your project -3. Link Nimble.framework to your test target -4. Start writing expectations! - -For more detailed instructions on each of these steps, -read [How to Install Quick](https://github.com/Quick/Quick#how-to-install-quick). -Ignore the steps involving adding Quick to your project in order to -install just Nimble. - -## Installing Nimble via CocoaPods - -To use Nimble in CocoaPods to test your macOS, iOS, tvOS or watchOS applications, add -Nimble to your podfile and add the ```use_frameworks!``` line to enable Swift -support for CocoaPods. - -```ruby -platform :ios, '8.0' - -source 'https://github.com/CocoaPods/Specs.git' - -# Whatever pods you need for your app go here - -target 'YOUR_APP_NAME_HERE_Tests', :exclusive => true do - use_frameworks! - pod 'Nimble' -end -``` - -Finally run `pod install`. +Nimble can currently be installed in one of four ways: Swift Package Manager, +CocoaPods, Carthage or with git submodules. -## Installing Nimble via Swift Package Manager +## Swift Package Manager ### Xcode @@ -2067,7 +51,7 @@ To use Nimble with Swift Package Manager to test your applications, add Nimble to your `Package.Swift` and link it with your test target: ```swift -// swift-tools-version:5.5 +// swift-tools-version:5.7 import PackageDescription @@ -2078,7 +62,7 @@ let package = Package( ], dependencies: [ // ... - .package(url: "https://github.com/Quick/Nimble.git", from: "12.0.0"), + .package(url: "https://github.com/Quick/Nimble.git", from: "13.0.0"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. @@ -2095,44 +79,55 @@ let package = Package( Please note that if you install Nimble using Swift Package Manager, then `raiseException` is not available. -## Using Nimble without XCTest +## CocoaPods + +To use Nimble in CocoaPods to test your macOS, iOS, tvOS or watchOS applications, add +Nimble to your podfile and add the ```use_frameworks!``` line to enable Swift +support for CocoaPods. -Nimble is integrated with XCTest to allow it work well when used in Xcode test -bundles, however it can also be used in a standalone app. After installing -Nimble using one of the above methods, there are two additional steps required -to make this work. +```ruby +platform :ios, '13.0' -1. Create a custom assertion handler and assign an instance of it to the - global `NimbleAssertionHandler` variable. For example: +source 'https://github.com/CocoaPods/Specs.git' -```swift -class MyAssertionHandler : AssertionHandler { - func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) { - if (!assertion) { - print("Expectation failed: \(message.stringValue)") - } - } -} -``` -```swift -// Somewhere before you use any assertions -NimbleAssertionHandler = MyAssertionHandler() +# Whatever pods you need for your app go here + +target 'YOUR_APP_NAME_HERE_Tests', :exclusive => true do + use_frameworks! + pod 'Nimble' +end ``` -2. Add a post-build action to fix an issue with the Swift XCTest support - library being unnecessarily copied into your app - * Edit your scheme in Xcode, and navigate to Build -> Post-actions - * Click the "+" icon and select "New Run Script Action" - * Open the "Provide build settings from" dropdown and select your target - * Enter the following script contents: +Finally run `pod install`. + +## Carthage + +To use Nimble in Carthage to test your macOS, iOS, tvOS or watchOS applications, +add Nimble to your `Cartfile.private`: + ``` -rm "${SWIFT_STDLIB_TOOL_DESTINATION_DIR}/libswiftXCTest.dylib" +github "Quick/Nimble" ~> 13.2 ``` -You can now use Nimble assertions in your code and handle failures as you see -fit. +Then follow the rest of the [Carthage Quick Start](https://github.com/carthage/carthage/?tab=readme-ov-file#quick-start) +and link Nimble with your unit tests. + +## Git Submodules + +To use Nimble as a submodule to test your macOS, iOS or tvOS applications, follow +these 4 easy steps: + +1. Clone the Nimble repository +2. Add Nimble.xcodeproj to the Xcode workspace for your project +3. Link Nimble.framework to your test target +4. Start writing expectations! + +For more detailed instructions on each of these steps, +read [How to Install Quick](https://github.com/Quick/Quick#how-to-install-quick). +Ignore the steps involving adding Quick to your project in order to +install just Nimble. -## Privacy Statement +# Privacy Statement Nimble is a library that is only used for testing and should never be included in the binary submitted to App Store Connect. diff --git a/Sources/Nimble/Nimble.docc/Guides/Background.md b/Sources/Nimble/Nimble.docc/Guides/Background.md new file mode 100644 index 000000000..bd66320a6 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/Background.md @@ -0,0 +1,29 @@ +# Some Background: Expressing Outcomes Using Assertions in XCTest + +Apple's Xcode includes the XCTest framework, which provides +assertion macros to test whether code behaves properly. +For example, to assert that `1 + 1 = 2`, XCTest has you write: + +```swift +// Swift + +XCTAssertEqual(1 + 1, 2, "expected one plus one to equal two") +``` + +Or, in Objective-C: + +```objc +// Objective-C + +XCTAssertEqual(1 + 1, 2, @"expected one plus one to equal two"); +``` + +XCTest assertions have a couple of drawbacks: + +1. **Not enough macros.** There's no easy way to assert that a string + contains a particular substring, or that a number is less than or + equal to another. +2. **It's hard to check expressions that change over time.** XCTest forces you to write + a lot of boilerplate code. + +Nimble addresses these concerns. diff --git a/Sources/Nimble/Nimble.docc/Guides/Concurrency.md b/Sources/Nimble/Nimble.docc/Guides/Concurrency.md new file mode 100644 index 000000000..6f241b287 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/Concurrency.md @@ -0,0 +1,64 @@ +# Swift Concurrency (Async/Await) Support + +Nimble makes it easy to await for an async function to complete. + +Simply pass the async function in to `expect`: + +```swift +// Swift +await expect { await aFunctionReturning1() }.to(equal(1)) +``` + +The async function is awaited on first, before passing it to the matcher. This +enables the matcher to run synchronous code like before, without caring about +whether the value it's processing was abtained async or not. + +Async support is Swift-only, and it requires that you execute the test in an +async context. For XCTest, this is as simple as marking your test function with +`async`. If you use Quick, all tests in Quick 6 are executed in an async context. +In Quick 7 and later, only tests that are in an `AsyncSpec` subclass will be +executed in an async context. + +To avoid a compiler errors when using synchronous `expect` in asynchronous contexts, +`expect` with async expressions does not support autoclosures. However, the `expecta` +(expect async) function is provided as an alternative, which does support autoclosures. + +```swift +// Swift +await expecta(await aFunctionReturning1()).to(equal(1))) +``` + +Similarly, if you're ever in a situation where you want to force the compiler to +produce a `SyncExpectation`, you can use the `expects` (expect sync) function to +produce a `SyncExpectation`. Like so: + +```swift +// Swift +expects(someNonAsyncFunction()).to(equal(1))) + +expects(await someAsyncFunction()).to(equal(1)) // Compiler error: 'async' call in an autoclosure that does not support concurrency +``` + +### Async Matchers + +In addition to asserting on async functions prior to passing them to a +synchronous matcher, you can also write matchers that directly take in an +async value. These are called `AsyncMatcher`s. This is most obviously useful +when directly asserting against an actor. In addition to writing your own +async matchers, Nimble currently ships with async versions of the following +matchers: + +- ``allPass`` +- ``containElementSatisfying`` +- ``satisfyAllOf`` and the ``&&`` operator overload accept both `AsyncMatcher` and + synchronous ``Matcher``s. +- ``satisfyAnyOf`` and the ``||`` operator overload accept both ``AsyncMatcher`` and + synchronous ``Matcher``s. + +Note: Swift Concurrency support is different than the `toEventually`/`toEventuallyNot` feature described in . +Polling Expectations works by continuously polling +the `Expectation` until it passes. As described here, Nimble's Swift +Concurrency support is about waiting for an expression to finish. + +It is certainly possible to use Polling Expectations with async/await, as the +result of a concurrent Expectation can certainly change with time. diff --git a/Sources/Nimble/Nimble.docc/Guides/Expectations.md b/Sources/Nimble/Nimble.docc/Guides/Expectations.md new file mode 100644 index 000000000..ad26d60fe --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/Expectations.md @@ -0,0 +1,196 @@ +# Expectations Using `expect(...).to` + +Nimble allows you to express expectations using a natural, +easily understood language: + +```swift +// Swift + +import Nimble + +expect(seagull.squawk).to(equal("Squee!")) +``` + +```objc +// Objective-C + +@import Nimble; + +expect(seagull.squawk).to(equal(@"Squee!")); +``` + +> The `expect` function autocompletes to include `file:` and `line:`, + but these parameters are optional. Use the default values to have + Xcode highlight the correct line when an expectation is not met. + +To perform the opposite expectation--to assert something is *not* +equal--use `toNot` or `notTo`: + +```swift +// Swift + +import Nimble + +expect(seagull.squawk).toNot(equal("Oh, hello there!")) +expect(seagull.squawk).notTo(equal("Oh, hello there!")) +``` + +```objc +// Objective-C + +@import Nimble; + +expect(seagull.squawk).toNot(equal(@"Oh, hello there!")); +expect(seagull.squawk).notTo(equal(@"Oh, hello there!")); +``` + +## Custom Failure Messages + +Would you like to add more information to the test's failure messages? Use the `description` optional argument to add your own text: + +```swift +// Swift + +expect(1 + 1).to(equal(3)) +// failed - expected to equal <3>, got <2> + +expect(1 + 1).to(equal(3), description: "Make sure libKindergartenMath is loaded") +// failed - Make sure libKindergartenMath is loaded +// expected to equal <3>, got <2> +``` + +Or the *WithDescription version in Objective-C: + +```objc +// Objective-C + +@import Nimble; + +expect(@(1+1)).to(equal(@3)); +// failed - expected to equal <3.0000>, got <2.0000> + +expect(@(1+1)).toWithDescription(equal(@3), @"Make sure libKindergartenMath is loaded"); +// failed - Make sure libKindergartenMath is loaded +// expected to equal <3.0000>, got <2.0000> +``` + +## Type Safety + +Nimble makes sure you don't compare two types that don't match: + +```swift +// Swift + +// Does not compile: +expect(1 + 1).to(equal("Squee!")) +``` + +> Nimble uses generics--only available in Swift--to ensure + type correctness. That means type checking is + not available when using Nimble in Objective-C. :sob: + +## Operator Overloads + +Tired of so much typing? With Nimble, you can use overloaded operators +like `==` for equivalence, or `>` for comparisons: + +```swift +// Swift + +// Passes if squawk does not equal "Hi!": +expect(seagull.squawk) != "Hi!" + +// Passes if 10 is greater than 2: +expect(10) > 2 +``` + +> Operator overloads are only available in Swift, so you won't be able + to use this syntax in Objective-C. :broken_heart: + +## Lazily Computed Values + +The `expect` function doesn't evaluate the value it's given until it's +time to match. So Nimble can test whether an expression raises an +exception once evaluated: + +```swift +// Swift + +// Note: Swift currently doesn't have exceptions. +// Only Objective-C code can raise exceptions +// that Nimble will catch. +// (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064) +let exception = NSException( + name: NSInternalInconsistencyException, + reason: "Not enough fish in the sea.", + userInfo: ["something": "is fishy"]) +expect { exception.raise() }.to(raiseException()) + +// Also, you can customize raiseException to be more specific +expect { exception.raise() }.to(raiseException(named: NSInternalInconsistencyException)) +expect { exception.raise() }.to(raiseException( + named: NSInternalInconsistencyException, + reason: "Not enough fish in the sea")) +expect { exception.raise() }.to(raiseException( + named: NSInternalInconsistencyException, + reason: "Not enough fish in the sea", + userInfo: ["something": "is fishy"])) +``` + +Objective-C works the same way, but you must use the `expectAction` +macro when making an expectation on an expression that has no return +value: + +```objc +// Objective-C + +NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException + reason:@"Not enough fish in the sea." + userInfo:nil]; +expectAction(^{ [exception raise]; }).to(raiseException()); + +// Use the property-block syntax to be more specific. +expectAction(^{ [exception raise]; }).to(raiseException().named(NSInternalInconsistencyException)); +expectAction(^{ [exception raise]; }).to(raiseException(). + named(NSInternalInconsistencyException). + reason("Not enough fish in the sea")); +expectAction(^{ [exception raise]; }).to(raiseException(). + named(NSInternalInconsistencyException). + reason("Not enough fish in the sea"). + userInfo(@{@"something": @"is fishy"})); + +// You can also pass a block for custom matching of the raised exception +expectAction(exception.raise()).to(raiseException().satisfyingBlock(^(NSException *exception) { + expect(exception.name).to(beginWith(NSInternalInconsistencyException)); +})); +``` + +## C Primitives + +Some testing frameworks make it hard to test primitive C values. +In Nimble, it just works: + +```swift +// Swift + +let actual: CInt = 1 +let expectedValue: CInt = 1 +expect(actual).to(equal(expectedValue)) +``` + +In fact, Nimble uses type inference, so you can write the above +without explicitly specifying both types: + +```swift +// Swift + +expect(1 as CInt).to(equal(1)) +``` + +> In Objective-C, Nimble only supports Objective-C objects. To + make expectations on primitive C values, wrap then in an object + literal: + +```objc +expect(@(1 + 1)).to(equal(@2)); +``` diff --git a/Sources/Nimble/Nimble.docc/Guides/ObjectiveC.md b/Sources/Nimble/Nimble.docc/Guides/ObjectiveC.md new file mode 100644 index 000000000..db3042cdc --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/ObjectiveC.md @@ -0,0 +1,81 @@ +# Objective-C Support + +Nimble has full support for Objective-C. However, there are two things +to keep in mind when using Nimble in Objective-C: + +1. All parameters passed to the ``expect`` function, as well as matcher + functions like ``equal``, must be Objective-C objects or can be converted into + an `NSObject` equivalent: + + ```objc + // Objective-C + + @import Nimble; + + expect(@(1 + 1)).to(equal(@2)); + expect(@"Hello world").to(contain(@"world")); + + // Boxed as NSNumber * + expect(2).to(equal(2)); + expect(1.2).to(beLessThan(2.0)); + expect(true).to(beTruthy()); + + // Boxed as NSString * + expect("Hello world").to(equal("Hello world")); + + // Boxed as NSRange + expect(NSMakeRange(1, 10)).to(equal(NSMakeRange(1, 10))); + ``` + +2. To make an expectation on an expression that does not return a value, + such as `-[NSException raise]`, use ``expectAction`` instead of + ``expect``: + + ```objc + // Objective-C + + expectAction(^{ [exception raise]; }).to(raiseException()); + ``` + +The following types are currently converted to an `NSObject` type: + + - **C Numeric types** are converted to `NSNumber *` + - `NSRange` is converted to `NSValue *` + - `char *` is converted to `NSString *` + +For the following matchers: + +- ``equal`` +- ``beGreaterThan`` +- ``beGreaterThanOrEqual`` +- ``beLessThan`` +- ``beLessThanOrEqual`` +- ``beCloseTo`` +- ``beTrue`` +- ``beFalse`` +- ``beTruthy`` +- ``beFalsy`` +- ``haveCount`` + + +If you would like to see more, [file an issue](https://github.com/Quick/Nimble/issues). + +## Disabling Objective-C Shorthand + +Nimble provides a shorthand for expressing expectations using the +``expect`` function. To disable this shorthand in Objective-C, define the +``NIMBLE_DISABLE_SHORT_SYNTAX`` macro somewhere in your code before +importing Nimble: + +```objc +#define NIMBLE_DISABLE_SHORT_SYNTAX 1 + +@import Nimble; + +NMB_expect(^{ return seagull.squawk; }, __FILE__, __LINE__).to(NMB_equal(@"Squee!")); +``` + +> Disabling the shorthand is useful if you're testing functions with + names that conflict with Nimble functions, such as ``expect`` or + ``equal``. If that's not the case, there's no point in disabling the + shorthand. diff --git a/Sources/Nimble/Nimble.docc/Guides/PollingExpectations.md b/Sources/Nimble/Nimble.docc/Guides/PollingExpectations.md new file mode 100644 index 000000000..53cb624a9 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/PollingExpectations.md @@ -0,0 +1,290 @@ +# Polling Expectations + +In Nimble, it's easy to make expectations on values that are updated +asynchronously. These are called Polling Expectations, because they work by +continuously polling the Expectation. + +## Forms of Polling Expectations + +There are 4 forms of polling expectations: `toEventually`, +`toEventuallyNot`/`toNotEventually`, `toAlways`/`alwaysTo`, and `toNever`/`neverTo`. +These each have different behaviors for what they expect the matcher to return +until they stop polling. + +For example, `toEventually` will run until the Matcher matches, while `toNever` +will run so long as the Matcher doesn't match. This makes them opposites. + +> Warning: It is a very common mistake to assume that `toEventuallyNot` is the +opposite of `toEventually`. For example, if you're using a [Swift Fakes Spy](https://github.com/Quick/swift-fakes/blob/main/Sources/Fakes/Spy.swift), +you might be used to checking that it is called on a background thread by using +`expect(spy).toEventually(beCalled())`. If you want to check that a spy is not +called during some background behavior, you might be tempted to use `expect(spy).toEventuallyNot(beCalled())`. +All this will do is verify that, by the time the Expectation first runs, the spy +has not been called. At which point, that background behavior might not even have +run. The correct thing is to use `toNever`, as in `expect(spy).toNever(beCalled())`. + +Polling form | Pass Duration | Expected Matcher Result +------------------------------------|---------------|------------------------ +`toEventually` | Until pass | to match +`toEventuallyNot`/`toNotEventually` | Until pass | to not match +`toAlways`/`alwaysTo` | Until fail | to match +`toNever`/`neverTo` | Until fail | to not match + +### Verifying a Matcher will Eventually Match or stop Matching + +To verify that a value eventually matches or stops matching through the length +of the timeout, use `toEventually` or `toEventuallyNot`/`toNotEventually`: + +```swift +// Swift +DispatchQueue.main.async { + ocean.add("dolphins") + ocean.add("whales") +} +expect(ocean).toEventually(contain("dolphins", "whales")) +``` + +```objc +// Objective-C + +dispatch_async(dispatch_get_main_queue(), ^{ + [ocean add:@"dolphins"]; + [ocean add:@"whales"]; +}); +expect(ocean).toEventually(contain(@"dolphins", @"whales")); +``` + +In the above example, `ocean` is constantly re-evaluated. If it ever +contains dolphins and whales, the expectation passes. If `ocean` still +doesn't contain them, even after being continuously re-evaluated for one +whole second, the expectation fails. + +### Verifying a Matcher will Never or Always Match + +You can also test that a value always or never matches throughout the length of the timeout. Use `toNever` and `toAlways` for this: + +```swift +// Swift +ocean.add("dolphins") +expect(ocean).toAlways(contain("dolphins")) +expect(ocean).toNever(contain("hares")) +``` + +```objc +// Objective-C +[ocean add:@"dolphins"] +expect(ocean).toAlways(contain(@"dolphins")) +expect(ocean).toNever(contain(@"hares")) +``` + +### Behaviors of different forms of Polling + +Fundamentally, the behaviors of the different types of polling (`toEventually`, +`toEventuallyNot`, `toAlways`, `toNever`) are about the duration of the polling, +and what they're looking for with regard to the Expectation. + +For example, `toEventually` will run until the Expectation matches, while `toNever` +will run so long as the Expectation dosen't match. This effectively makes them +opposites. + +> Warning: It is a very common mistake to assume that `toEventuallyNot` is the +opposite of `toEventually`. For example, if you're using a [Swift Fakes Spy](https://github.com/Quick/swift-fakes/blob/main/Sources/Fakes/Spy.swift), +you might be used to checking that it is called on a background thread by using +`expect(spy).toEventually(beCalled())`. If you want to check that a spy is not +called during some background behavior, you might be tempted to use `expect(spy).toEventuallyNot(beCalled())`. +All this will do is verify that, by the time the Expectation first runs, the spy +has not been called. At which point, that background behavior might not even have +run. The correct thing is to use `toNever`, as in `expect(spy).toNever(beCalled())`. + +Polling form | Pass Duration | Expected Matcher Result +------------------------------------|---------------|------------------------ +`toEventually` | Until pass | to match +`toEventuallyNot`/`toNotEventually` | Until pass | to not match +`toAlways`/`alwaysTo` | Until fail | to match +`toNever`/`neverTo` | Until fail | to not match + + +### Waiting for a Callback to be Called + +You can also provide a callback by using the `waitUntil` function: + +```swift +// Swift + +waitUntil { done in + ocean.goFish { success in + expect(success).to(beTrue()) + done() + } +} +``` + +```objc +// Objective-C + +waitUntil(^(void (^done)(void)){ + [ocean goFishWithHandler:^(BOOL success){ + expect(success).to(beTrue()); + done(); + }]; +}); +``` + +`waitUntil` also optionally takes a timeout parameter: + +```swift +// Swift + +waitUntil(timeout: .seconds(10)) { done in + ocean.goFish { success in + expect(success).to(beTrue()) + done() + } +} +``` + +```objc +// Objective-C + +waitUntilTimeout(10, ^(void (^done)(void)){ + [ocean goFishWithHandler:^(BOOL success){ + expect(success).to(beTrue()); + done(); + }]; +}); +``` + +Note: `waitUntil` triggers its timeout code on the main thread. Blocking the main +thread will cause Nimble to stop the run loop to continue. This can cause test +pollution for whatever incomplete code that was running on the main thread. +Blocking the main thread can be caused by blocking IO, calls to sleep(), +deadlocks, and synchronous IPC. + +### Changing the Timeout and Polling Intervals + +Sometimes it takes more than a second for a value to update. In those +cases, use the `timeout` parameter: + +```swift +// Swift + +// Waits three seconds for ocean to contain "starfish": +expect(ocean).toEventually(contain("starfish"), timeout: .seconds(3)) + +// Evaluate someValue every 0.2 seconds repeatedly until it equals 100, or fails if it timeouts after 5.5 seconds. +expect(someValue).toEventually(equal(100), timeout: .milliseconds(5500), pollInterval: .milliseconds(200)) +``` + +```objc +// Objective-C + +// Waits three seconds for ocean to contain "starfish": +expect(ocean).withTimeout(3).toEventually(contain(@"starfish")); +``` + +### Changing default Timeout and Poll Intervals + +In some cases (e.g. when running on slower machines) it can be useful to modify +the default timeout and poll interval values. This can be done as follows: + +```swift +// Swift + +// Increase the global timeout to 5 seconds: +Nimble.PollingDefaults.timeout = .seconds(5) + +// Slow the polling interval to 0.1 seconds: +Nimble.PollingDefaults.pollInterval = .milliseconds(100) +``` + +You can set these globally at test startup in two ways: + +#### Quick + +If you use [Quick](https://github.com/Quick/Quick), add a [`QuickConfiguration` subclass](https://github.com/Quick/Quick/blob/main/Documentation/en-us/ConfiguringQuick.md) which sets your desired `PollingDefaults`. + +```swift +import Quick +import Nimble + +class PollingConfiguration: QuickConfiguration { + override class func configure(_ configuration: QCKConfiguration) { + Nimble.PollingDefaults.timeout = .seconds(5) + Nimble.PollingDefaults.pollInterval = .milliseconds(100) + } +} +``` + +#### XCTest + +If you use [XCTest](https://developer.apple.com/documentation/xctest), add an object that conforms to [`XCTestObservation`](https://developer.apple.com/documentation/xctest/xctestobservation) and implement [`testBundleWillStart(_:)`](https://developer.apple.com/documentation/xctest/xctestobservation/1500772-testbundlewillstart). + +Additionally, you will need to register this observer with the [`XCTestObservationCenter`](https://developer.apple.com/documentation/xctest/xctestobservationcenter) at test startup. To do this, set the `NSPrincipalClass` key in your test bundle's Info.plist and implement a class with that same name. + +For example + +```xml + + + + + + + NSPrincipalClass + MyTests.TestSetup + + +``` + +```swift +// TestSetup.swift +import XCTest +import Nimble + +@objc +class TestSetup: NSObject { + override init() { + XCTestObservationCenter.shared.register(PollingConfigurationTestObserver()) + } +} + +class PollingConfigurationTestObserver: NSObject, XCTestObserver { + func testBundleWillStart(_ testBundle: Bundle) { + Nimble.PollingDefaults.timeout = .seconds(5) + Nimble.PollingDefaults.pollInterval = .milliseconds(100) + } +} +``` + +In Linux, you can implement `LinuxMain` to set the PollingDefaults before calling `XCTMain`. + +## Using Polling Expectations in Async Tests + +You can easily use `toEventually` or `toEventuallyNot` in async contexts as +well. You only need to add an `await` statement to the beginning of the line: + +```swift +// Swift +DispatchQueue.main.async { + ocean.add("dolphins") + ocean.add("whales") +} +await expect(ocean).toEventually(contain("dolphens", "whiles")) +``` + +Starting in Nimble 12, `toEventually` et. al. now also supports async +expectations. For example, the following test is now supported: + +```swift +actor MyActor { + private var counter = 0 + + func access() -> Int { + counter += 1 + return counter + } +} + +let subject = MyActor() +await expect { await subject.access() }.toEventually(equal(2)) +``` diff --git a/Sources/Nimble/Nimble.docc/Guides/Require.md b/Sources/Nimble/Nimble.docc/Guides/Require.md new file mode 100644 index 000000000..99f0f3214 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/Require.md @@ -0,0 +1,82 @@ +# Using `require` to demand that a matcher pass before continuing + +Nimble 13.1 added the ``require`` dsl to complement ``expect``. `require` +looks similar to `expect` and works with matchers just like `expect` does. The +difference is that `require` requires that the matcher passes - if the matcher +doesn't pass, then `require` will throw an error. Additionally, if `require` +does pass, then it'll return the result of running the expression. + +For example, in testing a function that returns an array, you might need to +first guarantee that there are exactly 3 items in the array before continuing +to assert on it. Instead of writing code that needlessly duplicates an assertion +and a conditional like so: + +```swift +let collection = myFunction() +expect(collection).to(haveCount(3)) +guard collection.count == 3 else { return } +// ... +``` + +You can replace that with: + +```swift +let collection = try require(myFunction()).to(haveCount(3)) +// ... +``` + +## Polling with `require`. + +Because `require` does everything you can do with `expect`, you can also use +`require` to using `toEventually`, +`eventuallyTo`, `toEventuallyNot`, `toNotEventually`, `toNever`, `neverTo`, +`toAlways`, and `alwaysTo`. These work exactly the same as they do when using +`expect`, except that they throw if they fail, and they return the value of the +expression when they pass. + +## Using `require` with Async expressions and Async matchers + +`require` also works with both async expressions +(`require { await someExpression() }.to(...)`), and async matchers +(`require().to(someAsyncMatcher())`). + +Note that to prevent compiler confusion, +you cannot use `require` with async autoclosures. That is, +`require(await someExpression())` will not compile. You can instead either +make the closure explicit (`require { await someExpression() }`), or use the +`requirea` function, which does accept autoclosures. +Similarly, if you ever wish to use the sync version of `require` when the +compiler is trying to force you to use the async version, you can use the +`requires` function, which only allows synchronous expressions. + +## Using `unwrap` to replace `require(...).toNot(beNil())` + +It's very common to require that a value not be nil. Instead of writing +`try require(...).toNot(beNil())`, Nimble provides the `unwrap` function. This +expression throws an error if the expression evaluates to nil, or returns the +non-nil result when it passes. For example: + +```swift +let value = try unwrap(nil as Int?) // throws +let value = try unwrap(1 as Int?) // returns 1 +``` + +Additionally, there is also the `pollUnwrap` function, which aliases to +`require(...).toEventuallyNot(beNil())`. This is extremely useful for verifying +that a value that is updated on a background thread was eventually set to a +non-nil value. + +Note: As with `require`, there are `unwraps`, `unwrapa`, `pollUnwraps`, and +`pollUnwrapa` variants for allowing you to use autoclosures specifically with +synchronous or asynchronous code. + +## Throwing a Custom Error from Require + +By default, if the matcher fails in a `require`, then a ``RequireError`` will be +thrown. You can override this behavior and throw a custom error by passing a +non-nil `Error` value to the `customError` parameter: + +```swift +try require(1).to(equal(2)) // throws a `RequireError` +try require(customError: MyCustomError(), 1).to(equal(2)) // throws a `MyCustomError` +``` diff --git a/Sources/Nimble/Nimble.docc/Guides/WritingCustomMatchers.md b/Sources/Nimble/Nimble.docc/Guides/WritingCustomMatchers.md new file mode 100644 index 000000000..b42f3ee4e --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Guides/WritingCustomMatchers.md @@ -0,0 +1,363 @@ +# Writing Your Own Matchers + +In Nimble, matchers are Swift functions that take an expected +value and return a `Matcher` closure. Take `equal`, for example: + +```swift +// Swift + +public func equal(expectedValue: T?) -> Matcher { + // Can be shortened to: + // Matcher { actual in ... } + // + // But shown with types here for clarity. + return Matcher { (actualExpression: Expression) throws -> MatcherResult in + let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>") + if let actualValue = try actualExpression.evaluate() { + return MatcherResult( + bool: actualValue == expectedValue!, + message: msg + ) + } else { + return MatcherResult( + status: .fail, + message: msg.appendedBeNilHint() + ) + } + } +} +``` + +The return value of a `Matcher` closure is a `MatcherResult` that indicates +whether the actual value matches the expectation and what error message to +display on failure. + +> The actual `equal` matcher function does not match when + `expected` are nil; the example above has been edited for brevity. + +Since matchers are just Swift functions, you can define them anywhere: +at the top of your test file, in a file shared by all of your tests, or +in an Xcode project you distribute to others. + +> If you write a matcher you think everyone can use, consider adding it + to Nimble's built-in set of matchers by sending a pull request! Or + distribute it yourself via GitHub. + +For examples of how to write your own matchers, just check out the +[`Matchers` directory](https://github.com/Quick/Nimble/tree/main/Sources/Nimble/Matchers) +to see how Nimble's built-in set of matchers are implemented. You can +also check out the tips below. + +## MatcherResult + +``MatcherResult`` is the return struct that ``Matcher`` returns to indicate +success and failure. A `MatcherResult` is made up of two values: +``MatcherStatus`` and ``ExpectationMessage``. + +Instead of a boolean, `MatcherStatus` captures a trinary set of values: + +```swift +// Swift + +public enum MatcherStatus { +// The matcher "passes" with the given expression +// eg - expect(1).to(equal(1)) +case matches + +// The matcher "fails" with the given expression +// eg - expect(1).toNot(equal(1)) +case doesNotMatch + +// The matcher never "passes" with the given expression, even if negated +// eg - expect(nil as Int?).toNot(equal(1)) +case fail + +// ... +} +``` + +Meanwhile, `ExpectationMessage` provides messaging semantics for error reporting. + +```swift +// Swift + +public indirect enum ExpectationMessage { +// Emits standard error message: +// eg - "expected to , got " +case expectedActualValueTo(/* message: */ String) + +// Allows any free-form message +// eg - "" +case fail(/* message: */ String) + +// ... +} +``` + +Matchers should usually depend on either ``.expectedActualValueTo(_:)`` or +``.fail(_:)`` when reporting errors. Special cases can be used for the other enum +cases. + +Finally, if your Matcher utilizes other Matchers, you can utilize +``.appended(details:)`` and ``.appended(message:)`` methods to annotate an existing +error with more details. + +A common message to append is failing on nils. For that, ``.appendedBeNilHint()`` +can be used. + +## Lazy Evaluation + +`actualExpression` is a lazy, memoized closure around the value provided to the +``expect`` function. The expression can either be a closure or a value directly +passed to ``expect(_:)``. In order to determine whether that value matches, +custom matchers should call `actualExpression.evaluate()`: + +```swift +// Swift + +public func beNil() -> Matcher { + // Matcher.simpleNilable(..) automatically generates ExpectationMessage for + // us based on the string we provide to it. Also, the 'Nilable' postfix indicates + // that this Matcher supports matching against nil actualExpressions, instead of + // always resulting in a MatcherStatus.fail result -- which is true for + // Matcher.simple(..) + return Matcher.simpleNilable("be nil") { actualExpression in + let actualValue = try actualExpression.evaluate() + return MatcherStatus(bool: actualValue == nil) + } +} +``` + +In the above example, `actualExpression` is not `nil` -- it is a closure +that returns a value. The value it returns, which is accessed via the +`evaluate()` method, may be `nil`. If that value is `nil`, the `beNil` +matcher function returns `true`, indicating that the expectation passed. + +## Type Checking via Swift Generics + +Using Swift's generics, matchers can constrain the type of the actual value +passed to the `expect` function by modifying the return type. + +For example, the following matcher, `haveDescription`, only accepts actual +values that implement the `CustomStringConvertible` protocol. It checks their `description` +against the one provided to the matcher function, and passes if they are the same: + +```swift +// Swift + +public func haveDescription(description: String) -> Matcher { + return Matcher.simple("have description") { actual in + return MatcherStatus(bool: actual.evaluate().description == description) + } +} +``` + +## Customizing Failure Messages + +When using `Matcher.simple(..)` or `Matcher.simpleNilable(..)`, Nimble +outputs the following failure message when an expectation fails: + +```swift +// where `message` is the first string argument and +// `actual` is the actual value received in `expect(..)` +"expected to \(message), got <\(actual)>" +``` + +You can customize this message by modifying the way you create a `Matcher`. + +### Basic Customization + +For slightly more complex error messaging, receive the created failure message +with `Matcher.define(..)`: + +```swift +// Swift + +public func equal(_ expectedValue: T?) -> Matcher { + return Matcher.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in + let actualValue = try actualExpression.evaluate() + let matches = actualValue == expectedValue && expectedValue != nil + if expectedValue == nil || actualValue == nil { + if expectedValue == nil && actualValue != nil { + return MatcherResult( + status: .fail, + message: msg.appendedBeNilHint() + ) + } + return MatcherResult(status: .fail, message: msg) + } + return MatcherResult(bool: matches, message: msg) + } +} +``` + +In the example above, `msg` is defined based on the string given to +`Matcher.define`. The code looks akin to: + +```swift +// Swift + +let msg = ExpectationMessage.expectedActualValueTo("equal <\(stringify(expectedValue))>") +``` + +### Full Customization + +To fully customize the behavior of the Matcher, use the overload that expects +a `MatcherResult` to be returned. + +Along with `MatcherResult`, there are other `ExpectationMessage` enum values you can use: + +```swift +public indirect enum ExpectationMessage { +// Emits standard error message: +// eg - "expected to , got " +case expectedActualValueTo(/* message: */ String) + +// Allows any free-form message +// eg - "" +case fail(/* message: */ String) + +// Emits standard error message with a custom actual value instead of the default. +// eg - "expected to , got " +case expectedCustomValueTo(/* message: */ String, /* actual: */ String) + +// Emits standard error message without mentioning the actual value +// eg - "expected to " +case expectedTo(/* message: */ String) + +// ... +} +``` + +For matchers that compose other matchers, there are a handful of helper +functions to annotate messages. + +`appended(message: String)` is used to append to the original failure message: + +```swift +// produces "expected to be true, got (use beFalse() for inverse)" +// appended message do show up inline in Xcode. +.expectedActualValueTo("be true").appended(message: " (use beFalse() for inverse)") +``` + +For a more comprehensive message that spans multiple lines, use +`appended(details: String)` instead: + +```swift +// produces "expected to be true, got \n\nuse beFalse() for inverse\nor use beNil()" +// details do not show inline in Xcode, but do show up in test logs. +.expectedActualValueTo("be true").appended(details: "use beFalse() for inverse\nor use beNil()") +``` + +## Asynchronous Matchers + +To write matchers against async expressions, return an instance of +`AsyncMatcher`. The closure passed to `AsyncMatcher` is async, and the +expression you evaluate is also asynchronous and needs to be awaited on. + +```swift +// Swift + +actor CallRecorder { + private(set) var calls: [Arguments] = [] + + func record(call: Arguments) { + calls.append(call) + } +} + +func beCalled(with arguments: Argument) -> AsyncMatcher> { + AsyncMatcher { (expression: AsyncExpression>) in + let message = ExpectationMessage.expectedActualValueTo("be called with \(arguments)") + guard let calls = try await expression.evaluate()?.calls else { + return MatcherResult(status: .fail, message: message.appendedBeNilHint()) + } + + return MatcherResult(bool: calls.contains(args), message: message.appended(details: "called with \(calls)")) + } +} +``` + +In this example, we created an actor to act as an object to record calls to an +async function. Then, we created the `beCalled(with:)` matcher to check if the +actor has received a call with the given arguments. + +## Supporting Objective-C + +To use a custom matcher written in Swift from Objective-C, you'll have +to extend the `NMBMatcher` class, adding a new class method for your +custom matcher. The example below defines the class method +`+[NMBMatcher beNilMatcher]`: + +```swift +// Swift + +extension NMBMatcher { + @objc public class func beNilMatcher() -> NMBMatcher { + return NMBMatcher { actualExpression in + return try beNil().satisfies(actualExpression).toObjectiveC() + } + } +} +``` + +The above allows you to use the matcher from Objective-C: + +```objc +// Objective-C + +expect(actual).to([NMBMatcher beNilMatcher]()); +``` + +To make the syntax easier to use, define a C function that calls the +class method: + +```objc +// Objective-C + +FOUNDATION_EXPORT NMBMatcher *beNil() { + return [NMBMatcher beNilMatcher]; +} +``` + +### Properly Handling `nil` in Objective-C Matchers + +When supporting Objective-C, make sure you handle `nil` appropriately. +Like [Cedar](https://github.com/pivotal/cedar/issues/100), +**most matchers do not match with nil**. This is to bring prevent test +writers from being surprised by `nil` values where they did not expect +them. + +Nimble provides the `beNil` matcher function for test writer that want +to make expectations on `nil` objects: + +```objc +// Objective-C + +expect(nil).to(equal(nil)); // fails +expect(nil).to(beNil()); // passes +``` + +If your matcher does not want to match with nil, you use `Matcher.define` or `Matcher.simple`. +Using those factory methods will automatically generate expected value failure messages when they're nil. + +```swift +public func beginWith(_ startingElement: S.Element) -> Matcher where S.Element: Equatable { + return Matcher.simple("begin with <\(startingElement)>") { actualExpression in + guard let actualValue = try actualExpression.evaluate() else { return .fail } + + var actualGenerator = actualValue.makeIterator() + return MatcherStatus(bool: actualGenerator.next() == startingElement) + } +} + +extension NMBMatcher { + @objc public class func beginWithMatcher(_ expected: Any) -> NMBMatcher { + return NMBMatcher { actualExpression in + let actual = try actualExpression.evaluate() + let expr = actualExpression.cast { $0 as? NMBOrderedCollection } + return try beginWith(expected).satisfies(expr).toObjectiveC() + } + } +} +``` diff --git a/Sources/Nimble/Nimble.docc/Matchers/CollectionCount.md b/Sources/Nimble/Nimble.docc/Matchers/CollectionCount.md new file mode 100644 index 000000000..e611c8328 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/CollectionCount.md @@ -0,0 +1,31 @@ +# Collection Count + +```swift +// Swift + +// Passes if 'actual' contains the 'expected' number of elements: +expect(actual).to(haveCount(expected)) + +// Passes if 'actual' does _not_ contain the 'expected' number of elements: +expect(actual).notTo(haveCount(expected)) +``` + +```objc +// Objective-C + +// Passes if 'actual' contains the 'expected' number of elements: +expect(actual).to(haveCount(expected)) + +// Passes if 'actual' does _not_ contain the 'expected' number of elements: +expect(actual).notTo(haveCount(expected)) +``` + +For Swift, the actual value must be an instance of a type conforming to `Collection`. +For example, instances of `Array`, `Dictionary`, or `Set`. + +For Objective-C, the actual value must be one of the following classes, or their subclasses: + + - `NSArray`, + - `NSDictionary`, + - `NSSet`, or + - `NSHashTable`. diff --git a/Sources/Nimble/Nimble.docc/Matchers/CollectionElements.md b/Sources/Nimble/Nimble.docc/Matchers/CollectionElements.md new file mode 100644 index 000000000..df113a440 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/CollectionElements.md @@ -0,0 +1,47 @@ +# Collection Elements + +Nimble provides a means to check that all elements of a collection pass a given expectation. + +## Swift + +In Swift, the collection must be an instance of a type conforming to +`Sequence`. + +```swift +// Swift + +// Providing a custom function: +expect([1, 2, 3, 4]).to(allPass { $0 < 5 }) + +// Composing the expectation with another matcher: +expect([1, 2, 3, 4]).to(allPass(beLessThan(5))) +``` + +There are also variants of `allPass` that check against async matchers, and +that take in async functions: + +```swift +// Swift + +// Providing a custom function: +expect([1, 2, 3, 4]).to(allPass { await asyncFunctionReturningBool($0) }) + +// Composing the expectation with another matcher: +expect([1, 2, 3, 4]).to(allPass(someAsyncMatcher())) +``` + +## Objective-C + +In Objective-C, the collection must be an instance of a type which implements +the `NSFastEnumeration` protocol, and whose elements are instances of a type +which subclasses `NSObject`. + +Additionally, unlike in Swift, there is no override to specify a custom +matcher function. + +```objc +// Objective-C + +expect(@[@1, @2, @3, @4]).to(allPass(beLessThan(@5))); +``` + diff --git a/Sources/Nimble/Nimble.docc/Matchers/CollectionMembership.md b/Sources/Nimble/Nimble.docc/Matchers/CollectionMembership.md new file mode 100644 index 000000000..739a3667a --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/CollectionMembership.md @@ -0,0 +1,138 @@ +# Collection Membership + +```swift +// Swift + +// Passes if all of the expected values are members of 'actual': +expect(actual).to(contain(expected...)) + +// Passes if 'actual' is empty (i.e. it contains no elements): +expect(actual).to(beEmpty()) +``` + +```objc +// Objective-C + +// Passes if expected is a member of 'actual': +expect(actual).to(contain(expected)); + +// Passes if 'actual' is empty (i.e. it contains no elements): +expect(actual).to(beEmpty()); +``` + +> In Swift `contain` takes any number of arguments. The expectation + passes if all of them are members of the collection. In Objective-C, + `contain` only takes one argument [for now](https://github.com/Quick/Nimble/issues/27). + +For example, to assert that a list of sea creature names contains +"dolphin" and "starfish": + +```swift +// Swift + +expect(["whale", "dolphin", "starfish"]).to(contain("dolphin", "starfish")) +``` + +```objc +// Objective-C + +expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"dolphin")); +expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"starfish")); +``` + +> `contain` and `beEmpty` expect collections to be instances of + `NSArray`, `NSSet`, or a Swift collection composed of `Equatable` elements. + +To test whether a set of elements is present at the beginning or end of +an ordered collection, use `beginWith` and `endWith`: + +```swift +// Swift + +// Passes if the elements in expected appear at the beginning of 'actual': +expect(actual).to(beginWith(expected...)) + +// Passes if the the elements in expected come at the end of 'actual': +expect(actual).to(endWith(expected...)) +``` + +```objc +// Objective-C + +// Passes if the elements in expected appear at the beginning of 'actual': +expect(actual).to(beginWith(expected)); + +// Passes if the the elements in expected come at the end of 'actual': +expect(actual).to(endWith(expected)); +``` + +> `beginWith` and `endWith` expect collections to be instances of + `NSArray`, or ordered Swift collections composed of `Equatable` + elements. + + Like `contain`, in Objective-C `beginWith` and `endWith` only support + a single argument [for now](https://github.com/Quick/Nimble/issues/27). + +For code that returns collections of complex objects without a strict +ordering, there is the `containElementSatisfying` matcher: + +```swift +// Swift + +struct Turtle { + let color: String +} + +let turtles: [Turtle] = functionThatReturnsSomeTurtlesInAnyOrder() + +// This set of matchers passes regardless of whether the array is +// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: + +expect(turtles).to(containElementSatisfying({ turtle in + return turtle.color == "green" +})) +expect(turtles).to(containElementSatisfying({ turtle in + return turtle.color == "blue" +}, "that is a turtle with color 'blue'")) + +// The second matcher will incorporate the provided string in the error message +// should it fail +``` + +> Note: in Swift, `containElementSatisfying` also has a variant that takes in an +async function. + +```objc +// Objective-C + +@interface Turtle : NSObject +@property (nonatomic, readonly, nonnull) NSString *color; +@end + +@implementation Turtle +@end + +NSArray * __nonnull turtles = functionThatReturnsSomeTurtlesInAnyOrder(); + +// This set of matchers passes regardless of whether the array is +// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]: + +expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { + return [[turtle color] isEqualToString:@"green"]; +})); +expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) { + return [[turtle color] isEqualToString:@"blue"]; +})); +``` + +For asserting on if the given `Comparable` value is inside of a `Range`, use the `beWithin` matcher. + +```swift +// Swift + +// Passes if 5 is within the range 1 through 10, inclusive +expect(5).to(beWithin(1...10)) + +// Passes if 5 is not within the range 2 through 4. +expect(5).toNot(beWithin(2..<5)) +``` diff --git a/Sources/Nimble/Nimble.docc/Matchers/Comparisons.md b/Sources/Nimble/Nimble.docc/Matchers/Comparisons.md new file mode 100644 index 000000000..9c26a7004 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Comparisons.md @@ -0,0 +1,94 @@ +# Comparisons + +```swift +// Swift + +expect(actual).to(beLessThan(expected)) +expect(actual) < expected + +expect(actual).to(beLessThanOrEqualTo(expected)) +expect(actual) <= expected + +expect(actual).to(beGreaterThan(expected)) +expect(actual) > expected + +expect(actual).to(beGreaterThanOrEqualTo(expected)) +expect(actual) >= expected +``` + +```objc +// Objective-C + +expect(actual).to(beLessThan(expected)); +expect(actual).to(beLessThanOrEqualTo(expected)); +expect(actual).to(beGreaterThan(expected)); +expect(actual).to(beGreaterThanOrEqualTo(expected)); +``` + +> Values given to the comparison matchers above must implement + `Comparable`. + +Because of how computers represent floating point numbers, assertions +that two floating point numbers be equal will sometimes fail. To express +that two numbers should be close to one another within a certain margin +of error, use `beCloseTo`: + +```swift +// Swift + +expect(actual).to(beCloseTo(expected, within: delta)) +``` + +```objc +// Objective-C + +expect(actual).to(beCloseTo(expected).within(delta)); +``` + +For example, to assert that `10.01` is close to `10`, you can write: + +```swift +// Swift + +expect(10.01).to(beCloseTo(10, within: 0.1)) +``` + +```objc +// Objective-C + +expect(@(10.01)).to(beCloseTo(@10).within(0.1)); +``` + +There is also an operator shortcut available in Swift: + +```swift +// Swift + +expect(actual) ≈ expected +expect(actual) ≈ (expected, delta) + +``` +(Type option+x to get `≈` on a U.S. keyboard) + +The former version uses the default delta of 0.0001. Here is yet another way to do this: + +```swift +// Swift + +expect(actual) ≈ expected ± delta +expect(actual) == expected ± delta + +``` +(Type option+shift+= to get `±` on a U.S. keyboard) + +If you are comparing arrays of floating point numbers, you'll find the following useful: + +```swift +// Swift + +expect([0.0, 2.0]) ≈ [0.0001, 2.0001] +expect([0.0, 2.0]).to(beCloseTo([0.1, 2.1], within: 0.1)) + +``` + +> Values given to the `beCloseTo` matcher must conform to `FloatingPoint`. diff --git a/Sources/Nimble/Nimble.docc/Matchers/CustomValidation.md b/Sources/Nimble/Nimble.docc/Matchers/CustomValidation.md new file mode 100644 index 000000000..828c2f670 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/CustomValidation.md @@ -0,0 +1,27 @@ +# Custom Validation + +```swift +// Swift + +// passes if .succeeded is returned from the closure +expect { + guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else { + return .failed(reason: "wrong enum case") + } + + return .succeeded +}.to(succeed()) + +// passes if .failed is returned from the closure +expect { + guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else { + return .failed(reason: "wrong enum case") + } + + return .succeeded +}.notTo(succeed()) +``` + +The `String` provided with `.failed()` is shown when the test fails. + +> Warning: When using Polling Expectations be careful not to make state changes or run process intensive code since this closure will be ran many times. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Equivalence.md b/Sources/Nimble/Nimble.docc/Matchers/Equivalence.md new file mode 100644 index 000000000..f45493258 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Equivalence.md @@ -0,0 +1,26 @@ +# Equivalence + +```swift +// Swift + +// Passes if 'actual' is equivalent to 'expected': +expect(actual).to(equal(expected)) +expect(actual) == expected + +// Passes if 'actual' is not equivalent to 'expected': +expect(actual).toNot(equal(expected)) +expect(actual) != expected +``` + +```objc +// Objective-C + +// Passes if 'actual' is equivalent to 'expected': +expect(actual).to(equal(expected)) + +// Passes if 'actual' is not equivalent to 'expected': +expect(actual).toNot(equal(expected)) +``` + +Values must be `Equatable`, `Comparable`, or subclasses of `NSObject`. +`equal` will always fail when used to compare one or more `nil` values. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Exceptions.md b/Sources/Nimble/Nimble.docc/Matchers/Exceptions.md new file mode 100644 index 000000000..a29ec73eb --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Exceptions.md @@ -0,0 +1,45 @@ +# Exceptions + +```swift +// Swift + +// Passes if 'actual', when evaluated, raises an exception: +expect(actual).to(raiseException()) + +// Passes if 'actual' raises an exception with the given name: +expect(actual).to(raiseException(named: name)) + +// Passes if 'actual' raises an exception with the given name and reason: +expect(actual).to(raiseException(named: name, reason: reason)) + +// Passes if 'actual' raises an exception which passes expectations defined in the given closure: +// (in this case, if the exception's name begins with "a r") +expect { exception.raise() }.to(raiseException { (exception: NSException) in + expect(exception.name).to(beginWith("a r")) +}) +``` + +```objc +// Objective-C + +// Passes if 'actual', when evaluated, raises an exception: +expect(actual).to(raiseException()) + +// Passes if 'actual' raises an exception with the given name +expect(actual).to(raiseException().named(name)) + +// Passes if 'actual' raises an exception with the given name and reason: +expect(actual).to(raiseException().named(name).reason(reason)) + +// Passes if 'actual' raises an exception and it passes expectations defined in the given block: +// (in this case, if name begins with "a r") +expect(actual).to(raiseException().satisfyingBlock(^(NSException *exception) { + expect(exception.name).to(beginWith(@"a r")); +})); +``` + +> Note: Swift currently doesn't have exceptions (see [#220](https://github.com/Quick/Nimble/issues/220#issuecomment-172667064)). +Only Objective-C code can raise exceptions that Nimble will catch. + +> Note: ``raiseException()`` is currentl unavailable when Nimble is installed +through Swift Package Manager. diff --git a/Sources/Nimble/Nimble.docc/Matchers/GroupsOfMatchers.md b/Sources/Nimble/Nimble.docc/Matchers/GroupsOfMatchers.md new file mode 100644 index 000000000..4a0b429ee --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/GroupsOfMatchers.md @@ -0,0 +1,33 @@ +# Matching a value to any of a group of matchers + +```swift +// Swift + +// passes if actual is either less than 10 or greater than 20 +expect(actual).to(satisfyAnyOf(beLessThan(10), beGreaterThan(20))) + +// can include any number of matchers -- the following will pass +// **be careful** -- too many matchers can be the sign of an unfocused test +expect(6).to(satisfyAnyOf(equal(2), equal(3), equal(4), equal(5), equal(6), equal(7))) + +// in Swift you also have the option to use the || operator to achieve a similar function +expect(82).to(beLessThan(50) || beGreaterThan(80)) +``` + +> Note: In swift, you can mix and match synchronous and asynchronous matchers using by `satisfyAnyOf`/`||`. + +```objc +// Objective-C + +// passes if actual is either less than 10 or greater than 20 +expect(actual).to(satisfyAnyOf(beLessThan(@10), beGreaterThan(@20))) + +// can include any number of matchers -- the following will pass +// **be careful** -- too many matchers can be the sign of an unfocused test +expect(@6).to(satisfyAnyOf(equal(@2), equal(@3), equal(@4), equal(@5), equal(@6), equal(@7))) +``` + +Note: This matcher allows you to chain any number of matchers together. This provides flexibility, + but if you find yourself chaining many matchers together in one test, consider whether you + could instead refactor that single test into multiple, more precisely focused tests for + better coverage. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Identity.md b/Sources/Nimble/Nimble.docc/Matchers/Identity.md new file mode 100644 index 000000000..b822a672f --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Identity.md @@ -0,0 +1,34 @@ +# Identity + +```swift +// Swift + +// Passes if 'actual' has the same pointer address as 'expected': +expect(actual).to(beIdenticalTo(expected)) +expect(actual) === expected + +// Passes if 'actual' does not have the same pointer address as 'expected': +expect(actual).toNot(beIdenticalTo(expected)) +expect(actual) !== expected +``` + +It is important to remember that `beIdenticalTo` only makes sense when comparing +types with reference semantics, which have a notion of identity. In Swift, +that means types that are defined as a `class`. + +This matcher will not work when comparing types with value semantics such as +those defined as a `struct` or `enum`. If you need to compare two value types, +consider what it means for instances of your type to be identical. This may mean +comparing individual properties or, if it makes sense to do so, conforming your type +to `Equatable` and using Nimble's equivalence matchers instead. + + +```objc +// Objective-C + +// Passes if 'actual' has the same pointer address as 'expected': +expect(actual).to(beIdenticalTo(expected)); + +// Passes if 'actual' does not have the same pointer address as 'expected': +expect(actual).toNot(beIdenticalTo(expected)); +``` diff --git a/Sources/Nimble/Nimble.docc/Matchers/Map.md b/Sources/Nimble/Nimble.docc/Matchers/Map.md new file mode 100644 index 000000000..4790df6ea --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Map.md @@ -0,0 +1,34 @@ +# Mapping a Value to Another Value + +Sometimes, you only want to match against a property or group of properties. +For example, if you wanted to check that only one or a few properties of a value +are equal to something else. For this, use the ``map`` matcher to convert a value +to another value and check it with a matcher. + +```swift +// Swift + +expect(someValue).to(map(\.someProperty, equal(expectedProperty))) + +// or, for checking multiple different properties: + +expect(someValue).to(satisfyAllOf( + map(\.firstProperty, equal(expectedFirstProperty)), + map({ $0.secondProperty }, equal(expectedSecondProperty)) +)) +``` + +The ``map`` matcher takes in either a closure or a keypath literal, and a matcher +to compose with. It also works with async closures and async matchers. + +In most cases, it is simpler and easier to not use map (that is, prefer +`expect(someValue.property).to(equal(1))` to +`expect(someValue).to(map(\.property, equal(1)))`). But `map` is incredibly +useful when combined with `satisfyAllOf`/`satisfyAnyOf`, especially for checking +a value that cannot conform to `Equatable` (or you don't want to make it +conform to `Equatable`). However, if you find yourself reusing `map` many times +to do a fuzzy-equals of a given type, you will find writing a custom matcher to +be much easier to use and maintain. + +> Warning: When using Polling Expectations be careful not run process intensive +code since the map closure will be ran many times. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Notifications.md b/Sources/Nimble/Nimble.docc/Matchers/Notifications.md new file mode 100644 index 000000000..5cc93aa40 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Notifications.md @@ -0,0 +1,32 @@ +# Notifications + +```swift +// Swift +let testNotification = Notification(name: Notification.Name("Foo"), object: nil) + +// Passes if the closure in expect { ... } posts a notification to the default +// notification center. +expect { + NotificationCenter.default.post(testNotification) +}.to(postNotifications(equal([testNotification]))) + +// Passes if the closure in expect { ... } posts a notification to a given +// notification center +let notificationCenter = NotificationCenter() +expect { + notificationCenter.post(testNotification) +}.to(postNotifications(equal([testNotification]), from: notificationCenter)) + +// Passes if the closure in expect { ... } posts a notification with the provided names to a given +// notification center. Make sure to use this when running tests on Catalina, +// using DistributedNotificationCenter as there is currently no way +// of observing notifications without providing specific names. +let distributedNotificationCenter = DistributedNotificationCenter() +expect { + distributedNotificationCenter.post(testNotification) +}.to(postDistributedNotifications(equal([testNotification]), + from: distributedNotificationCenter, + names: [testNotification.name])) +``` + +> This matcher is only available in Swift. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Result.md b/Sources/Nimble/Nimble.docc/Matchers/Result.md new file mode 100644 index 000000000..071765690 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Result.md @@ -0,0 +1,42 @@ +# Result + +```swift +// Swift +let aResult: Result = .success("Hooray") + +// passes if result is .success +expect(aResult).to(beSuccess()) + +// passes if result value is .success and validates Success value +expect(aResult).to(beSuccess { value in + expect(value).to(equal("Hooray")) +}) + +// passes if the result value is .success and if the Success value matches +// the passed-in matcher (in this case, `equal`) +expect(aResult).to(beSuccess(equal("Hooray"))) + +// passes if the result value is .success and if the Success value equals +// the passed-in value (only available when the Success value is Equatable) +expect(aResult).to(beSuccess("Hooray")) + + +enum AnError: Error { + case somethingHappened +} +let otherResult: Result = .failure(.somethingHappened) + +// passes if result is .failure +expect(otherResult).to(beFailure()) + +// passes if result value is .failure and validates error +expect(otherResult).to(beFailure { error in + expect(error).to(matchError(AnError.somethingHappened)) +}) + +// passes if the result value is .failure and if the Failure value matches +// the passed-in matcher (in this case, `matchError`) +expect(otherResult).to(beFailure(matchError(AnError.somethingHappened))) +``` + +> This matcher is only available in Swift. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Strings.md b/Sources/Nimble/Nimble.docc/Matchers/Strings.md new file mode 100644 index 000000000..3360941f6 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Strings.md @@ -0,0 +1,39 @@ +# Strings + +```swift +// Swift + +// Passes if 'actual' contains 'substring': +expect(actual).to(contain(substring)) + +// Passes if 'actual' begins with 'prefix': +expect(actual).to(beginWith(prefix)) + +// Passes if 'actual' ends with 'suffix': +expect(actual).to(endWith(suffix)) + +// Passes if 'actual' represents the empty string, "": +expect(actual).to(beEmpty()) + +// Passes if 'actual' matches the regular expression defined in 'expected': +expect(actual).to(match(expected)) +``` + +```objc +// Objective-C + +// Passes if 'actual' contains 'substring': +expect(actual).to(contain(expected)); + +// Passes if 'actual' begins with 'prefix': +expect(actual).to(beginWith(prefix)); + +// Passes if 'actual' ends with 'suffix': +expect(actual).to(endWith(suffix)); + +// Passes if 'actual' represents the empty string, "": +expect(actual).to(beEmpty()); + +// Passes if 'actual' matches the regular expression defined in 'expected': +expect(actual).to(match(expected)) +``` diff --git a/Sources/Nimble/Nimble.docc/Matchers/SwiftAssertions.md b/Sources/Nimble/Nimble.docc/Matchers/SwiftAssertions.md new file mode 100644 index 000000000..676f39b70 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/SwiftAssertions.md @@ -0,0 +1,33 @@ +# Swift Assertions + +If you're using Swift, you can use the `throwAssertion` matcher to check if an assertion is thrown (e.g. `fatalError()`). This is made possible by [@mattgallagher](https://github.com/mattgallagher)'s [CwlPreconditionTesting](https://github.com/mattgallagher/CwlPreconditionTesting) library. + +```swift +// Swift + +// Passes if 'somethingThatThrows()' throws an assertion, +// such as by calling 'fatalError()' or if a precondition fails: +expect { try somethingThatThrows() }.to(throwAssertion()) +expect { () -> Void in fatalError() }.to(throwAssertion()) +expect { precondition(false) }.to(throwAssertion()) + +// Passes if throwing an NSError is not equal to throwing an assertion: +expect { throw NSError(domain: "test", code: 0, userInfo: nil) }.toNot(throwAssertion()) + +// Passes if the code after the precondition check is not run: +var reachedPoint1 = false +var reachedPoint2 = false +expect { + reachedPoint1 = true + precondition(false, "condition message") + reachedPoint2 = true +}.to(throwAssertion()) + +expect(reachedPoint1) == true +expect(reachedPoint2) == false +``` + +Notes: + +* This feature is only available in Swift. +* The tvOS simulator is supported, but using a different mechanism, requiring you to turn off the `Debug executable` scheme setting for your tvOS scheme's Test configuration. diff --git a/Sources/Nimble/Nimble.docc/Matchers/SwiftErrors.md b/Sources/Nimble/Nimble.docc/Matchers/SwiftErrors.md new file mode 100644 index 000000000..019e0562b --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/SwiftErrors.md @@ -0,0 +1,49 @@ +# Swift Error Handling + +You can use the `throwError` matcher to check if an error is thrown. + +```swift +// Swift + +// Passes if 'somethingThatThrows()' throws an 'Error': +expect { try somethingThatThrows() }.to(throwError()) + +// Passes if 'somethingThatThrows()' throws an error within a particular domain: +expect { try somethingThatThrows() }.to(throwError { (error: Error) in + expect(error._domain).to(equal(NSCocoaErrorDomain)) +}) + +// Passes if 'somethingThatThrows()' throws a particular error enum case: +expect { try somethingThatThrows() }.to(throwError(NSCocoaError.PropertyListReadCorruptError)) + +// Passes if 'somethingThatThrows()' throws an error of a particular type: +expect { try somethingThatThrows() }.to(throwError(errorType: NimbleError.self)) +``` + +When working directly with `Error` values, using the `matchError` matcher +allows you to perform certain checks on the error itself without having to +explicitly cast the error. + +The `matchError` matcher allows you to check whether or not the error: + +- is the same _type_ of error you are expecting. +- represents a particular error value that you are expecting. + +This can be useful when using `Result` or `Promise` types, for example. + +```swift +// Swift + +let actual: Error = ... + +// Passes if 'actual' represents any error value from the NimbleErrorEnum type: +expect(actual).to(matchError(NimbleErrorEnum.self)) + +// Passes if 'actual' represents the case 'timeout' from the NimbleErrorEnum type: +expect(actual).to(matchError(NimbleErrorEnum.timeout)) + +// Passes if 'actual' contains an NSError equal to the one provided: +expect(actual).to(matchError(NSError(domain: "err", code: 123, userInfo: nil))) +``` + +> Note: This feature is only available in Swift. diff --git a/Sources/Nimble/Nimble.docc/Matchers/Truthiness.md b/Sources/Nimble/Nimble.docc/Matchers/Truthiness.md new file mode 100644 index 000000000..57ef26ed0 --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/Truthiness.md @@ -0,0 +1,37 @@ +# Truthiness + +```swift +// Passes if 'actual' is not nil, true, or an object with a boolean value of true: +expect(actual).to(beTruthy()) + +// Passes if 'actual' is only true (not nil or an object conforming to Boolean true): +expect(actual).to(beTrue()) + +// Passes if 'actual' is nil, false, or an object with a boolean value of false: +expect(actual).to(beFalsy()) + +// Passes if 'actual' is only false (not nil or an object conforming to Boolean false): +expect(actual).to(beFalse()) + +// Passes if 'actual' is nil: +expect(actual).to(beNil()) +``` + +```objc +// Objective-C + +// Passes if 'actual' is not nil, true, or an object with a boolean value of true: +expect(actual).to(beTruthy()); + +// Passes if 'actual' is only true (not nil or an object conforming to Boolean true): +expect(actual).to(beTrue()); + +// Passes if 'actual' is nil, false, or an object with a boolean value of false: +expect(actual).to(beFalsy()); + +// Passes if 'actual' is only false (not nil or an object conforming to Boolean false): +expect(actual).to(beFalse()); + +// Passes if 'actual' is nil: +expect(actual).to(beNil()); +``` diff --git a/Sources/Nimble/Nimble.docc/Matchers/TypeChecking.md b/Sources/Nimble/Nimble.docc/Matchers/TypeChecking.md new file mode 100644 index 000000000..a3bb7f87c --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Matchers/TypeChecking.md @@ -0,0 +1,61 @@ +# Type Checking + +Nimble supports checking the type membership of any kind of object, whether +Objective-C conformant or not. + +```swift +// Swift + +protocol SomeProtocol{} +class SomeClassConformingToProtocol: SomeProtocol{} +struct SomeStructConformingToProtocol: SomeProtocol{} + +// The following tests pass +expect(1).to(beAKindOf(Int.self)) +expect("turtle").to(beAKindOf(String.self)) + +let classObject = SomeClassConformingToProtocol() +expect(classObject).to(beAKindOf(SomeProtocol.self)) +expect(classObject).to(beAKindOf(SomeClassConformingToProtocol.self)) +expect(classObject).toNot(beAKindOf(SomeStructConformingToProtocol.self)) + +let structObject = SomeStructConformingToProtocol() +expect(structObject).to(beAKindOf(SomeProtocol.self)) +expect(structObject).to(beAKindOf(SomeStructConformingToProtocol.self)) +expect(structObject).toNot(beAKindOf(SomeClassConformingToProtocol.self)) +``` + +```objc +// Objective-C + +// The following tests pass +NSMutableArray *array = [NSMutableArray array]; +expect(array).to(beAKindOf([NSArray class])); +expect(@1).toNot(beAKindOf([NSNull class])); +``` + +Objects can be tested for their exact types using the `beAnInstanceOf` matcher: + +```swift +// Swift + +protocol SomeProtocol{} +class SomeClassConformingToProtocol: SomeProtocol{} +struct SomeStructConformingToProtocol: SomeProtocol{} + +// Unlike the 'beKindOf' matcher, the 'beAnInstanceOf' matcher only +// passes if the object is the EXACT type requested. The following +// tests pass -- note its behavior when working in an inheritance hierarchy. +expect(1).to(beAnInstanceOf(Int.self)) +expect("turtle").to(beAnInstanceOf(String.self)) + +let classObject = SomeClassConformingToProtocol() +expect(classObject).toNot(beAnInstanceOf(SomeProtocol.self)) +expect(classObject).to(beAnInstanceOf(SomeClassConformingToProtocol.self)) +expect(classObject).toNot(beAnInstanceOf(SomeStructConformingToProtocol.self)) + +let structObject = SomeStructConformingToProtocol() +expect(structObject).toNot(beAnInstanceOf(SomeProtocol.self)) +expect(structObject).to(beAnInstanceOf(SomeStructConformingToProtocol.self)) +expect(structObject).toNot(beAnInstanceOf(SomeClassConformingToProtocol.self)) +``` diff --git a/Sources/Nimble/Nimble.docc/Nimble.md b/Sources/Nimble/Nimble.docc/Nimble.md new file mode 100644 index 000000000..fdde2480f --- /dev/null +++ b/Sources/Nimble/Nimble.docc/Nimble.md @@ -0,0 +1,49 @@ +# ``Nimble`` + +**Nimble** is a testing framework for verifying the outcomes and Swift or Objective-C expressions. + +## Overview + +Nimbel provides 3 things: + +- A way to verify expressions using a natural, easily understood language. +- **Matchers**, or functions to check the outcome of an expression. +- Means of requiring an **Expectation** - an expression-matcher combination to pass before continuing. +- A way to check expressions that change over time. + +## Topics + +### Guides + +- +- +- +- +- +- +- + +### Matchers + +Nimble includes a wide variety of matcher functions. + +- +- +- +- +- +- +- +- +- +- +- +- +- +- + +#### Collections + +- +- +- diff --git a/docs/Classes.html b/docs/Classes.html deleted file mode 100644 index 3ab36d709..000000000 --- a/docs/Classes.html +++ /dev/null @@ -1,1712 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Classes

-

The following classes are available globally.

- -
-
-
-
    -
  • -
    - - - - AssertionDispatcher - -
    -
    -
    -
    -
    -
    -

    AssertionDispatcher allows multiple AssertionHandlers to receive -assertion messages.

    - -

    @warning Does not fully dispatch if one of the handlers raises an exception. - This is possible with XCTest-based assertion handlers.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class AssertionDispatcher : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AssertionRecorder - -
    -
    -
    -
    -
    -
    -

    An AssertionHandler that silently records assertions that Nimble makes. -This is useful for testing failure messages for matchers.

    - -

    @see AssertionHandler

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class AssertionRecorder : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBExpectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBExpectation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NimbleXCTestHandler - -
    -
    -
    -
    -
    -
    -

    Default handler for Nimble. This assertion handler passes failures along to -XCTest.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NimbleXCTestHandler : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Alternative handler for Nimble. This assertion handler passes failures along -to XCTest by attempting to reduce the failure message size.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NimbleShortXCTestHandler : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Helper class providing access to the currently executing XCTestCase instance, if any

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -final public class CurrentTestCaseTracker : NSObject, XCTestObservation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBWait - -
    -
    -
    -
    -
    -
    -

    Only classes, protocols, methods, properties, and subscript declarations can be -bridges to Objective-C via the @objc keyword. This class encapsulates callback-style -asynchronous waiting logic so that it may be called from Objective-C and Swift.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBWait : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBExpectationMessage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBExpectationMessage : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - FailureMessage - -
    -
    -
    -
    -
    -
    -

    Encapsulates the failure message that matchers can report to the end user.

    - -

    This is shared state between Nimble and matchers that mutate this value.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class FailureMessage : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBMatcher - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBMatcher : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBObjCBeCloseToMatcher : NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBMatcherResult - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    final public class NMBMatcherResult : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBMatcherStatus - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    final public class NMBMatcherStatus : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBObjCRaiseExceptionMatcher : NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Without Mach exceptions or the Objective-C runtime, there’s nothing to put in the exception object. It’s really just a boolean – either a SIGILL was caught or not.

    - -
    -
    -
    -
  • -
  • -
    - - - - SourceLocation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public final class SourceLocation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBStringer - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class NMBStringer : NSObject
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/AssertionDispatcher.html b/docs/Classes/AssertionDispatcher.html deleted file mode 100644 index 1497511fc..000000000 --- a/docs/Classes/AssertionDispatcher.html +++ /dev/null @@ -1,1295 +0,0 @@ - - - - AssertionDispatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionDispatcher

-
-
- -
public class AssertionDispatcher : AssertionHandler
- -
-
-

AssertionDispatcher allows multiple AssertionHandlers to receive -assertion messages.

- -

@warning Does not fully dispatch if one of the handlers raises an exception. - This is possible with XCTest-based assertion handlers.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/Classes/AssertionRecorder.html b/docs/Classes/AssertionRecorder.html deleted file mode 100644 index c6b84b7a4..000000000 --- a/docs/Classes/AssertionRecorder.html +++ /dev/null @@ -1,1321 +0,0 @@ - - - - AssertionRecorder Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionRecorder

-
-
- -
public class AssertionRecorder : AssertionHandler
- -
-
-

An AssertionHandler that silently records assertions that Nimble makes. -This is useful for testing failure messages for matchers.

- -

@see AssertionHandler

- -
-
-
-
    -
  • -
    - - - - assertions - -
    -
    -
    -
    -
    -
    -

    All the assertions that were captured by this recorder

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var assertions: [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func assert(_ assertion: Bool, message: FailureMessage, location: SourceLocation)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/CurrentTestCaseTracker.html b/docs/Classes/CurrentTestCaseTracker.html deleted file mode 100644 index 54ae113d6..000000000 --- a/docs/Classes/CurrentTestCaseTracker.html +++ /dev/null @@ -1,1320 +0,0 @@ - - - - CurrentTestCaseTracker Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

CurrentTestCaseTracker

-
-
- -
@objc
-final public class CurrentTestCaseTracker : NSObject, XCTestObservation
- -
-
-

Helper class providing access to the currently executing XCTestCase instance, if any

- -
-
-
-
    -
  • -
    - - - - sharedInstance - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public static let sharedInstance: CurrentTestCaseTracker
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testCaseWillStart(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func testCaseWillStart(_ testCase: XCTestCase)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testCaseDidFinish(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func testCaseDidFinish(_ testCase: XCTestCase)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/FailureMessage.html b/docs/Classes/FailureMessage.html deleted file mode 100644 index 6c855c36f..000000000 --- a/docs/Classes/FailureMessage.html +++ /dev/null @@ -1,1511 +0,0 @@ - - - - FailureMessage Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

FailureMessage

-
-
- -
public class FailureMessage : NSObject
- -
-
-

Encapsulates the failure message that matchers can report to the end user.

- -

This is shared state between Nimble and matchers that mutate this value.

- -
-
-
-
    -
  • -
    - - - - expected - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var expected: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - actualValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var actualValue: String?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var to: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - postfixMessage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var postfixMessage: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - postfixActual - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var postfixActual: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - extendedMessage - -
    -
    -
    -
    -
    -
    -

    An optional message that will be appended as a new line and provides additional details -about the failure. This message will only be visible in the issue navigator / in logs but -not directly in the source editor since only a single line is presented there.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var extendedMessage: String?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - userDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var userDescription: String?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - stringValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringValue: String { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public override init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(stringValue:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(stringValue: String)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBExpectation.html b/docs/Classes/NMBExpectation.html deleted file mode 100644 index 17fdabd9d..000000000 --- a/docs/Classes/NMBExpectation.html +++ /dev/null @@ -1,1881 +0,0 @@ - - - - NMBExpectation Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBExpectation

-
-
- -
public class NMBExpectation : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public init(actualBlock: @escaping () -> NSObject?, negative: Bool, file: FileString, line: UInt)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withTimeout - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var withTimeout: (TimeInterval) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var to: (NMBMatcher) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toWithDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toWithDescription: (NMBMatcher, String) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNot: (NMBMatcher) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNotWithDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNotWithDescription: (NMBMatcher, String) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var notTo: (NMBMatcher) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notToWithDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var notToWithDescription: (NMBMatcher, String) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toEventually - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventually: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventuallyWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toEventuallyNot - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventuallyNot: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventuallyNotWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNotEventually - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNotEventually: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNotEventuallyWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNever - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNever: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNeverWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - neverTo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var neverTo: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var neverToWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toAlways - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toAlways: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toAlwaysWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - alwaysTo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var alwaysTo: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var alwaysToWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func failWithMessage(_ message: String, file: FileString, line: UInt)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBExpectationMessage.html b/docs/Classes/NMBExpectationMessage.html deleted file mode 100644 index 6e3eb381d..000000000 --- a/docs/Classes/NMBExpectationMessage.html +++ /dev/null @@ -1,1507 +0,0 @@ - - - - NMBExpectationMessage Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBExpectationMessage

-
-
- -
public class NMBExpectationMessage : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - init(expectedTo:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expectedTo message: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expectedActualValueTo message: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expectedActualValueTo message: String, customActualValue actual: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(fail:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(fail message: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(prepend:child:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(prepend message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(appendedMessage message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(prependedMessage message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(details:child:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(details message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appendedBeNilHint() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appendedBeNilHint() -> NMBExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toSwift() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toSwift() -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBMatcher.html b/docs/Classes/NMBMatcher.html deleted file mode 100644 index b75d8455a..000000000 --- a/docs/Classes/NMBMatcher.html +++ /dev/null @@ -1,2004 +0,0 @@ - - - - NMBMatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBMatcher

-
-
- -
public class NMBMatcher : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - init(matcher:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(matcher: @escaping MatcherBlock)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(predicate:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(predicate: @escaping MatcherBlock)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPassMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func allPassMatcher(_ matcher: NMBMatcher) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAKindOfMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beAKindOfMatcher(_ expected: AnyClass) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beAnInstanceOfMatcher(_ expected: AnyClass) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beCloseToMatcher(_ expected: NSNumber, within: CDouble) -> NMBObjCBeCloseToMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmptyMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beEmptyMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beGreaterThanMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beGreaterThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beIdenticalToMatcher(_ expected: NSObject?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beLessThanMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beLessThanMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beLessThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

beTruthy() / beFalsy() -

-
-
-
    -
  • -
    - - - - beTruthyMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beTruthyMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalsyMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beFalsyMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beTrueMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beTrueMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalseMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beFalseMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beNilMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beNilMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWithMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beginWithMatcher(_ expected: Any) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - containMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func containMatcher(_ expected: [NSObject]) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func containElementSatisfyingMatcher(_ matcher: @escaping ((NSObject) -> Bool)) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWithMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func endWithMatcher(_ expected: Any) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equalMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func equalMatcher(_ expected: NSObject) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - haveCountMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func haveCountMatcher(_ expected: NSNumber) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func matchMatcher(_ expected: NSString) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func raiseExceptionMatcher() -> NMBObjCRaiseExceptionMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func satisfyAllOfMatcher(_ matchers: [NMBMatcher]) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func satisfyAnyOfMatcher(_ matchers: [NMBMatcher]) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBMatcherResult.html b/docs/Classes/NMBMatcherResult.html deleted file mode 100644 index b096a0269..000000000 --- a/docs/Classes/NMBMatcherResult.html +++ /dev/null @@ -1,1372 +0,0 @@ - - - - NMBMatcherResult Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBMatcherResult

-
-
- -
final public class NMBMatcherResult : NSObject
- -
-
-

Undocumented

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/Classes/NMBMatcherStatus.html b/docs/Classes/NMBMatcherStatus.html deleted file mode 100644 index 7c23916e1..000000000 --- a/docs/Classes/NMBMatcherStatus.html +++ /dev/null @@ -1,1453 +0,0 @@ - - - - NMBMatcherStatus Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBMatcherStatus

-
-
- -
final public class NMBMatcherStatus : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - matches - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let matches: NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - doesNotMatch - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let doesNotMatch: NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let fail: NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - hash - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public override var hash: Int { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - isEqual(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public override func isEqual(_ object: Any?) -> Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - from(status:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func from(status: MatcherStatus) -> NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - from(bool:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func from(bool success: Bool) -> NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toSwift() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toSwift() -> MatcherStatus
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBObjCBeCloseToMatcher.html b/docs/Classes/NMBObjCBeCloseToMatcher.html deleted file mode 100644 index 26a1dccb9..000000000 --- a/docs/Classes/NMBObjCBeCloseToMatcher.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NMBObjCBeCloseToMatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBObjCBeCloseToMatcher

-
-
- -
public class NMBObjCBeCloseToMatcher : NMBMatcher
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - within - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var within: (CDouble) -> NMBObjCBeCloseToMatcher { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBObjCRaiseExceptionMatcher.html b/docs/Classes/NMBObjCRaiseExceptionMatcher.html deleted file mode 100644 index 0eb9a61c1..000000000 --- a/docs/Classes/NMBObjCRaiseExceptionMatcher.html +++ /dev/null @@ -1,1349 +0,0 @@ - - - - NMBObjCRaiseExceptionMatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBObjCRaiseExceptionMatcher

-
-
- -
public class NMBObjCRaiseExceptionMatcher : NMBMatcher
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - named - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var named: (_ name: String) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var reason: (_ reason: String?) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - userInfo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var userInfo: (_ userInfo: NSDictionary?) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyingBlock - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var satisfyingBlock: (_ block: ((NSException) -> Void)?) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBStringer.html b/docs/Classes/NMBStringer.html deleted file mode 100644 index 77a2a33a5..000000000 --- a/docs/Classes/NMBStringer.html +++ /dev/null @@ -1,1266 +0,0 @@ - - - - NMBStringer Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBStringer

-
-
- -
@objc
-public class NMBStringer : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - stringify(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func stringify(_ obj: Any?) -> String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NMBWait.html b/docs/Classes/NMBWait.html deleted file mode 100644 index 24272fa9b..000000000 --- a/docs/Classes/NMBWait.html +++ /dev/null @@ -1,1382 +0,0 @@ - - - - NMBWait Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBWait

-
-
- -
public class NMBWait : NSObject
- -
-
-

Only classes, protocols, methods, properties, and subscript declarations can be -bridges to Objective-C via the @objc keyword. This class encapsulates callback-style -asynchronous waiting logic so that it may be called from Objective-C and Swift.

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func until(
    -    timeout: TimeInterval,
    -    file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class func until(
    -    timeout: NimbleTimeInterval,
    -    file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class func throwableUntil(
    -    timeout: NimbleTimeInterval,
    -    file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) throws -> Void)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - until(_:line:action:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc(untilFile:line:action:)
    -public class func until(
    -    _ file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - until(_:line:action:) - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Classes/NimbleShortXCTestHandler.html b/docs/Classes/NimbleShortXCTestHandler.html deleted file mode 100644 index d97e25366..000000000 --- a/docs/Classes/NimbleShortXCTestHandler.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NimbleShortXCTestHandler Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NimbleShortXCTestHandler

-
-
- -
public class NimbleShortXCTestHandler : AssertionHandler
- -
-
-

Alternative handler for Nimble. This assertion handler passes failures along -to XCTest by attempting to reduce the failure message size.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/Classes/NimbleXCTestHandler.html b/docs/Classes/NimbleXCTestHandler.html deleted file mode 100644 index 619174d7d..000000000 --- a/docs/Classes/NimbleXCTestHandler.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NimbleXCTestHandler Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NimbleXCTestHandler

-
-
- -
public class NimbleXCTestHandler : AssertionHandler
- -
-
-

Default handler for Nimble. This assertion handler passes failures along to -XCTest.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/Classes/SourceLocation.html b/docs/Classes/SourceLocation.html deleted file mode 100644 index 2f76893bc..000000000 --- a/docs/Classes/SourceLocation.html +++ /dev/null @@ -1,1318 +0,0 @@ - - - - SourceLocation Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

SourceLocation

-
-
- -
public final class SourceLocation : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: FileString
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: UInt
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override public var description: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums.html b/docs/Enums.html deleted file mode 100644 index 190843125..000000000 --- a/docs/Enums.html +++ /dev/null @@ -1,1401 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
-
-
    -
  • -
    - - - - ExpectationStatus - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum ExpectationStatus : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ExpectationMessage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public indirect enum ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ExpectationStyle - -
    -
    -
    -
    -
    -
    -

    The Expectation style intended for comparison to a MatcherStatus.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum ExpectationStyle
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MatcherStatus - -
    -
    -
    -
    -
    -
    -

    MatcherStatus is a trinary that indicates if a Matcher matches a given value or not

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum MatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ToSucceedResult - -
    -
    -
    -
    -
    -
    -

    Used by the succeed matcher.

    - -

    This is the return type for the closure.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum ToSucceedResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NimbleTimeInterval - -
    -
    -
    -
    -
    -
    -

    A reimplementation of DispatchTimeInterval without the never case, and conforming to Sendable.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum NimbleTimeInterval : Sendable, Equatable
    -
    extension NimbleTimeInterval: CustomStringConvertible
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums/ExpectationMessage.html b/docs/Enums/ExpectationMessage.html deleted file mode 100644 index 4a92ad5f4..000000000 --- a/docs/Enums/ExpectationMessage.html +++ /dev/null @@ -1,1647 +0,0 @@ - - - - ExpectationMessage Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationMessage

-
-
- -
public indirect enum ExpectationMessage
- -
-
-

Undocumented

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    includes actual value in output (“expected to , got ”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case expectedActualValueTo(String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    uses a custom actual value string in output (“expected to , got ”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case expectedCustomValueTo(String, actual: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expectedTo(_:) - -
    -
    -
    -
    -
    -
    -

    excludes actual value in output (“expected to ”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case expectedTo(String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:) - -
    -
    -
    -
    -
    -
    -

    allows any free-form message (“”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fail(String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - prepends(_:_:) - -
    -
    -
    -
    -
    -
    -

    Not Fully Implemented Yet.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case prepends(String, ExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appends(_:_:) - -
    -
    -
    -
    -
    -
    -

    appends after an existing message (“ (use beNil() to match nils)”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case appends(ExpectationMessage, String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - details(_:_:) - -
    -
    -
    -
    -
    -
    -

    provides long-form multi-line explainations (“\n\n”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case details(ExpectationMessage, String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expectedMessage - -
    -
    -
    -
    -
    -
    -

    Returns the smallest message after the “expected to” string that summarizes the error.

    - -

    Returns the message part from ExpectationMessage, ignoring all .appends and .details.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var expectedMessage: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appended(message:) - -
    -
    -
    -
    -
    -
    -

    Appends a message after the primary expectation message

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appended(message: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appendedBeNilHint() - -
    -
    -
    -
    -
    -
    -

    Appends a message hinting to use beNil() for when the actual value given was nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appendedBeNilHint() -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appended(details:) - -
    -
    -
    -
    -
    -
    -

    Appends a detailed (aka - multiline) message after the primary expectation message -Detailed messages will be placed after .appended(message:) calls.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appended(details: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Replaces a primary expectation with one returned by f. Preserves all composite expectations -that were built upon it (aka - all appended(message:) and appended(details:).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func replacedExpectation(_ f: @escaping (ExpectationMessage) -> ExpectationMessage) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Wraps a primary expectation with text before and after it. -Alias to prepended(message: before).appended(message: after)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func wrappedExpectation(before: String, after: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Prepends a message by modifying the primary expectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func prepended(expectation message: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Converts the tree of ExpectationMessages into a final built string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toString(actual: String, expected: String = "expected", to: String = "to") -> String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums/ExpectationStatus.html b/docs/Enums/ExpectationStatus.html deleted file mode 100644 index 6f9d73b25..000000000 --- a/docs/Enums/ExpectationStatus.html +++ /dev/null @@ -1,1345 +0,0 @@ - - - - ExpectationStatus Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationStatus

-
-
- -
public enum ExpectationStatus : Equatable
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - pending - -
    -
    -
    -
    -
    -
    -

    No matchers have been performed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case pending
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - passed - -
    -
    -
    -
    -
    -
    -

    All matchers have passed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case passed
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - failed - -
    -
    -
    -
    -
    -
    -

    All matchers have failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case failed
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - mixed - -
    -
    -
    -
    -
    -
    -

    Multiple matchers have been peformed, with at least one passing and one failing.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case mixed
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums/ExpectationStyle.html b/docs/Enums/ExpectationStyle.html deleted file mode 100644 index 3cd7cc87a..000000000 --- a/docs/Enums/ExpectationStyle.html +++ /dev/null @@ -1,1291 +0,0 @@ - - - - ExpectationStyle Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationStyle

-
-
- -
public enum ExpectationStyle
- -
-
-

The Expectation style intended for comparison to a MatcherStatus.

- -
-
-
-
    -
  • -
    - - - - toMatch - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case toMatch
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNotMatch - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case toNotMatch
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums/MatcherStatus.html b/docs/Enums/MatcherStatus.html deleted file mode 100644 index bd9f989cb..000000000 --- a/docs/Enums/MatcherStatus.html +++ /dev/null @@ -1,1383 +0,0 @@ - - - - MatcherStatus Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

MatcherStatus

-
-
- -
public enum MatcherStatus
- -
-
-

MatcherStatus is a trinary that indicates if a Matcher matches a given value or not

- -
-
-
-
    -
  • -
    - - - - matches - -
    -
    -
    -
    -
    -
    -

    Matches indicates if the matcher / matcher passes with the given value

    - -

    For example, equals(1) returns .matches for expect(1).to(equal(1)).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case matches
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - doesNotMatch - -
    -
    -
    -
    -
    -
    -

    DoesNotMatch indicates if the matcher fails with the given value, but would -succeed if the expectation was inverted.

    - -

    For example, equals(2) returns .doesNotMatch for expect(1).toNot(equal(2)).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case doesNotMatch
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail - -
    -
    -
    -
    -
    -
    -

    Fail indicates the matcher will never satisfy with the given value in any case. -A perfect example is that most matchers fail whenever given nil.

    - -

    Using equal(1) fails both expect(nil).to(equal(1)) and expect(nil).toNot(equal(1)). -Note: Matcher’s requireNonNil property will also provide this feature mostly for free. - Your matcher will still need to guard against nils, but error messaging will be - handled for you.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fail
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(bool:) - -
    -
    -
    -
    -
    -
    -

    Converts a boolean to either .matches (if true) or .doesNotMatch (if false).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(bool matches: Bool)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toObjectiveC() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toObjectiveC() -> NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums/NimbleTimeInterval.html b/docs/Enums/NimbleTimeInterval.html deleted file mode 100644 index 0d2d80672..000000000 --- a/docs/Enums/NimbleTimeInterval.html +++ /dev/null @@ -1,1479 +0,0 @@ - - - - NimbleTimeInterval Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NimbleTimeInterval

-
-
- -
public enum NimbleTimeInterval : Sendable, Equatable
-
extension NimbleTimeInterval: CustomStringConvertible
- -
-
-

A reimplementation of DispatchTimeInterval without the never case, and conforming to Sendable.

- -
-
-
-
    -
  • -
    - - - - seconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case seconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - milliseconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case milliseconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - microseconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case microseconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - nanoseconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case nanoseconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: NimbleTimeInterval, rhs: NimbleTimeInterval) -> Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - dispatchTimeInterval - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var dispatchTimeInterval: DispatchTimeInterval { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - nanoseconds - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var nanoseconds: UInt64 { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - timeInterval - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var timeInterval: TimeInterval { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Enums/ToSucceedResult.html b/docs/Enums/ToSucceedResult.html deleted file mode 100644 index e29140326..000000000 --- a/docs/Enums/ToSucceedResult.html +++ /dev/null @@ -1,1293 +0,0 @@ - - - - ToSucceedResult Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ToSucceedResult

-
-
- -
public enum ToSucceedResult
- -
-
-

Used by the succeed matcher.

- -

This is the return type for the closure.

- -
-
-
-
    -
  • -
    - - - - succeeded - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case succeeded
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - failed(reason:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case failed(reason: String)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions.html b/docs/Extensions.html deleted file mode 100644 index d18e8da7f..000000000 --- a/docs/Extensions.html +++ /dev/null @@ -1,1966 +0,0 @@ - - - - Extensions Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Extensions

-

The following extensions are available globally.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/Extensions/AnySequence.html b/docs/Extensions/AnySequence.html deleted file mode 100644 index b97e17705..000000000 --- a/docs/Extensions/AnySequence.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - AnySequence Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/Array.html b/docs/Extensions/Array.html deleted file mode 100644 index 50843ebc5..000000000 --- a/docs/Extensions/Array.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - Array Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/Data.html b/docs/Extensions/Data.html deleted file mode 100644 index 7cda82ea9..000000000 --- a/docs/Extensions/Data.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - Data Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/Date.html b/docs/Extensions/Date.html deleted file mode 100644 index c9372f85b..000000000 --- a/docs/Extensions/Date.html +++ /dev/null @@ -1,1319 +0,0 @@ - - - - Date Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Date

-
-
- -
extension Date: NMBDoubleConvertible
-
extension Date: TestOutputStringConvertible
-
extension Date: @unchecked Sendable
- -
-
- -
-
-
-
    -
  • -
    - - - - doubleValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var doubleValue: CDouble { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - advanced(by:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func advanced(by nimbleTimeInterval: NimbleTimeInterval) -> Date
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Double.html b/docs/Extensions/Double.html deleted file mode 100644 index 54eb1fad3..000000000 --- a/docs/Extensions/Double.html +++ /dev/null @@ -1,1290 +0,0 @@ - - - - Double Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Double

-
-
- -
extension Double: ExpressibleByBooleanLiteral
-
extension Double: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Float.html b/docs/Extensions/Float.html deleted file mode 100644 index e8194c3e5..000000000 --- a/docs/Extensions/Float.html +++ /dev/null @@ -1,1290 +0,0 @@ - - - - Float Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Float

-
-
- -
extension Float: ExpressibleByBooleanLiteral
-
extension Float: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Int.html b/docs/Extensions/Int.html deleted file mode 100644 index 6d6c2e2b2..000000000 --- a/docs/Extensions/Int.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int

-
-
- -
extension Int: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Int16.html b/docs/Extensions/Int16.html deleted file mode 100644 index e82972cec..000000000 --- a/docs/Extensions/Int16.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int16 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int16

-
-
- -
extension Int16: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Int32.html b/docs/Extensions/Int32.html deleted file mode 100644 index cdc017258..000000000 --- a/docs/Extensions/Int32.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int32 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int32

-
-
- -
extension Int32: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Int64.html b/docs/Extensions/Int64.html deleted file mode 100644 index a629aaccb..000000000 --- a/docs/Extensions/Int64.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int64 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int64

-
-
- -
extension Int64: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/Int8.html b/docs/Extensions/Int8.html deleted file mode 100644 index d141678d2..000000000 --- a/docs/Extensions/Int8.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int8 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int8

-
-
- -
extension Int8: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/NSArray.html b/docs/Extensions/NSArray.html deleted file mode 100644 index 65e172d7e..000000000 --- a/docs/Extensions/NSArray.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NSArray Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/NSDate.html b/docs/Extensions/NSDate.html deleted file mode 100644 index d0b89c531..000000000 --- a/docs/Extensions/NSDate.html +++ /dev/null @@ -1,1291 +0,0 @@ - - - - NSDate Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NSDate

-
-
- -
extension NSDate: NMBDoubleConvertible
-
extension NSDate: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - doubleValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var doubleValue: CDouble { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/NSIndexSet.html b/docs/Extensions/NSIndexSet.html deleted file mode 100644 index 75e05d666..000000000 --- a/docs/Extensions/NSIndexSet.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NSIndexSet Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/NSNumber.html b/docs/Extensions/NSNumber.html deleted file mode 100644 index 8d65bc829..000000000 --- a/docs/Extensions/NSNumber.html +++ /dev/null @@ -1,1292 +0,0 @@ - - - - NSNumber Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NSNumber

-
-
- -
extension NSNumber: NMBDoubleConvertible
-
extension NSNumber: NMBComparable
-
extension NSNumber: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - NMB_compare(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/NSString.html b/docs/Extensions/NSString.html deleted file mode 100644 index 1a2de679a..000000000 --- a/docs/Extensions/NSString.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - NSString Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/String.html b/docs/Extensions/String.html deleted file mode 100644 index 979726b3d..000000000 --- a/docs/Extensions/String.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - String Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/TimeInterval.html b/docs/Extensions/TimeInterval.html deleted file mode 100644 index 490ba7209..000000000 --- a/docs/Extensions/TimeInterval.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - TimeInterval Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/Extensions/UInt.html b/docs/Extensions/UInt.html deleted file mode 100644 index 1f5e1215d..000000000 --- a/docs/Extensions/UInt.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt

-
-
- -
extension UInt: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/UInt16.html b/docs/Extensions/UInt16.html deleted file mode 100644 index 58d82f62f..000000000 --- a/docs/Extensions/UInt16.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt16 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt16

-
-
- -
extension UInt16: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/UInt32.html b/docs/Extensions/UInt32.html deleted file mode 100644 index 2187727fb..000000000 --- a/docs/Extensions/UInt32.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt32 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt32

-
-
- -
extension UInt32: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/UInt64.html b/docs/Extensions/UInt64.html deleted file mode 100644 index d5d5b446f..000000000 --- a/docs/Extensions/UInt64.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt64 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt64

-
-
- -
extension UInt64: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Extensions/UInt8.html b/docs/Extensions/UInt8.html deleted file mode 100644 index bebf61837..000000000 --- a/docs/Extensions/UInt8.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt8 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt8

-
-
- -
extension UInt8: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Functions.html b/docs/Functions.html deleted file mode 100644 index b9e37111e..000000000 --- a/docs/Functions.html +++ /dev/null @@ -1,10197 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Functions

-

The following functions are available globally.

- -
-
-
-
    -
  • -
    - - - - withAssertionHandler(_:file:line:closure:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Allows you to temporarily replace the current Nimble assertion handler with -the one provided for the scope of the closure.

    - -

    Once the closure finishes, then the original Nimble assertion handler is restored.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -

    @see AssertionHandler

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler,
    -                                 file: FileString = #file,
    -                                 line: UInt = #line,
    -                                 closure: () async throws -> Void) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - gatherExpectations(silently:closure:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Captures expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about expectations -that occur within a closure.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherFailingExpectations

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherExpectations(silently: Bool = false, closure: () async -> Void) async -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - gatherFailingExpectations(silently:closure:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Captures failed expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about failed -expectations that occur within a closure.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherExpectations -@see raiseException source for an example use case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherFailingExpectations(silently: Bool = false, closure: () async -> Void) async -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allows you to temporarily replace the current Nimble assertion handler with -the one provided for the scope of the closure.

    - -

    @warning -This form of withAssertionHandler does not work in any kind of -async context. Use the async form of withAssertionHandler -if you are running tests in an async context.

    - -

    Once the closure finishes, then the original Nimble assertion handler is restored.

    - -

    @see AssertionHandler

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler,
    -                                 file: FileString = #file,
    -                                 line: UInt = #line,
    -                                 closure: () throws -> Void)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Captures expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about expectations -that occur within a closure.

    - -

    @warning -This form of gatherExpectations does not work in any kind of -async context. Use the async form of gatherExpectations -if you are running tests in an async context.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherFailingExpectations

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Captures failed expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about failed -expectations that occur within a closure.

    - -

    @warning -This form of gatherFailingExpectations does not work in any kind of -async context. Use the async form of gatherFailingExpectations -if you are running tests in an async context.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherExpectations -@see raiseException source for an example use case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherFailingExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func recordFailure(_ message: String, location: SourceLocation)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The value given is lazily evaluated.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @escaping () async throws -> T?) -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> T)) -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> T?)) -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> Void)) -> AsyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The value given is lazily evaluated. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () async throws -> T?) async -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> T)) async -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> T?)) async -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> Void)) async -> AsyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - waitUntil(timeout:file:line:action:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Wait asynchronously until the done closure is called or the timeout has been reached.

    - -

    @discussion -Call the done() closure to indicate the waiting has completed.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func waitUntil(timeout: NimbleTimeInterval = PollingDefaults.timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) async -> Void) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - waitUntil(timeout:file:line:action:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Wait asynchronously until the done closure is called or the timeout has been reached.

    - -

    @discussion -Call the done() closure to indicate the waiting has completed.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func waitUntil(timeout: NimbleTimeInterval = PollingDefaults.timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void) async
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncRequirement<Void>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncRequirement<Void>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @escaping () async throws -> T?) -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: () -> (() async throws -> T)) -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: () -> (() async throws -> T?)) -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requirea(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided to avoid confusion between require -> SyncRequirement and require -> AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requirea<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () async throws -> T?) async -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requirea(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided to avoid confusion between require -> SyncRequirement and require -> AsyncRequirement

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requirea<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() async throws -> T)) async -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requirea(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided to avoid confusion between require -> SyncRequirement and require -> AsyncRequirement

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requirea<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() async throws -> T?)) async -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Unwrap -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwraps will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwraps<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwraps will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwraps<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrap(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrap(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrapa(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrapa will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrapa<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrapa(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrapa will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrapa<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Wait asynchronously until the done closure is called or the timeout has been reached.

    - -

    @discussion -Call the done() closure to indicate the waiting has completed.

    - -

    This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `waitUntil` does not work in async contexts. Use the async variant as a drop-in replacement")
    -public func waitUntil(timeout: NimbleTimeInterval = PollingDefaults.timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The value given is lazily evaluated.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The value given is lazily evaluated. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:location:) - -
    -
    -
    -
    -
    -
    -

    Always fails the test with a message and a specified location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func fail(_ message: String, location: SourceLocation)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:file:line:) - -
    -
    -
    -
    -
    -
    -

    Always fails the test with a message.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func fail(_ message: String, file: FileString = #file, line: UInt = #line)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:line:) - -
    -
    -
    -
    -
    -
    -

    Always fails the test.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func fail(_ file: FileString = #file, line: UInt = #line)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passFunc: @escaping (S.Element) throws -> Bool
    -) -> Matcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passName: String,
    -    _ passFunc: @escaping (S.Element) throws -> Bool
    -) -> Matcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S>(_ elementMatcher: Matcher<S.Element>) -> Matcher<S> where S : Sequence
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passFunc: @escaping (S.Element) async throws -> Bool
    -) -> AsyncMatcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passName: String,
    -    _ passFunc: @escaping (S.Element) async throws -> Bool
    -) -> AsyncMatcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S>(_ elementMatcher: AsyncMatcher<S.Element>) -> AsyncMatcher<S> where S : Sequence
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAKindOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an instance of the given class.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAKindOf<T>(_ expectedType: T.Type) -> Matcher<Any>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAKindOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an instance of the given class. -@see beAnInstanceOf if you want to match against the exact class

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAKindOf(_ expectedClass: AnyClass) -> Matcher<NSObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAnInstanceOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an exact instance of the given class.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAnInstanceOf<T>(_ expectedType: T.Type) -> Matcher<Any>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAnInstanceOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an instance of the given class. -@see beAKindOf if you want to match against subclasses

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAnInstanceOf(_ expectedClass: AnyClass) -> Matcher<NSObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - defaultDelta() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func defaultDelta<F>() -> F where F : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beCloseTo(_:within:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is close to another. This is used for floating -point values which can have imprecise results when doing arithmetic on them.

    - -

    @see equal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beCloseTo<Value: FloatingPoint>(
    -    _ expectedValue: Value,
    -    within delta: Value = defaultDelta()
    -) -> Matcher<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beCloseTo(_:within:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is close to another. This is used for floating -point values which can have imprecise results when doing arithmetic on them.

    - -

    @see equal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beCloseTo<Value: NMBDoubleConvertible>(
    -    _ expectedValue: Value,
    -    within delta: Double = DefaultDelta
    -) -> Matcher<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beCloseTo(_:within:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beCloseTo<Value: FloatingPoint, Values: Collection>(
    -    _ expectedValues: Values,
    -    within delta: Value = defaultDelta()
    -) -> Matcher<Values> where Values.Element == Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Operators -

-
-
-
    -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: Value) where Value : Collection, Value.Element : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: Value) async where Value : Collection, Value.Element : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: Value) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: Value) async where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Value)) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Value)) async where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Value)) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Value)) async where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: Value) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: Value) async where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Double)) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Double)) async where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Double)) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Double)) async where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ±(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func ± <Value>(lhs: Value, rhs: Value) -> (expected: Value, delta: Value) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ±(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func ± <Value>(lhs: Value, rhs: Double) -> (expected: Value, delta: Double) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty<S>() -> Matcher<S> where S : Sequence
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty<S>() -> Matcher<S> where S : SetAlgebra
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty<S>() -> Matcher<S> where S : Sequence, S : SetAlgebra
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For NSString instances, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NSString>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NSDictionary>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NSArray>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NMBCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beGreaterThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThan<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: SyncExpectation<T>, rhs: T) where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beGreaterThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThan<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: SyncExpectation<T>, rhs: T?) where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: AsyncExpectation<T>, rhs: T?) async where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: SyncExpectation<T>, rhs: T) where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: SyncExpectation<T>, rhs: T) where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beIdenticalTo(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is the same instance -as the expected instance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beIdenticalTo(_ expected: AnyObject?) -> Matcher<AnyObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ===(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func === (lhs: SyncExpectation<AnyObject>, rhs: AnyObject?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ===(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func === (lhs: AsyncExpectation<AnyObject>, rhs: AnyObject?) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func !== (lhs: SyncExpectation<AnyObject>, rhs: AnyObject?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func !== (lhs: AsyncExpectation<AnyObject>, rhs: AnyObject?) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - be(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is the same instance -as the expected instance.

    - -

    Alias for “beIdenticalTo”.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func be(_ expected: AnyObject?) -> Matcher<AnyObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beLessThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThan<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: SyncExpectation<V>, rhs: V) where V : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: AsyncExpectation<V>, rhs: V) async where V : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beLessThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThan<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: SyncExpectation<V>, rhs: V?) where V : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: AsyncExpectation<V>, rhs: V?) async where V : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: SyncExpectation<T>, rhs: T) where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: SyncExpectation<T>, rhs: T) where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

beTrue() / beFalse() -

-
-
-
    -
  • -
    - - - - beTrue() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is exactly true. -This matcher will not match against nils.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beTrue() -> Matcher<Bool>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalse() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is exactly false. -This matcher will not match against nils.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beFalse() -> Matcher<Bool>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

beTruthy() / beFalsy() -

-
-
-
    -
  • -
    - - - - beTruthy() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is not logically false.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beTruthy<T>() -> Matcher<T> where T : Equatable, T : ExpressibleByBooleanLiteral
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalsy() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is logically false. -This matcher will match against nils.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beFalsy<T>() -> Matcher<T> where T : Equatable, T : ExpressibleByBooleanLiteral
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beNil() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beNil<T>() -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beSuccess(test:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher for Result that succeeds when the actual value is success.

    - -

    You can pass a closure to do any arbitrary custom matching to the value inside result. -The closure only gets called when the result is success.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beSuccess<Success, Failure>(
    -    test: ((Success) -> Void)? = nil
    -) -> Matcher<Result<Success, Failure>>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFailure(test:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher for Result that succeeds when the actual value is failure.

    - -

    You can pass a closure to do any arbitrary custom matching to the error inside result. -The closure only gets called when the result is failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beFailure<Success, Failure>(
    -    test: ((Failure) -> Void)? = nil
    -) -> Matcher<Result<Success, Failure>>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beVoid() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is Void.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beVoid() -> Matcher<()>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == (lhs: SyncExpectation<()>, rhs: ())
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == (lhs: AsyncExpectation<()>, rhs: ()) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != (lhs: SyncExpectation<()>, rhs: ())
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != (lhs: AsyncExpectation<()>, rhs: ()) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beWithin(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is within given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beWithin<T>(_ range: Range<T>) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beWithin(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is within given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beWithin<T>(_ range: ClosedRange<T>) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence’s first element -is equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith<S>(_ startingElement: S.Element) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection’s first element -is equal to the expected object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith(_ startingElement: Any) -> Matcher<NMBOrderedCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains expected substring -where the expected substring’s location is zero.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith(_ startingSubstring: String) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(prefix:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the exepected sequence is a prefix of the actual sequence.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2854218-starts

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith<Seq1: Sequence, Seq2: Sequence>(prefix expectedPrefix: Seq2?)
    -    -> Matcher<Seq1> where Seq1.Element: Equatable, Seq1.Element == Seq2.Element
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(prefix:by:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the expected sequence is the prefix of the actual sequence, using the given matcher as the equivalence test.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2996828-starts

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith<Seq1: Sequence, Seq2: Sequence>(
    -    prefix expectedPrefix: Seq2?,
    -    by areEquivalent: @escaping (Seq1.Element, Seq2.Element) -> Bool
    -) -> Matcher<Seq1>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: S.Element...) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: [S.Element]) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: S.Element...) -> Matcher<S> where S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: [S.Element]) -> Matcher<S> where S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: S.Element...) -> Matcher<S> where S : Sequence, S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: [S.Element]) -> Matcher<S> where S : Sequence, S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains the expected substring.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: String...) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: [String]) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains the expected substring.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: NSString...) -> Matcher<NSString>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: [NSString]) -> Matcher<NSString>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection contains the expected object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ items: Any?...) -> Matcher<NMBContainer>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ items: [Any?]) -> Matcher<NMBContainer>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func containElementSatisfying<S: Sequence>(
    -    _ matcher: @escaping ((S.Element) -> Bool), _ matcherDescription: String = ""
    -) -> Matcher<S>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func containElementSatisfying<S: Sequence>(
    -    _ matcher: @escaping ((S.Element) async -> Bool), _ matcherDescription: String = ""
    -) -> AsyncMatcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - elementsEqual(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence and the exepected sequence contain the same elements in -the same order.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2854213-elementsequal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func elementsEqual<Seq1: Sequence, Seq2: Sequence>(
    -    _ expectedValue: Seq2?
    -) -> Matcher<Seq1> where Seq1.Element: Equatable, Seq1.Element == Seq2.Element
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - elementsEqual(_:by:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence and the exepected sequence contain equivalent elements in -the same order, using the given matcher as the equivalence test.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2949668-elementsequal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func elementsEqual<Seq1: Sequence, Seq2: Sequence>(
    -    _ expectedValue: Seq2?,
    -    by areEquivalent: @escaping (Seq1.Element, Seq2.Element) -> Bool
    -) -> Matcher<Seq1>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence’s last element -is equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func endWith<S>(_ endingElement: S.Element) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection’s last element -is equal to the expected object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func endWith(_ endingElement: Any) -> Matcher<NMBOrderedCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains the expected substring -where the expected substring’s location is the actual string’s length minus the -expected substring’s length.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func endWith(_ endingSubstring: String) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple2 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable>(
    -    _ expectedValue: (T1, T2)?
    -) -> Matcher<(T1, T2)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple3 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable>(
    -    _ expectedValue: (T1, T2, T3)?
    -) -> Matcher<(T1, T2, T3)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple4 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    _ expectedValue: (T1, T2, T3, T4)?
    -) -> Matcher<(T1, T2, T3, T4)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple5 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    _ expectedValue: (T1, T2, T3, T4, T5)?
    -) -> Matcher<(T1, T2, T3, T4, T5)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple6 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    _ expectedValue: (T1, T2, T3, T4, T5, T6)?
    -) -> Matcher<(T1, T2, T3, T4, T5, T6)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple2 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable>(
    -    _ expectedValue: [(T1, T2)]?
    -) -> Matcher<[(T1, T2)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple3 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable>(
    -    _ expectedValue: [(T1, T2, T3)]?
    -) -> Matcher<[(T1, T2, T3)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple4 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    _ expectedValue: [(T1, T2, T3, T4)]?
    -) -> Matcher<[(T1, T2, T3, T4)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple5 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    _ expectedValue: [(T1, T2, T3, T4, T5)]?
    -) -> Matcher<[(T1, T2, T3, T4, T5)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple6 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    _ expectedValue: [(T1, T2, T3, T4, T5, T6)]?
    -) -> Matcher<[(T1, T2, T3, T4, T5, T6)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is equal to the expected value. -Values can support equal by supporting the Equatable protocol.

    - -

    @see beCloseTo if you want to match imprecise types (eg - floats, doubles).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: T) -> Matcher<T> where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher allowing comparison of collection with optional type

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: [T?]) -> Matcher<[T?]> where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is equal to the expected value. -Values can support equal by supporting the Equatable protocol.

    - -

    @see beCloseTo if you want to match imprecise types (eg - floats, doubles).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: T?) -> Matcher<T> where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>) -> Matcher<Set<T>> where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>?) -> Matcher<Set<T>> where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>) -> Matcher<Set<T>> where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>?) -> Matcher<Set<T>> where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual dictionary is equal to the expected dictionary

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<K, V>(_ expectedValue: [K : V?]) -> Matcher<[K : V]> where K : Hashable, V : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<T>, rhs: T) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<T>, rhs: T?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<T>, rhs: T) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<T>, rhs: T?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<[T]>, rhs: [T]?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<[T]>, rhs: [T]?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T, C>(lhs: SyncExpectation<[T : C]>, rhs: [T : C]?) where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T, C>(lhs: SyncExpectation<[T : C]>, rhs: [T : C]?) where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<T>, rhs: T?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<T>, rhs: T?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<[T]>, rhs: [T]?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<[T]>, rhs: [T]?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T, C>(lhs: AsyncExpectation<[T : C]>, rhs: [T : C]?) async where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T, C>(lhs: AsyncExpectation<[T : C]>, rhs: [T : C]?) async where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - haveCount(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual Collection’s count equals -the expected value

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func haveCount<T>(_ expectedValue: Int) -> Matcher<T> where T : Collection
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - haveCount(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection’s count equals -the expected value

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func haveCount(_ expectedValue: Int) -> Matcher<NMBCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - map(_:_:) - -
    -
    -
    -
    -
    -
    -

    map works by transforming the expression to a value that the given matcher uses.

    - -

    For example, you might only care that a particular property on a method equals some other value. -So, you could write expect(myObject).to(lens(\.someIntValue, equal(3)). -This is also useful in conjunction with satisfyAllOf to do a partial equality of an object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func map<T, U>(_ transform: @escaping (T) throws -> U, _ matcher: Matcher<U>) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - map(_:_:) - -
    -
    -
    -
    -
    -
    -

    map works by transforming the expression to a value that the given matcher uses.

    - -

    For example, you might only care that a particular property on a method equals some other value. -So, you could write expect(myObject).to(lens(\.someIntValue, equal(3)). -This is also useful in conjunction with satisfyAllOf to do a partial equality of an object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func map<T, U>(_ transform: @escaping (T) async throws -> U, _ matcher: some AsyncableMatcher<U>) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - match(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string satisfies the regular expression -described by the expected string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func match(_ expectedValue: String?) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchError(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression evaluates to an -error from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparison by _domain and _code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func matchError<T>(_ error: T) -> Matcher<Error> where T : Error
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchError(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression evaluates to an -error from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func matchError<T>(_ error: T) -> Matcher<Error> where T : Equatable, T : Error
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchError(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression evaluates to an -error of the specified type

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func matchError<T>(_ errorType: T.Type) -> Matcher<Error> where T : Error
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func postNotifications<Out>(
    -    _ matcher: Matcher<[Notification]>,
    -    from center: NotificationCenter = .default
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func postDistributedNotifications<Out>(
    -    _ matcher: Matcher<[Notification]>,
    -    from center: DistributedNotificationCenter = .default(),
    -    names: Set<Notification.Name>
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression raises an -exception with the specified name, reason, and/or userInfo.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the raised exception. The closure only gets called when an exception -is raised.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func raiseException<Out>(
    -    named: NSExceptionName? = nil,
    -    reason: String? = nil,
    -    userInfo: NSDictionary? = nil,
    -    closure: ((NSException) -> Void)? = nil
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression raises an -exception with the specified name, reason, and/or userInfo.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the raised exception. The closure only gets called when an exception -is raised.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func raiseException<Out>(
    -    named: String?,
    -    reason: String? = nil,
    -    userInfo: NSDictionary? = nil,
    -    closure: ((NSException) -> Void)? = nil
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAllOf<T>(_ matchers: Matcher<T>...) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAllOf<T>(_ matchers: [Matcher<T>]) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - &&(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func && <T>(left: Matcher<T>, right: Matcher<T>) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAllOf<T>(_ matchers: any AsyncableMatcher<T>...) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAllOf<T>(_ matchers: [any AsyncableMatcher<T>]) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - &&(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func && <T>(left: some AsyncableMatcher<T>, right: some AsyncableMatcher<T>) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAnyOf<T>(_ matchers: Matcher<T>...) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAnyOf<T>(_ matchers: [Matcher<T>]) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ||(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func || <T>(left: Matcher<T>, right: Matcher<T>) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAnyOf<T>(_ matchers: any AsyncableMatcher<T>...) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAnyOf<T>(_ matchers: [any AsyncableMatcher<T>]) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ||(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func || <T>(left: some AsyncableMatcher<T>, right: some AsyncableMatcher<T>) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Run the provided block. If a POSIX SIGILL is received, handle it and return a BadInstructionException (which is just an empty object in this POSIX signal version). Otherwise return nil. -NOTE: This function is only intended for use in test harnesses – use in a distributed build is almost certainly a bad choice. If a SIGILL is received, the block will be interrupted using a C longjmp. The risks associated with abrupt jumps apply here: most Swift functions are not interrupt-safe. Memory may be leaked and the program will not necessarily be left in a safe state.

    - -
    -
    -
    -
  • -
  • -
    - - - - throwAssertion() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwAssertion<Out>() -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - throwError() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparison by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<Out>() -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T, Out>(_ error: T, closure: ((Error) -> Void)? = nil) -> Matcher<Out> where T : Error
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T, Out>(_ error: T, closure: ((T) -> Void)? = nil) -> Matcher<Out> where T : Equatable, T : Error
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T: Error, Out>(
    -    errorType: T.Type,
    -    closure: ((T) -> Void)? = nil
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - throwError(closure:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws any -error or when the passed closures’ arbitrary custom matching succeeds.

    - -

    This duplication to it’s generic adequate is required to allow to receive -values of the existential type Error in the closure.

    - -

    The closure only gets called when an error was thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<Out>(closure: @escaping ((Error) -> Void)) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - throwError(closure:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws any -error or when the passed closures’ arbitrary custom matching succeeds.

    - -

    This duplication to it’s generic adequate is required to allow to receive -values of the existential type Error in the closure.

    - -

    The closure only gets called when an error was thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T, Out>(closure: @escaping ((T) -> Void)) -> Matcher<Out> where T : Error
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - succeed() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that takes in a closure for validation.

    - -

    Return .succeeded when the validation succeeds. -Return .failed with a failure reason when the validation fails.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func succeed() -> Matcher<ToSucceedResult>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

UnwrapEventually -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwraps<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwraps<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrap(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrap(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrapa(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrapa<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrapa(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrapa<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - stringify(_:) - -
    -
    -
    -
    -
    -
    -

    Returns a string appropriate for displaying in test output -from the provided value.

    -
    -

    See also

    -

    TestOutputStringConvertible

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func stringify<T>(_ value: T?) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    A value that will show up in a test’s output.

    -
    -
    -
    -
    -

    Return Value

    -

    The string that is returned can be -customized per type by conforming a type to the TestOutputStringConvertible -protocol. When stringifying a non-TestOutputStringConvertible type, this -function will return the value’s debug description and then its -normal description if available and in that order. Otherwise it -will return the result of constructing a string from the value.

    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Collection Type Stringers -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Attempts to generate a pretty type string for a given value. If the value is of a Objective-C -collection type, or a subclass thereof, (e.g. NSArray, NSDictionary, etc.). -This function will return the type name of the root class of the class cluster for better -readability (e.g. NSArray instead of __NSArrayI).

    - -

    For values that don’t have a type of an Objective-C collection, this function returns the -default type description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func prettyCollectionType<T>(_ value: T) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    A value that will be used to determine a type name.

    -
    -
    -
    -
    -

    Return Value

    -

    The name of the class cluster root class for Objective-C collection types, or the -the dynamicType of the value for values of any other type.

    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the type name for a given collection type. This overload is used by Swift -collection types.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func prettyCollectionType<T>(_ collection: T) -> String where T : Collection
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - collection - - -
    -

    A Swift CollectionType value.

    -
    -
    -
    -
    -

    Return Value

    -

    A string representing the dynamicType of the value.

    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Global Variables.html b/docs/Global Variables.html deleted file mode 100644 index 6ec912252..000000000 --- a/docs/Global Variables.html +++ /dev/null @@ -1,1290 +0,0 @@ - - - - Global Variables Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Global Variables

-

The following global variables are available globally.

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Global backing interface for assertions that Nimble creates. -Defaults to a private test handler that passes through to XCTest.

    - -

    If XCTest is not available, you must assign your own assertion handler -before using any matchers, otherwise Nimble will abort the program.

    - -

    @see AssertionHandler

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var NimbleAssertionHandler: AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - DefaultDelta - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let DefaultDelta: Double
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols.html b/docs/Protocols.html deleted file mode 100644 index afc040121..000000000 --- a/docs/Protocols.html +++ /dev/null @@ -1,1495 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Protocols

-

The following protocols are available globally.

- -
-
-
-
    -
  • -
    - - - - AssertionHandler - -
    -
    -
    -
    -
    -
    -

    Protocol for the assertion handler that Nimble uses for all expectations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Expectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Expectation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncableMatcher - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AsyncableMatcher<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBContainer - -
    -
    -
    -
    -
    -
    -

    Protocol for types that support contain() matcher.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBContainer
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBCollection - -
    -
    -
    -
    -
    -
    -

    Protocol for types that support only beEmpty(), haveCount() matchers

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBCollection
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBOrderedCollection - -
    -
    -
    -
    -
    -
    -

    Protocol for types that support beginWith(), endWith(), beEmpty() matchers

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBOrderedCollection : NMBCollection
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBDoubleConvertible - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBComparable - -
    -
    -
    -
    -
    -
    -

    Protocol for types to support beLessThan(), beLessThanOrEqualTo(), - beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers.

    - -

    Types that conform to Swift’s Comparable protocol will work implicitly too

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public protocol NMBComparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A type with a customized test output text representation.

    - -

    This textual representation is produced when values will be -printed in test runs, and may be useful when producing -error messages in custom matchers.

    -
    -

    See also

    - CustomDebugStringConvertible - -
    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol TestOutputStringConvertible
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/AssertionHandler.html b/docs/Protocols/AssertionHandler.html deleted file mode 100644 index 53381f86f..000000000 --- a/docs/Protocols/AssertionHandler.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - AssertionHandler Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionHandler

-
-
- -
public protocol AssertionHandler
- -
-
-

Protocol for the assertion handler that Nimble uses for all expectations.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/Protocols/AsyncableMatcher.html b/docs/Protocols/AsyncableMatcher.html deleted file mode 100644 index fbef97920..000000000 --- a/docs/Protocols/AsyncableMatcher.html +++ /dev/null @@ -1,1294 +0,0 @@ - - - - AsyncableMatcher Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncableMatcher

-
-
- -
public protocol AsyncableMatcher<Value>
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - Value - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func satisfies(_ expression: AsyncExpression<Value>) async throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/Expectation.html b/docs/Protocols/Expectation.html deleted file mode 100644 index 59fac22e8..000000000 --- a/docs/Protocols/Expectation.html +++ /dev/null @@ -1,1399 +0,0 @@ - - - - Expectation Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Expectation

-
-
- -
public protocol Expectation
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    The status of the test after matchers have been evaluated.

    - -

    This property can be used for changing test behavior based whether an expectation has -passed.

    - -

    In the below example, we perform additional tests on an array only if it has enough -elements.

    -
    if expect(array).to(haveCount(10)).status == .passed {
    -   expect(array[9]).to(...)
    -}
    -
    -
    -

    Remark

    - Similar functionality can be achieved using the onFailure(throw:) method. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var status: ExpectationStatus { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:) - -
    -
    -
    -
    -
    -
    -

    Takes the result of a test and passes it to the assertion handler.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -func verify(_ pass: Bool, _ message: FailureMessage) -> Self
    - -
    -
    -
    -

    Return Value

    -

    An updated Expression with the result of the test applied to the status - property.

    -
    -
    -
    -
  • -
  • -
    - - - - onFailure(throw:) - - - Extension method - -
    -
    -
    -
    -
    -
    -

    Throws the supplied error if the expectation has previously failed.

    - -

    This provides a mechanism for halting tests when a failure occurs. This can be used in -conjunction with Quick.StopTest to halt a test when a failure would cause subsequent test -code to fail.

    - -

    In the below example, the test will stop in the first line if array.count == 5 rather -than crash on the second line.

    -
    try expect(array).to(haveCount(10)).onFailure(throw: StopTest.silently)
    -expect(array[9]).to(...)
    -
    -
    -

    Warning

    -

    This method MUST be called after a matcher method like to or not. - Otherwise, this expectation will be in an indeterminate state and will - unconditionally log an error.

    - -
    -

    Remark

    -

    Similar functionality can be achieved using the status property.

    - -
    -

    Attention

    -

    This is deprecated in favor of the require dsl (require, unwrap, - pollUnwrap), which integrates the matcher seemlessly, or, in the case of - unwrap and pollUnwrap, acts as a shorthand when you require that an - expression evaluate to some non-nil value. onFailure will be removed in - Nimble 15.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, message: "Use the require dsl")
    -public func onFailure(throw error: Error) throws
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/NMBCollection.html b/docs/Protocols/NMBCollection.html deleted file mode 100644 index 936884de8..000000000 --- a/docs/Protocols/NMBCollection.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBCollection Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBCollection

-
-
- -
public protocol NMBCollection
- -
-
-

Protocol for types that support only beEmpty(), haveCount() matchers

- -
-
-
-
    -
  • -
    - - - - count - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var count: Int { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/NMBComparable.html b/docs/Protocols/NMBComparable.html deleted file mode 100644 index 84f1a3828..000000000 --- a/docs/Protocols/NMBComparable.html +++ /dev/null @@ -1,1268 +0,0 @@ - - - - NMBComparable Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBComparable

-
-
- -
@objc
-public protocol NMBComparable
- -
-
-

Protocol for types to support beLessThan(), beLessThanOrEqualTo(), - beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers.

- -

Types that conform to Swift’s Comparable protocol will work implicitly too

- -
-
-
-
    -
  • -
    - - - - NMB_compare(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/NMBContainer.html b/docs/Protocols/NMBContainer.html deleted file mode 100644 index 48927aa8d..000000000 --- a/docs/Protocols/NMBContainer.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBContainer Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBContainer

-
-
- -
public protocol NMBContainer
- -
-
-

Protocol for types that support contain() matcher.

- -
-
-
-
    -
  • -
    - - - - contains(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func contains(_ anObject: Any) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/NMBDoubleConvertible.html b/docs/Protocols/NMBDoubleConvertible.html deleted file mode 100644 index f4846ead3..000000000 --- a/docs/Protocols/NMBDoubleConvertible.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBDoubleConvertible Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBDoubleConvertible

-
-
- -
public protocol NMBDoubleConvertible
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - doubleValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var doubleValue: CDouble { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/NMBOrderedCollection.html b/docs/Protocols/NMBOrderedCollection.html deleted file mode 100644 index 7a0d06242..000000000 --- a/docs/Protocols/NMBOrderedCollection.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBOrderedCollection Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBOrderedCollection

-
-
- -
public protocol NMBOrderedCollection : NMBCollection
- -
-
-

Protocol for types that support beginWith(), endWith(), beEmpty() matchers

- -
-
-
-
    -
  • -
    - - - - object(at:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func object(at index: Int) -> Any
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Protocols/TestOutputStringConvertible.html b/docs/Protocols/TestOutputStringConvertible.html deleted file mode 100644 index 971db493e..000000000 --- a/docs/Protocols/TestOutputStringConvertible.html +++ /dev/null @@ -1,1273 +0,0 @@ - - - - TestOutputStringConvertible Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

TestOutputStringConvertible

-
-
- -
public protocol TestOutputStringConvertible
- -
-
-

A type with a customized test output text representation.

- -

This textual representation is produced when values will be -printed in test runs, and may be useful when producing -error messages in custom matchers.

-
-

See also

- CustomDebugStringConvertible - -
- -
-
-
-
    -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs.html b/docs/Structs.html deleted file mode 100644 index 7028eac53..000000000 --- a/docs/Structs.html +++ /dev/null @@ -1,1665 +0,0 @@ - - - - Structures Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Structures

-

The following structures are available globally.

- -
-
-
-
    -
  • -
    - - - - AssertionRecord - -
    -
    -
    -
    -
    -
    -

    A data structure that stores information about an assertion when -AssertionRecorder is set as the Nimble assertion handler.

    - -

    @see AssertionRecorder -@see AssertionHandler

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AssertionRecord : CustomStringConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncExpression - -
    -
    -
    -
    -
    -
    -

    Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

    -
    -

    Warning

    - Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
    - -

    This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - SyncExpectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SyncExpectation<Value> : Expectation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncExpectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncExpectation<Value> : Expectation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Expression - -
    -
    -
    -
    -
    -
    -

    Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

    -
    -

    Warning

    - Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
    - -

    This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Matcher - -
    -
    -
    -
    -
    -
    -

    A Matcher is part of the new matcher API that provides assertions to expectations.

    - -

    Given a code snippet:

    - -

    expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

    - -

    A matcher consists of two parts a constructor function and the Matcher.

    - -

    The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

    - -

    In the 2023 Apple Platform releases (macOS 14, iOS 17, watchOS 10, tvOS 17, visionOS 1), Apple -renamed NSMatcher to Matcher. In response, we decided to rename Matcher to -Matcher.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Matcher<T>
    -
    extension Matcher: AsyncableMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncMatcher - -
    -
    -
    -
    -
    -
    -

    An AsyncMatcher is part of the new matcher API that provides assertions to expectations.

    - -

    Given a code snippet:

    - -

    expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

    - -

    A matcher consists of two parts a constructor function and the Matcher.

    - -

    The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

    - -

    AsyncMatchers serve to allow writing matchers that must be run in async contexts. -These can also be used with either Expectations or AsyncExpectations. -But these can only be used from async contexts, and are unavailable in Objective-C. -You can, however, call regular Matchers from an AsyncMatcher, if you wish to compose one like that.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncMatcher<T> : AsyncableMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ExpectationNil - -
    -
    -
    -
    -
    -
    -

    Represents nil value to be used with the operator overloads for beNil.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct ExpectationNil : ExpressibleByNilLiteral
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MatcherResult - -
    -
    -
    -
    -
    -
    -

    The value that a Matcher returns to describe if the given (actual) value matches the -matcher.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - SyncRequirement - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SyncRequirement<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncRequirement - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncRequirement<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PollingDefaults - -
    -
    -
    -
    -
    -
    -

    If you are running on a slower machine, it could be useful to increase the default timeout value -or slow down poll interval. Default timeout interval is 1, and poll interval is 0.01.

    -
    -

    Note

    - This used to be known as AsyncDefaults. - -
    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct PollingDefaults
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - RequireError - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RequireError : Error, CustomNSError
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/AssertionRecord.html b/docs/Structs/AssertionRecord.html deleted file mode 100644 index acf45a260..000000000 --- a/docs/Structs/AssertionRecord.html +++ /dev/null @@ -1,1348 +0,0 @@ - - - - AssertionRecord Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionRecord

-
-
- -
public struct AssertionRecord : CustomStringConvertible
- -
-
-

A data structure that stores information about an assertion when -AssertionRecorder is set as the Nimble assertion handler.

- -

@see AssertionRecorder -@see AssertionHandler

- -
-
-
-
    -
  • -
    - - - - success - -
    -
    -
    -
    -
    -
    -

    Whether the assertion succeeded or failed

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let success: Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - message - -
    -
    -
    -
    -
    -
    -

    The failure message the assertion would display on failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let message: FailureMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The source location the expectation occurred on.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: SourceLocation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/AsyncExpectation.html b/docs/Structs/AsyncExpectation.html deleted file mode 100644 index 754e98889..000000000 --- a/docs/Structs/AsyncExpectation.html +++ /dev/null @@ -1,2129 +0,0 @@ - - - - AsyncExpectation Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncExpectation

-
-
- -
public struct AsyncExpectation<Value> : Expectation
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    The status of the test after matchers have been evaluated.

    - -

    This property can be used for changing test behavior based whether an expectation has -passed.

    - -

    In the below example, we perform additional tests on an array only if it has enough -elements.

    -
    if expect(array).to(haveCount(10)).status == .passed {
    -   expect(array[9]).to(...)
    -}
    -
    -
    -

    Remark

    - Similar functionality can be achieved using the onFailure(throw:) method. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let status: ExpectationStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(expression:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: AsyncExpression<Value>)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:) - -
    -
    -
    -
    -
    -
    -

    Takes the result of a test and passes it to the assertion handler.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func verify(_ pass: Bool, _ message: FailureMessage) -> AsyncExpectation<Value>
    - -
    -
    -
    -

    Return Value

    -

    An updated Expression with the result of the test applied to the status - property.

    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: AsyncExpectation, rhs: ExpectationNil) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func != (lhs: AsyncExpectation, rhs: ExpectationNil) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

With Synchronous Matchers -

-
-
- -
-
-
- - -
- -

With AsyncMatchers -

-
-
- -
-
-
- -
-
- - diff --git a/docs/Structs/AsyncExpression.html b/docs/Structs/AsyncExpression.html deleted file mode 100644 index 7638d6c71..000000000 --- a/docs/Structs/AsyncExpression.html +++ /dev/null @@ -1,1662 +0,0 @@ - - - - AsyncExpression Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncExpression

-
-
- -
public struct AsyncExpression<Value>
- -
-
-

Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

-
-

Warning

- Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
- -

This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

- -
-
-
-
    -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: SourceLocation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - isClosure - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let isClosure: Bool
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process. The expression is memoized.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: @escaping () async throws -> Value?, location: SourceLocation, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(memoizedExpression: @escaping (Bool) async throws -> Value?, location: SourceLocation, withoutCaching: Bool, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - withoutCaching - - -
    -

    Indicates if the struct should memoize the given - closure’s result. Subsequent evaluate() calls will - not call the given closure if this is true.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - toSynchronousExpression() - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Creates a new synchronous expression, for use in Matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toSynchronousExpression() async -> Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - cast(_:) - -
    -
    -
    -
    -
    -
    -

    Returns a new Expression from the given expression. Identical to a map() -on this type. This should be used only to typecast the Expression’s -closure value.

    - -

    The returned expression will preserve location and isClosure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func cast<U>(_ block: @escaping (Value?) throws -> U?) -> AsyncExpression<U>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - block - - -
    -

    The block that can cast the current Expression value to a - new type.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - cast(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func cast<U>(_ block: @escaping (Value?) async throws -> U?) -> AsyncExpression<U>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - evaluate() - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func evaluate() async throws -> Value?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withoutCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withoutCaching() -> AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withCaching() -> AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/AsyncMatcher.html b/docs/Structs/AsyncMatcher.html deleted file mode 100644 index d78d8375d..000000000 --- a/docs/Structs/AsyncMatcher.html +++ /dev/null @@ -1,1485 +0,0 @@ - - - - AsyncMatcher Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncMatcher

-
-
- -
public struct AsyncMatcher<T> : AsyncableMatcher
- -
-
-

An AsyncMatcher is part of the new matcher API that provides assertions to expectations.

- -

Given a code snippet:

- -

expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

- -

A matcher consists of two parts a constructor function and the Matcher.

- -

The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

- -

AsyncMatchers serve to allow writing matchers that must be run in async contexts. -These can also be used with either Expectations or AsyncExpectations. -But these can only be used from async contexts, and are unavailable in Objective-C. -You can, however, call regular Matchers from an AsyncMatcher, if you wish to compose one like that.

- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ matcher: @escaping (AsyncExpression<T>) async throws -> MatcherResult)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Uses a matcher on a given value to see if it passes the matcher.

    - -

    @param expression The value to run the matcher’s logic against -@returns A matcher result indicate passing or failing and an associated error message.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfies(_ expression: AsyncExpression<T>) async throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(matcher:) - -
    -
    -
    -
    -
    -
    -

    Like Matcher() constructor, but automatically guard against nil (actual) values

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(matcher: @escaping (AsyncExpression<T>) async throws -> MatcherResult) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(_ message: String = "match", matcher: @escaping (AsyncExpression<T>, ExpectationMessage) async throws -> MatcherResult) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Unlike define, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func defineNilable(_ message: String = "match", matcher: @escaping (AsyncExpression<T>, ExpectationMessage) async throws -> MatcherResult) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - simple(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simple(_ message: String = "match", matcher: @escaping (AsyncExpression<T>) async throws -> MatcherStatus) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Unlike simple, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simpleNilable(_ message: String = "match", matcher: @escaping (AsyncExpression<T>) async throws -> MatcherStatus) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requireNonNil - -
    -
    -
    -
    -
    -
    -

    Returns a new Matcher based on the current one that always fails if nil is given as -the actual value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var requireNonNil: AsyncMatcher<T> { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/AsyncRequirement.html b/docs/Structs/AsyncRequirement.html deleted file mode 100644 index dee5f829e..000000000 --- a/docs/Structs/AsyncRequirement.html +++ /dev/null @@ -1,2062 +0,0 @@ - - - - AsyncRequirement Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncRequirement

-
-
- -
public struct AsyncRequirement<Value>
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - customError - -
    -
    -
    -
    -
    -
    -

    A custom error to throw. -If nil, then we will throw a RequireError on failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let customError: Error?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: AsyncExpression<Value>, customError: Error?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func verify(_ pass: Bool, _ message: FailureMessage, _ value: Value?) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

AsyncMatchers -

-
-
-
    -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Async Polling With Synchronous Matchers -

-
-
- -
-
-
- - -
- -

Async Polling With AsyncMatchers -

-
-
- -
-
-
- -
-
- - diff --git a/docs/Structs/ExpectationNil.html b/docs/Structs/ExpectationNil.html deleted file mode 100644 index d5076ec7e..000000000 --- a/docs/Structs/ExpectationNil.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - ExpectationNil Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationNil

-
-
- -
public struct ExpectationNil : ExpressibleByNilLiteral
- -
-
-

Represents nil value to be used with the operator overloads for beNil.

- -
-
-
-
    -
  • -
    - - - - init(nilLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(nilLiteral: ())
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/Expression.html b/docs/Structs/Expression.html deleted file mode 100644 index 1182058d2..000000000 --- a/docs/Structs/Expression.html +++ /dev/null @@ -1,1629 +0,0 @@ - - - - Expression Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Expression

-
-
- -
public struct Expression<Value>
- -
-
-

Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

-
-

Warning

- Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
- -

This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

- -
-
-
-
    -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: SourceLocation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - isClosure - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let isClosure: Bool
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process. The expression is memoized.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: @escaping () throws -> Value?, location: SourceLocation, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(memoizedExpression: @escaping (Bool) throws -> Value?, location: SourceLocation, withoutCaching: Bool, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - withoutCaching - - -
    -

    Indicates if the struct should memoize the given - closure’s result. Subsequent evaluate() calls will - not call the given closure if this is true.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - cast(_:) - -
    -
    -
    -
    -
    -
    -

    Returns a new Expression from the given expression. Identical to a map() -on this type. This should be used only to typecast the Expression’s -closure value.

    - -

    The returned expression will preserve location and isClosure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func cast<U>(_ block: @escaping (Value?) throws -> U?) -> Expression<U>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - block - - -
    -

    The block that can cast the current Expression value to a - new type.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - evaluate() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func evaluate() throws -> Value?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withoutCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withoutCaching() -> Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withCaching() -> Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toAsyncExpression() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toAsyncExpression() -> AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/Matcher.html b/docs/Structs/Matcher.html deleted file mode 100644 index cb2a010d4..000000000 --- a/docs/Structs/Matcher.html +++ /dev/null @@ -1,1512 +0,0 @@ - - - - Matcher Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Matcher

-
-
- -
public struct Matcher<T>
-
extension Matcher: AsyncableMatcher
- -
-
-

A Matcher is part of the new matcher API that provides assertions to expectations.

- -

Given a code snippet:

- -

expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

- -

A matcher consists of two parts a constructor function and the Matcher.

- -

The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

- -

In the 2023 Apple Platform releases (macOS 14, iOS 17, watchOS 10, tvOS 17, visionOS 1), Apple -renamed NSMatcher to Matcher. In response, we decided to rename Matcher to -Matcher.

- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Constructs a matcher that knows how take a given value

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ matcher: @escaping (Expression<T>) throws -> MatcherResult)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - -
    -
    -
    -
    -
    -
    -

    Uses a matcher on a given value to see if it passes the matcher.

    - -

    @param expression The value to run the matcher’s logic against -@returns A matcher result indicate passing or failing and an associated error message.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfies(_ expression: Expression<T>) throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfies(_ expression: AsyncExpression<T>) async throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(matcher:) - -
    -
    -
    -
    -
    -
    -

    Like Matcher() constructor, but automatically guard against nil (actual) values

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(matcher: @escaping (Expression<T>) throws -> MatcherResult) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(_ message: String = "match", matcher: @escaping (Expression<T>, ExpectationMessage) throws -> MatcherResult) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Unlike define, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func defineNilable(_ message: String = "match", matcher: @escaping (Expression<T>, ExpectationMessage) throws -> MatcherResult) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - simple(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simple(_ message: String = "match", matcher: @escaping (Expression<T>) throws -> MatcherStatus) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Unlike simple, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simpleNilable(_ message: String = "match", matcher: @escaping (Expression<T>) throws -> MatcherStatus) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requireNonNil - -
    -
    -
    -
    -
    -
    -

    Returns a new Matcher based on the current one that always fails if nil is given as -the actual value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var requireNonNil: Matcher<T> { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/MatcherResult.html b/docs/Structs/MatcherResult.html deleted file mode 100644 index 390edd516..000000000 --- a/docs/Structs/MatcherResult.html +++ /dev/null @@ -1,1400 +0,0 @@ - - - - MatcherResult Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

MatcherResult

-
-
- -
public struct MatcherResult
- -
-
-

The value that a Matcher returns to describe if the given (actual) value matches the -matcher.

- -
-
-
-
    -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    Status indicates if the matcher matches, does not match, or fails.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var status: MatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - message - -
    -
    -
    -
    -
    -
    -

    The error message that can be displayed if it does not match

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var message: ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(status:message:) - -
    -
    -
    -
    -
    -
    -

    Constructs a new MatcherResult with a given status and error message

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(status: MatcherStatus, message: ExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(bool:message:) - -
    -
    -
    -
    -
    -
    -

    Shorthand to MatcherResult(status: MatcherStatus(bool: bool), message: message)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(bool: Bool, message: ExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Converts the result to a boolean based on what the expectation intended

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toBoolean(expectation style: ExpectationStyle) -> Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toObjectiveC() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toObjectiveC() -> NMBMatcherResult
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/PollingDefaults.html b/docs/Structs/PollingDefaults.html deleted file mode 100644 index 4d59dac12..000000000 --- a/docs/Structs/PollingDefaults.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - PollingDefaults Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

PollingDefaults

-
-
- -
public struct PollingDefaults
- -
-
-

If you are running on a slower machine, it could be useful to increase the default timeout value -or slow down poll interval. Default timeout interval is 1, and poll interval is 0.01.

-
-

Note

- This used to be known as AsyncDefaults. - -
- -
-
-
-
    -
  • -
    - - - - timeout - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var timeout: NimbleTimeInterval
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollInterval - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var pollInterval: NimbleTimeInterval
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/RequireError.html b/docs/Structs/RequireError.html deleted file mode 100644 index fb80c799e..000000000 --- a/docs/Structs/RequireError.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - RequireError Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

RequireError

-
-
- -
public struct RequireError : Error, CustomNSError
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - errorUserInfo - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var errorUserInfo: [String : Any] { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/SyncExpectation.html b/docs/Structs/SyncExpectation.html deleted file mode 100644 index 0a66b5fa0..000000000 --- a/docs/Structs/SyncExpectation.html +++ /dev/null @@ -1,2398 +0,0 @@ - - - - SyncExpectation Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

SyncExpectation

-
-
- -
public struct SyncExpectation<Value> : Expectation
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    The status of the test after matchers have been evaluated.

    - -

    This property can be used for changing test behavior based whether an expectation has -passed.

    - -

    In the below example, we perform additional tests on an array only if it has enough -elements.

    -
    if expect(array).to(haveCount(10)).status == .passed {
    -   expect(array[9]).to(...)
    -}
    -
    -
    -

    Remark

    - Similar functionality can be achieved using the onFailure(throw:) method. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let status: ExpectationStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(expression:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: Expression<Value>)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:) - -
    -
    -
    -
    -
    -
    -

    Takes the result of a test and passes it to the assertion handler.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func verify(_ pass: Bool, _ message: FailureMessage) -> SyncExpectation<Value>
    - -
    -
    -
    -

    Return Value

    -

    An updated Expression with the result of the test applied to the status - property.

    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

AsyncMatchers -

-
-
-
    -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: SyncExpectation, rhs: ExpectationNil)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func != (lhs: SyncExpectation, rhs: ExpectationNil)
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

With Synchronous Matchers -

-
-
- -
-
-
- - -
- -

With AsyncMatchers -

-
-
-
    -
  • -
    - - - - toEventually(_:timeout:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match by checking continuously -at each pollInterval until the timeout is reached.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toEventually(_ matcher: AsyncMatcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toEventuallyNot(_ matcher: AsyncMatcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toEventuallyNot()

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNotEventually(_ matcher: AsyncMatcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNever(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNever(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - neverTo(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toNever()

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func neverTo(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toAlways(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toAlways(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - alwaysTo(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    Alias of toAlways()

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func alwaysTo(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match by checking continuously -at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventually does not work in any kind of async context. Use the async form of toEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventuallyNot does not work in any kind of async context. -Use the async form of toEventuallyNot if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventuallyNot` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventuallyNot(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toEventuallyNot()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNotEventually does not work in any kind of async context. -Use the async form of toNotEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNotEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNotEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNever does not work in any kind of async context. -Use the async form of toNever if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNever` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNever(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toNever()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of neverTo does not work in any kind of async context. -Use the async form of neverTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `neverTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func neverTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toAlways does not work in any kind of async context. -Use the async form of toAlways if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toAlways` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toAlways(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    Alias of toAlways()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of alwaysTo does not work in any kind of async context. -Use the async form of alwaysTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `alwaysTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func alwaysTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/Structs/SyncRequirement.html b/docs/Structs/SyncRequirement.html deleted file mode 100644 index 415e23eaf..000000000 --- a/docs/Structs/SyncRequirement.html +++ /dev/null @@ -1,2337 +0,0 @@ - - - - SyncRequirement Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

SyncRequirement

-
-
- -
public struct SyncRequirement<Value>
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - customError - -
    -
    -
    -
    -
    -
    -

    A custom error to throw. -If nil, then we will throw a RequireError on failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let customError: Error?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: Expression<Value>, customError: Error?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func verify(_ pass: Bool, _ message: FailureMessage, _ value: Value?) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

AsyncMatchers -

-
-
-
    -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Dispatch Polling with Synchronous Matchers -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Require the actual value using a matcher to match by checking continuously -at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventually does not work in any kind of async context. Use the async form of toEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventuallyNot does not work in any kind of async context. -Use the async form of toEventuallyNot if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventuallyNot` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventuallyNot(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toEventuallyNot()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNotEventually does not work in any kind of async context. -Use the async form of toNotEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNotEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNotEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNever does not work in any kind of async context. -Use the async form of toNever if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNever` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNever(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toNever()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of neverTo does not work in any kind of async context. -Use the async form of neverTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `neverTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func neverTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toAlways does not work in any kind of async context. -Use the async form of toAlways if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toAlways` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toAlways(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    Alias of toAlways()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of alwaysTo does not work in any kind of async context. -Use the async form of alwaysTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `alwaysTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func alwaysTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Async Polling with Synchronous Matchers -

-
-
- -
-
-
- - -
- -

Async Polling With AsyncMatchers -

-
-
- -
-
-
- -
-
- - diff --git a/docs/Typealiases.html b/docs/Typealiases.html deleted file mode 100644 index 1a8da189b..000000000 --- a/docs/Typealiases.html +++ /dev/null @@ -1,1525 +0,0 @@ - - - - Type Aliases Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Type Aliases

-

The following type aliases are available globally.

- -
-
-
-
    -
  • -
    - - - - AsyncPredicate - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias AsyncPredicate = AsyncMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Predicate - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "Matcher")
    -public typealias Predicate = Matcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PredicateResult - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "MatcherResult")
    -public typealias PredicateResult = MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PredicateStatus - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "MatcherStatus")
    -public typealias PredicateStatus = MatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MatcherBlock - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias MatcherBlock = (_ actualExpression: Expression<NSObject>) throws -> NMBMatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PredicateBlock - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "MatcherBlock")
    -public typealias PredicateBlock = MatcherBlock
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBPredicate - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "NMBMatcher")
    -public typealias NMBPredicate = NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBPredicateResult - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "NMBMatcherResult")
    -public typealias NMBPredicateResult = NMBMatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBPredicateStatus - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "NMBMatcherStatus")
    -public typealias NMBPredicateStatus = NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - FileString - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
  • -
  • -
    - - - - FileString - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias FileString = String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/badge.svg b/docs/badge.svg deleted file mode 100644 index 81f3c9be8..000000000 --- a/docs/badge.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - documentation - - - documentation - - - 52% - - - 52% - - - diff --git a/docs/css/highlight.css b/docs/css/highlight.css deleted file mode 100644 index c170357ce..000000000 --- a/docs/css/highlight.css +++ /dev/null @@ -1,202 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -/* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight .c { - color: #999988; - font-style: italic; } - -.highlight .err { - color: #a61717; - background-color: #e3d2d2; } - -.highlight .k { - color: #000000; - font-weight: bold; } - -.highlight .o { - color: #000000; - font-weight: bold; } - -.highlight .cm { - color: #999988; - font-style: italic; } - -.highlight .cp { - color: #999999; - font-weight: bold; } - -.highlight .c1 { - color: #999988; - font-style: italic; } - -.highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - -.highlight .gd { - color: #000000; - background-color: #ffdddd; } - -.highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - -.highlight .ge { - color: #000000; - font-style: italic; } - -.highlight .gr { - color: #aa0000; } - -.highlight .gh { - color: #999999; } - -.highlight .gi { - color: #000000; - background-color: #ddffdd; } - -.highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - -.highlight .go { - color: #888888; } - -.highlight .gp { - color: #555555; } - -.highlight .gs { - font-weight: bold; } - -.highlight .gu { - color: #aaaaaa; } - -.highlight .gt { - color: #aa0000; } - -.highlight .kc { - color: #000000; - font-weight: bold; } - -.highlight .kd { - color: #000000; - font-weight: bold; } - -.highlight .kp { - color: #000000; - font-weight: bold; } - -.highlight .kr { - color: #000000; - font-weight: bold; } - -.highlight .kt { - color: #445588; } - -.highlight .m { - color: #009999; } - -.highlight .s { - color: #d14; } - -.highlight .na { - color: #008080; } - -.highlight .nb { - color: #0086B3; } - -.highlight .nc { - color: #445588; - font-weight: bold; } - -.highlight .no { - color: #008080; } - -.highlight .ni { - color: #800080; } - -.highlight .ne { - color: #990000; - font-weight: bold; } - -.highlight .nf { - color: #990000; } - -.highlight .nn { - color: #555555; } - -.highlight .nt { - color: #000080; } - -.highlight .nv { - color: #008080; } - -.highlight .ow { - color: #000000; - font-weight: bold; } - -.highlight .w { - color: #bbbbbb; } - -.highlight .mf { - color: #009999; } - -.highlight .mh { - color: #009999; } - -.highlight .mi { - color: #009999; } - -.highlight .mo { - color: #009999; } - -.highlight .sb { - color: #d14; } - -.highlight .sc { - color: #d14; } - -.highlight .sd { - color: #d14; } - -.highlight .s2 { - color: #d14; } - -.highlight .se { - color: #d14; } - -.highlight .sh { - color: #d14; } - -.highlight .si { - color: #d14; } - -.highlight .sx { - color: #d14; } - -.highlight .sr { - color: #009926; } - -.highlight .s1 { - color: #d14; } - -.highlight .ss { - color: #990073; } - -.highlight .bp { - color: #999999; } - -.highlight .vc { - color: #008080; } - -.highlight .vg { - color: #008080; } - -.highlight .vi { - color: #008080; } - -.highlight .il { - color: #009999; } diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css deleted file mode 100644 index 2e3871391..000000000 --- a/docs/css/jazzy.css +++ /dev/null @@ -1,439 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { - background: transparent; - border: 0; - margin: 0; - outline: 0; - padding: 0; - vertical-align: baseline; } - -body { - background-color: #f2f2f2; - font-family: Helvetica, freesans, Arial, sans-serif; - font-size: 14px; - -webkit-font-smoothing: subpixel-antialiased; - word-wrap: break-word; } - -h1, h2, h3 { - margin-top: 0.8em; - margin-bottom: 0.3em; - font-weight: 100; - color: black; } - -h1 { - font-size: 2.5em; } - -h2 { - font-size: 2em; - border-bottom: 1px solid #e2e2e2; } - -h4 { - font-size: 13px; - line-height: 1.5; - margin-top: 21px; } - -h5 { - font-size: 1.1em; } - -h6 { - font-size: 1.1em; - color: #777; } - -.section-name { - color: gray; - display: block; - font-family: Helvetica; - font-size: 22px; - font-weight: 100; - margin-bottom: 15px; } - -pre, code { - font: 0.95em Menlo, monospace; - color: #777; - word-wrap: normal; } - -p code, li code { - background-color: #eee; - padding: 2px 4px; - border-radius: 4px; } - -pre > code { - padding: 0; } - -a { - color: #0088cc; - text-decoration: none; } - a code { - color: inherit; } - -ul { - padding-left: 15px; } - -li { - line-height: 1.8em; } - -img { - max-width: 100%; } - -blockquote { - margin-left: 0; - padding: 0 10px; - border-left: 4px solid #ccc; } - -hr { - height: 1px; - border: none; - background-color: #e2e2e2; } - -.footnote-ref { - display: inline-block; - scroll-margin-top: 70px; } - -.footnote-def { - scroll-margin-top: 70px; } - -.content-wrapper { - margin: 0 auto; - width: 980px; } - -header { - font-size: 0.85em; - line-height: 32px; - background-color: #414141; - position: fixed; - width: 100%; - z-index: 3; } - header img { - padding-right: 6px; - vertical-align: -3px; - height: 16px; } - header a { - color: #fff; } - header p { - float: left; - color: #999; } - header .header-right { - float: right; - margin-left: 16px; } - -#breadcrumbs { - background-color: #f2f2f2; - height: 21px; - padding-top: 17px; - position: fixed; - width: 100%; - z-index: 2; - margin-top: 32px; } - #breadcrumbs #carat { - height: 10px; - margin: 0 5px; } - -.sidebar { - background-color: #f9f9f9; - border: 1px solid #e2e2e2; - overflow-y: auto; - overflow-x: hidden; - position: fixed; - top: 70px; - bottom: 0; - width: 230px; - word-wrap: normal; } - -.nav-groups { - list-style-type: none; - background: #fff; - padding-left: 0; } - -.nav-group-name { - border-bottom: 1px solid #e2e2e2; - font-size: 1.1em; - font-weight: 100; - padding: 15px 0 15px 20px; } - .nav-group-name > a { - color: #333; } - -.nav-group-tasks { - margin-top: 5px; } - -.nav-group-task { - font-size: 0.9em; - list-style-type: none; - white-space: nowrap; } - .nav-group-task a { - color: #888; } - -.main-content { - background-color: #fff; - border: 1px solid #e2e2e2; - margin-left: 246px; - position: absolute; - overflow: hidden; - padding-bottom: 20px; - top: 70px; - width: 734px; } - .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { - margin-bottom: 1em; } - .main-content p { - line-height: 1.8em; } - .main-content section .section:first-child { - margin-top: 0; - padding-top: 0; } - .main-content section .task-group-section .task-group:first-of-type { - padding-top: 10px; } - .main-content section .task-group-section .task-group:first-of-type .section-name { - padding-top: 15px; } - .main-content section .heading:before { - content: ""; - display: block; - padding-top: 70px; - margin: -70px 0 0; } - .main-content .section-name p { - margin-bottom: inherit; - line-height: inherit; } - .main-content .section-name code { - background-color: inherit; - padding: inherit; - color: inherit; } - -.section { - padding: 0 25px; } - -.highlight { - background-color: #eee; - padding: 10px 12px; - border: 1px solid #e2e2e2; - border-radius: 4px; - overflow-x: auto; } - -.declaration .highlight { - overflow-x: initial; - padding: 0 40px 40px 0; - margin-bottom: -25px; - background-color: transparent; - border: none; } - -.section-name { - margin: 0; - margin-left: 18px; } - -.task-group-section { - margin-top: 10px; - padding-left: 6px; - border-top: 1px solid #e2e2e2; } - -.task-group { - padding-top: 0px; } - -.task-name-container a[name]:before { - content: ""; - display: block; - padding-top: 70px; - margin: -70px 0 0; } - -.section-name-container { - position: relative; - display: inline-block; } - .section-name-container .section-name-link { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin-bottom: 0; } - .section-name-container .section-name { - position: relative; - pointer-events: none; - z-index: 1; } - .section-name-container .section-name a { - pointer-events: auto; } - -.item { - padding-top: 8px; - width: 100%; - list-style-type: none; } - .item a[name]:before { - content: ""; - display: block; - padding-top: 70px; - margin: -70px 0 0; } - .item code { - background-color: transparent; - padding: 0; } - .item .token, .item .direct-link { - display: inline-block; - text-indent: -20px; - padding-left: 3px; - margin-left: 35px; - font-size: 11.9px; - transition: all 300ms; } - .item .token-open { - margin-left: 20px; } - .item .discouraged { - text-decoration: line-through; } - .item .declaration-note { - font-size: .85em; - color: gray; - font-style: italic; } - -.pointer-container { - border-bottom: 1px solid #e2e2e2; - left: -23px; - padding-bottom: 13px; - position: relative; - width: 110%; } - -.pointer { - background: #f9f9f9; - border-left: 1px solid #e2e2e2; - border-top: 1px solid #e2e2e2; - height: 12px; - left: 21px; - top: -7px; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - position: absolute; - width: 12px; } - -.height-container { - display: none; - left: -25px; - padding: 0 25px; - position: relative; - width: 100%; - overflow: hidden; } - .height-container .section { - background: #f9f9f9; - border-bottom: 1px solid #e2e2e2; - left: -25px; - position: relative; - width: 100%; - padding-top: 10px; - padding-bottom: 5px; } - -.aside, .language { - padding: 6px 12px; - margin: 12px 0; - border-left: 5px solid #dddddd; - overflow-y: hidden; } - .aside .aside-title, .language .aside-title { - font-size: 9px; - letter-spacing: 2px; - text-transform: uppercase; - padding-bottom: 0; - margin: 0; - color: #aaa; - -webkit-user-select: none; } - .aside p:last-child, .language p:last-child { - margin-bottom: 0; } - -.language { - border-left: 5px solid #cde9f4; } - .language .aside-title { - color: #4b8afb; } - -.aside-warning, .aside-deprecated, .aside-unavailable { - border-left: 5px solid #ff6666; } - .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { - color: #ff0000; } - -.graybox { - border-collapse: collapse; - width: 100%; } - .graybox p { - margin: 0; - word-break: break-word; - min-width: 50px; } - .graybox td { - border: 1px solid #e2e2e2; - padding: 5px 25px 5px 10px; - vertical-align: middle; } - .graybox tr td:first-of-type { - text-align: right; - padding: 7px; - vertical-align: top; - word-break: normal; - width: 40px; } - -.slightly-smaller { - font-size: 0.9em; } - -#footer { - position: relative; - top: 10px; - bottom: 0px; - margin-left: 25px; } - #footer p { - margin: 0; - color: #aaa; - font-size: 0.8em; } - -html.dash header, html.dash #breadcrumbs, html.dash .sidebar { - display: none; } - -html.dash .main-content { - width: 980px; - margin-left: 0; - border: none; - width: 100%; - top: 0; - padding-bottom: 0; } - -html.dash .height-container { - display: block; } - -html.dash .item .token { - margin-left: 0; } - -html.dash .content-wrapper { - width: auto; } - -html.dash #footer { - position: static; } - -form[role=search] { - float: right; } - form[role=search] input { - font: Helvetica, freesans, Arial, sans-serif; - margin-top: 6px; - font-size: 13px; - line-height: 20px; - padding: 0px 10px; - border: none; - border-radius: 1em; } - .loading form[role=search] input { - background: white url(../img/spinner.gif) center right 4px no-repeat; } - form[role=search] .tt-menu { - margin: 0; - min-width: 300px; - background: #fff; - color: #333; - border: 1px solid #e2e2e2; - z-index: 4; } - form[role=search] .tt-highlight { - font-weight: bold; } - form[role=search] .tt-suggestion { - font: Helvetica, freesans, Arial, sans-serif; - font-size: 14px; - padding: 0 8px; } - form[role=search] .tt-suggestion span { - display: table-cell; - white-space: nowrap; } - form[role=search] .tt-suggestion .doc-parent-name { - width: 100%; - text-align: right; - font-weight: normal; - font-size: 0.9em; - padding-left: 16px; } - form[role=search] .tt-suggestion:hover, - form[role=search] .tt-suggestion.tt-cursor { - cursor: pointer; - background-color: #4183c4; - color: #fff; } - form[role=search] .tt-suggestion:hover .doc-parent-name, - form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { - color: #fff; } diff --git a/docs/docsets/Nimble.docset/Contents/Info.plist b/docs/docsets/Nimble.docset/Contents/Info.plist deleted file mode 100644 index 780a0a655..000000000 --- a/docs/docsets/Nimble.docset/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleIdentifier - com.jazzy.nimble - CFBundleName - Nimble - DocSetPlatformFamily - nimble - isDashDocset - - dashIndexFilePath - index.html - isJavaScriptEnabled - - DashDocSetFamily - dashtoc - - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes.html deleted file mode 100644 index 3ab36d709..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes.html +++ /dev/null @@ -1,1712 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Classes

-

The following classes are available globally.

- -
-
-
-
    -
  • -
    - - - - AssertionDispatcher - -
    -
    -
    -
    -
    -
    -

    AssertionDispatcher allows multiple AssertionHandlers to receive -assertion messages.

    - -

    @warning Does not fully dispatch if one of the handlers raises an exception. - This is possible with XCTest-based assertion handlers.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class AssertionDispatcher : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AssertionRecorder - -
    -
    -
    -
    -
    -
    -

    An AssertionHandler that silently records assertions that Nimble makes. -This is useful for testing failure messages for matchers.

    - -

    @see AssertionHandler

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class AssertionRecorder : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBExpectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBExpectation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NimbleXCTestHandler - -
    -
    -
    -
    -
    -
    -

    Default handler for Nimble. This assertion handler passes failures along to -XCTest.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NimbleXCTestHandler : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Alternative handler for Nimble. This assertion handler passes failures along -to XCTest by attempting to reduce the failure message size.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NimbleShortXCTestHandler : AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Helper class providing access to the currently executing XCTestCase instance, if any

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -final public class CurrentTestCaseTracker : NSObject, XCTestObservation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBWait - -
    -
    -
    -
    -
    -
    -

    Only classes, protocols, methods, properties, and subscript declarations can be -bridges to Objective-C via the @objc keyword. This class encapsulates callback-style -asynchronous waiting logic so that it may be called from Objective-C and Swift.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBWait : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBExpectationMessage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBExpectationMessage : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - FailureMessage - -
    -
    -
    -
    -
    -
    -

    Encapsulates the failure message that matchers can report to the end user.

    - -

    This is shared state between Nimble and matchers that mutate this value.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class FailureMessage : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBMatcher - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBMatcher : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBObjCBeCloseToMatcher : NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBMatcherResult - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    final public class NMBMatcherResult : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBMatcherStatus - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    final public class NMBMatcherStatus : NSObject
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class NMBObjCRaiseExceptionMatcher : NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Without Mach exceptions or the Objective-C runtime, there’s nothing to put in the exception object. It’s really just a boolean – either a SIGILL was caught or not.

    - -
    -
    -
    -
  • -
  • -
    - - - - SourceLocation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public final class SourceLocation : NSObject
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBStringer - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class NMBStringer : NSObject
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/AssertionDispatcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/AssertionDispatcher.html deleted file mode 100644 index 1497511fc..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/AssertionDispatcher.html +++ /dev/null @@ -1,1295 +0,0 @@ - - - - AssertionDispatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionDispatcher

-
-
- -
public class AssertionDispatcher : AssertionHandler
- -
-
-

AssertionDispatcher allows multiple AssertionHandlers to receive -assertion messages.

- -

@warning Does not fully dispatch if one of the handlers raises an exception. - This is possible with XCTest-based assertion handlers.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/AssertionRecorder.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/AssertionRecorder.html deleted file mode 100644 index c6b84b7a4..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/AssertionRecorder.html +++ /dev/null @@ -1,1321 +0,0 @@ - - - - AssertionRecorder Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionRecorder

-
-
- -
public class AssertionRecorder : AssertionHandler
- -
-
-

An AssertionHandler that silently records assertions that Nimble makes. -This is useful for testing failure messages for matchers.

- -

@see AssertionHandler

- -
-
-
-
    -
  • -
    - - - - assertions - -
    -
    -
    -
    -
    -
    -

    All the assertions that were captured by this recorder

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var assertions: [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func assert(_ assertion: Bool, message: FailureMessage, location: SourceLocation)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/CurrentTestCaseTracker.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/CurrentTestCaseTracker.html deleted file mode 100644 index 54ae113d6..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/CurrentTestCaseTracker.html +++ /dev/null @@ -1,1320 +0,0 @@ - - - - CurrentTestCaseTracker Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

CurrentTestCaseTracker

-
-
- -
@objc
-final public class CurrentTestCaseTracker : NSObject, XCTestObservation
- -
-
-

Helper class providing access to the currently executing XCTestCase instance, if any

- -
-
-
-
    -
  • -
    - - - - sharedInstance - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public static let sharedInstance: CurrentTestCaseTracker
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testCaseWillStart(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func testCaseWillStart(_ testCase: XCTestCase)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testCaseDidFinish(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func testCaseDidFinish(_ testCase: XCTestCase)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/FailureMessage.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/FailureMessage.html deleted file mode 100644 index 6c855c36f..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/FailureMessage.html +++ /dev/null @@ -1,1511 +0,0 @@ - - - - FailureMessage Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

FailureMessage

-
-
- -
public class FailureMessage : NSObject
- -
-
-

Encapsulates the failure message that matchers can report to the end user.

- -

This is shared state between Nimble and matchers that mutate this value.

- -
-
-
-
    -
  • -
    - - - - expected - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var expected: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - actualValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var actualValue: String?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var to: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - postfixMessage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var postfixMessage: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - postfixActual - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var postfixActual: String
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - extendedMessage - -
    -
    -
    -
    -
    -
    -

    An optional message that will be appended as a new line and provides additional details -about the failure. This message will only be visible in the issue navigator / in logs but -not directly in the source editor since only a single line is presented there.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var extendedMessage: String?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - userDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var userDescription: String?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - stringValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringValue: String { get set }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public override init()
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(stringValue:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(stringValue: String)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBExpectation.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBExpectation.html deleted file mode 100644 index 17fdabd9d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBExpectation.html +++ /dev/null @@ -1,1881 +0,0 @@ - - - - NMBExpectation Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBExpectation

-
-
- -
public class NMBExpectation : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public init(actualBlock: @escaping () -> NSObject?, negative: Bool, file: FileString, line: UInt)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withTimeout - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var withTimeout: (TimeInterval) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var to: (NMBMatcher) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toWithDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toWithDescription: (NMBMatcher, String) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNot: (NMBMatcher) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNotWithDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNotWithDescription: (NMBMatcher, String) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var notTo: (NMBMatcher) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notToWithDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var notToWithDescription: (NMBMatcher, String) -> NMBExpectation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toEventually - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventually: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventuallyWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toEventuallyNot - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventuallyNot: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toEventuallyNotWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNotEventually - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNotEventually: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNotEventuallyWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNever - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNever: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toNeverWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - neverTo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var neverTo: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var neverToWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toAlways - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toAlways: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var toAlwaysWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - alwaysTo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var alwaysTo: (NMBMatcher) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var alwaysToWithDescription: (NMBMatcher, String) -> Void { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func failWithMessage(_ message: String, file: FileString, line: UInt)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBExpectationMessage.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBExpectationMessage.html deleted file mode 100644 index 6e3eb381d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBExpectationMessage.html +++ /dev/null @@ -1,1507 +0,0 @@ - - - - NMBExpectationMessage Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBExpectationMessage

-
-
- -
public class NMBExpectationMessage : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - init(expectedTo:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expectedTo message: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expectedActualValueTo message: String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expectedActualValueTo message: String, customActualValue actual: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(fail:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(fail message: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(prepend:child:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(prepend message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(appendedMessage message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(prependedMessage message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(details:child:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(details message: String, child: NMBExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appendedBeNilHint() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appendedBeNilHint() -> NMBExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toSwift() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toSwift() -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcher.html deleted file mode 100644 index b75d8455a..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcher.html +++ /dev/null @@ -1,2004 +0,0 @@ - - - - NMBMatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBMatcher

-
-
- -
public class NMBMatcher : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - init(matcher:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(matcher: @escaping MatcherBlock)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(predicate:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(predicate: @escaping MatcherBlock)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPassMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func allPassMatcher(_ matcher: NMBMatcher) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAKindOfMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beAKindOfMatcher(_ expected: AnyClass) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beAnInstanceOfMatcher(_ expected: AnyClass) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beCloseToMatcher(_ expected: NSNumber, within: CDouble) -> NMBObjCBeCloseToMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmptyMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beEmptyMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beGreaterThanMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beGreaterThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beIdenticalToMatcher(_ expected: NSObject?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beLessThanMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beLessThanMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beLessThanOrEqualToMatcher(_ expected: NMBComparable?) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

beTruthy() / beFalsy() -

-
-
-
    -
  • -
    - - - - beTruthyMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beTruthyMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalsyMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beFalsyMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beTrueMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beTrueMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalseMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beFalseMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beNilMatcher() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beNilMatcher() -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWithMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func beginWithMatcher(_ expected: Any) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - containMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func containMatcher(_ expected: [NSObject]) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func containElementSatisfyingMatcher(_ matcher: @escaping ((NSObject) -> Bool)) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWithMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func endWithMatcher(_ expected: Any) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equalMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func equalMatcher(_ expected: NSObject) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - haveCountMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func haveCountMatcher(_ expected: NSNumber) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchMatcher(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func matchMatcher(_ expected: NSString) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func raiseExceptionMatcher() -> NMBObjCRaiseExceptionMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func satisfyAllOfMatcher(_ matchers: [NMBMatcher]) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func satisfyAnyOfMatcher(_ matchers: [NMBMatcher]) -> NMBMatcher
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcherResult.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcherResult.html deleted file mode 100644 index b096a0269..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcherResult.html +++ /dev/null @@ -1,1372 +0,0 @@ - - - - NMBMatcherResult Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBMatcherResult

-
-
- -
final public class NMBMatcherResult : NSObject
- -
-
-

Undocumented

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcherStatus.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcherStatus.html deleted file mode 100644 index 7c23916e1..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBMatcherStatus.html +++ /dev/null @@ -1,1453 +0,0 @@ - - - - NMBMatcherStatus Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBMatcherStatus

-
-
- -
final public class NMBMatcherStatus : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - matches - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let matches: NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - doesNotMatch - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let doesNotMatch: NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let fail: NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - hash - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public override var hash: Int { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - isEqual(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public override func isEqual(_ object: Any?) -> Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - from(status:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func from(status: MatcherStatus) -> NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - from(bool:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func from(bool success: Bool) -> NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toSwift() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toSwift() -> MatcherStatus
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBObjCBeCloseToMatcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBObjCBeCloseToMatcher.html deleted file mode 100644 index 26a1dccb9..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBObjCBeCloseToMatcher.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NMBObjCBeCloseToMatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBObjCBeCloseToMatcher

-
-
- -
public class NMBObjCBeCloseToMatcher : NMBMatcher
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - within - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var within: (CDouble) -> NMBObjCBeCloseToMatcher { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBObjCRaiseExceptionMatcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBObjCRaiseExceptionMatcher.html deleted file mode 100644 index 0eb9a61c1..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBObjCRaiseExceptionMatcher.html +++ /dev/null @@ -1,1349 +0,0 @@ - - - - NMBObjCRaiseExceptionMatcher Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBObjCRaiseExceptionMatcher

-
-
- -
public class NMBObjCRaiseExceptionMatcher : NMBMatcher
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - named - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var named: (_ name: String) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var reason: (_ reason: String?) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - userInfo - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var userInfo: (_ userInfo: NSDictionary?) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyingBlock - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public var satisfyingBlock: (_ block: ((NSException) -> Void)?) -> NMBObjCRaiseExceptionMatcher { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBStringer.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBStringer.html deleted file mode 100644 index 77a2a33a5..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBStringer.html +++ /dev/null @@ -1,1266 +0,0 @@ - - - - NMBStringer Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBStringer

-
-
- -
@objc
-public class NMBStringer : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - stringify(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func stringify(_ obj: Any?) -> String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBWait.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBWait.html deleted file mode 100644 index 24272fa9b..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NMBWait.html +++ /dev/null @@ -1,1382 +0,0 @@ - - - - NMBWait Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBWait

-
-
- -
public class NMBWait : NSObject
- -
-
-

Only classes, protocols, methods, properties, and subscript declarations can be -bridges to Objective-C via the @objc keyword. This class encapsulates callback-style -asynchronous waiting logic so that it may be called from Objective-C and Swift.

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public class func until(
    -    timeout: TimeInterval,
    -    file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class func until(
    -    timeout: NimbleTimeInterval,
    -    file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public class func throwableUntil(
    -    timeout: NimbleTimeInterval,
    -    file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) throws -> Void)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - until(_:line:action:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc(untilFile:line:action:)
    -public class func until(
    -    _ file: FileString = #file,
    -    line: UInt = #line,
    -    action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - until(_:line:action:) - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NimbleShortXCTestHandler.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NimbleShortXCTestHandler.html deleted file mode 100644 index d97e25366..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NimbleShortXCTestHandler.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NimbleShortXCTestHandler Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NimbleShortXCTestHandler

-
-
- -
public class NimbleShortXCTestHandler : AssertionHandler
- -
-
-

Alternative handler for Nimble. This assertion handler passes failures along -to XCTest by attempting to reduce the failure message size.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NimbleXCTestHandler.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NimbleXCTestHandler.html deleted file mode 100644 index 619174d7d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/NimbleXCTestHandler.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NimbleXCTestHandler Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NimbleXCTestHandler

-
-
- -
public class NimbleXCTestHandler : AssertionHandler
- -
-
-

Default handler for Nimble. This assertion handler passes failures along to -XCTest.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/SourceLocation.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/SourceLocation.html deleted file mode 100644 index 2f76893bc..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Classes/SourceLocation.html +++ /dev/null @@ -1,1318 +0,0 @@ - - - - SourceLocation Class Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

SourceLocation

-
-
- -
public final class SourceLocation : NSObject
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: FileString
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: UInt
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override public var description: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums.html deleted file mode 100644 index 190843125..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums.html +++ /dev/null @@ -1,1401 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
-
-
    -
  • -
    - - - - ExpectationStatus - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum ExpectationStatus : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ExpectationMessage - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public indirect enum ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ExpectationStyle - -
    -
    -
    -
    -
    -
    -

    The Expectation style intended for comparison to a MatcherStatus.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum ExpectationStyle
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MatcherStatus - -
    -
    -
    -
    -
    -
    -

    MatcherStatus is a trinary that indicates if a Matcher matches a given value or not

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum MatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ToSucceedResult - -
    -
    -
    -
    -
    -
    -

    Used by the succeed matcher.

    - -

    This is the return type for the closure.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum ToSucceedResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NimbleTimeInterval - -
    -
    -
    -
    -
    -
    -

    A reimplementation of DispatchTimeInterval without the never case, and conforming to Sendable.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum NimbleTimeInterval : Sendable, Equatable
    -
    extension NimbleTimeInterval: CustomStringConvertible
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationMessage.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationMessage.html deleted file mode 100644 index 4a92ad5f4..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationMessage.html +++ /dev/null @@ -1,1647 +0,0 @@ - - - - ExpectationMessage Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationMessage

-
-
- -
public indirect enum ExpectationMessage
- -
-
-

Undocumented

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    includes actual value in output (“expected to , got ”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case expectedActualValueTo(String)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    uses a custom actual value string in output (“expected to , got ”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case expectedCustomValueTo(String, actual: String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expectedTo(_:) - -
    -
    -
    -
    -
    -
    -

    excludes actual value in output (“expected to ”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case expectedTo(String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:) - -
    -
    -
    -
    -
    -
    -

    allows any free-form message (“”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fail(String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - prepends(_:_:) - -
    -
    -
    -
    -
    -
    -

    Not Fully Implemented Yet.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case prepends(String, ExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appends(_:_:) - -
    -
    -
    -
    -
    -
    -

    appends after an existing message (“ (use beNil() to match nils)”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case appends(ExpectationMessage, String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - details(_:_:) - -
    -
    -
    -
    -
    -
    -

    provides long-form multi-line explainations (“\n\n”)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case details(ExpectationMessage, String)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expectedMessage - -
    -
    -
    -
    -
    -
    -

    Returns the smallest message after the “expected to” string that summarizes the error.

    - -

    Returns the message part from ExpectationMessage, ignoring all .appends and .details.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var expectedMessage: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appended(message:) - -
    -
    -
    -
    -
    -
    -

    Appends a message after the primary expectation message

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appended(message: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appendedBeNilHint() - -
    -
    -
    -
    -
    -
    -

    Appends a message hinting to use beNil() for when the actual value given was nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appendedBeNilHint() -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - appended(details:) - -
    -
    -
    -
    -
    -
    -

    Appends a detailed (aka - multiline) message after the primary expectation message -Detailed messages will be placed after .appended(message:) calls.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func appended(details: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Replaces a primary expectation with one returned by f. Preserves all composite expectations -that were built upon it (aka - all appended(message:) and appended(details:).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func replacedExpectation(_ f: @escaping (ExpectationMessage) -> ExpectationMessage) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Wraps a primary expectation with text before and after it. -Alias to prepended(message: before).appended(message: after)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func wrappedExpectation(before: String, after: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Prepends a message by modifying the primary expectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func prepended(expectation message: String) -> ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Converts the tree of ExpectationMessages into a final built string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toString(actual: String, expected: String = "expected", to: String = "to") -> String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationStatus.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationStatus.html deleted file mode 100644 index 6f9d73b25..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationStatus.html +++ /dev/null @@ -1,1345 +0,0 @@ - - - - ExpectationStatus Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationStatus

-
-
- -
public enum ExpectationStatus : Equatable
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - pending - -
    -
    -
    -
    -
    -
    -

    No matchers have been performed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case pending
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - passed - -
    -
    -
    -
    -
    -
    -

    All matchers have passed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case passed
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - failed - -
    -
    -
    -
    -
    -
    -

    All matchers have failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case failed
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - mixed - -
    -
    -
    -
    -
    -
    -

    Multiple matchers have been peformed, with at least one passing and one failing.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case mixed
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationStyle.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationStyle.html deleted file mode 100644 index 3cd7cc87a..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ExpectationStyle.html +++ /dev/null @@ -1,1291 +0,0 @@ - - - - ExpectationStyle Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationStyle

-
-
- -
public enum ExpectationStyle
- -
-
-

The Expectation style intended for comparison to a MatcherStatus.

- -
-
-
-
    -
  • -
    - - - - toMatch - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case toMatch
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNotMatch - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case toNotMatch
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/MatcherStatus.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/MatcherStatus.html deleted file mode 100644 index bd9f989cb..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/MatcherStatus.html +++ /dev/null @@ -1,1383 +0,0 @@ - - - - MatcherStatus Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

MatcherStatus

-
-
- -
public enum MatcherStatus
- -
-
-

MatcherStatus is a trinary that indicates if a Matcher matches a given value or not

- -
-
-
-
    -
  • -
    - - - - matches - -
    -
    -
    -
    -
    -
    -

    Matches indicates if the matcher / matcher passes with the given value

    - -

    For example, equals(1) returns .matches for expect(1).to(equal(1)).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case matches
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - doesNotMatch - -
    -
    -
    -
    -
    -
    -

    DoesNotMatch indicates if the matcher fails with the given value, but would -succeed if the expectation was inverted.

    - -

    For example, equals(2) returns .doesNotMatch for expect(1).toNot(equal(2)).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case doesNotMatch
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail - -
    -
    -
    -
    -
    -
    -

    Fail indicates the matcher will never satisfy with the given value in any case. -A perfect example is that most matchers fail whenever given nil.

    - -

    Using equal(1) fails both expect(nil).to(equal(1)) and expect(nil).toNot(equal(1)). -Note: Matcher’s requireNonNil property will also provide this feature mostly for free. - Your matcher will still need to guard against nils, but error messaging will be - handled for you.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fail
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(bool:) - -
    -
    -
    -
    -
    -
    -

    Converts a boolean to either .matches (if true) or .doesNotMatch (if false).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(bool matches: Bool)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toObjectiveC() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toObjectiveC() -> NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/NimbleTimeInterval.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/NimbleTimeInterval.html deleted file mode 100644 index 0d2d80672..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/NimbleTimeInterval.html +++ /dev/null @@ -1,1479 +0,0 @@ - - - - NimbleTimeInterval Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NimbleTimeInterval

-
-
- -
public enum NimbleTimeInterval : Sendable, Equatable
-
extension NimbleTimeInterval: CustomStringConvertible
- -
-
-

A reimplementation of DispatchTimeInterval without the never case, and conforming to Sendable.

- -
-
-
-
    -
  • -
    - - - - seconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case seconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - milliseconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case milliseconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - microseconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case microseconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - nanoseconds(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case nanoseconds(Int)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: NimbleTimeInterval, rhs: NimbleTimeInterval) -> Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - dispatchTimeInterval - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var dispatchTimeInterval: DispatchTimeInterval { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - nanoseconds - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var nanoseconds: UInt64 { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - timeInterval - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var timeInterval: TimeInterval { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ToSucceedResult.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ToSucceedResult.html deleted file mode 100644 index e29140326..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Enums/ToSucceedResult.html +++ /dev/null @@ -1,1293 +0,0 @@ - - - - ToSucceedResult Enumeration Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ToSucceedResult

-
-
- -
public enum ToSucceedResult
- -
-
-

Used by the succeed matcher.

- -

This is the return type for the closure.

- -
-
-
-
    -
  • -
    - - - - succeeded - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case succeeded
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - failed(reason:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case failed(reason: String)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions.html deleted file mode 100644 index d18e8da7f..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions.html +++ /dev/null @@ -1,1966 +0,0 @@ - - - - Extensions Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Extensions

-

The following extensions are available globally.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/AnySequence.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/AnySequence.html deleted file mode 100644 index b97e17705..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/AnySequence.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - AnySequence Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Array.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Array.html deleted file mode 100644 index 50843ebc5..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Array.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - Array Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Data.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Data.html deleted file mode 100644 index 7cda82ea9..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Data.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - Data Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Date.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Date.html deleted file mode 100644 index c9372f85b..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Date.html +++ /dev/null @@ -1,1319 +0,0 @@ - - - - Date Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Date

-
-
- -
extension Date: NMBDoubleConvertible
-
extension Date: TestOutputStringConvertible
-
extension Date: @unchecked Sendable
- -
-
- -
-
-
-
    -
  • -
    - - - - doubleValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var doubleValue: CDouble { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - advanced(by:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func advanced(by nimbleTimeInterval: NimbleTimeInterval) -> Date
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Double.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Double.html deleted file mode 100644 index 54eb1fad3..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Double.html +++ /dev/null @@ -1,1290 +0,0 @@ - - - - Double Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Double

-
-
- -
extension Double: ExpressibleByBooleanLiteral
-
extension Double: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Float.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Float.html deleted file mode 100644 index e8194c3e5..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Float.html +++ /dev/null @@ -1,1290 +0,0 @@ - - - - Float Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Float

-
-
- -
extension Float: ExpressibleByBooleanLiteral
-
extension Float: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int.html deleted file mode 100644 index 6d6c2e2b2..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int

-
-
- -
extension Int: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int16.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int16.html deleted file mode 100644 index e82972cec..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int16.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int16 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int16

-
-
- -
extension Int16: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int32.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int32.html deleted file mode 100644 index cdc017258..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int32.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int32 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int32

-
-
- -
extension Int32: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int64.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int64.html deleted file mode 100644 index a629aaccb..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int64.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int64 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int64

-
-
- -
extension Int64: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int8.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int8.html deleted file mode 100644 index d141678d2..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/Int8.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - Int8 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Int8

-
-
- -
extension Int8: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSArray.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSArray.html deleted file mode 100644 index 65e172d7e..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSArray.html +++ /dev/null @@ -1,1265 +0,0 @@ - - - - NSArray Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSDate.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSDate.html deleted file mode 100644 index d0b89c531..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSDate.html +++ /dev/null @@ -1,1291 +0,0 @@ - - - - NSDate Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NSDate

-
-
- -
extension NSDate: NMBDoubleConvertible
-
extension NSDate: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - doubleValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var doubleValue: CDouble { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSIndexSet.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSIndexSet.html deleted file mode 100644 index 75e05d666..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSIndexSet.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NSIndexSet Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSNumber.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSNumber.html deleted file mode 100644 index 8d65bc829..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSNumber.html +++ /dev/null @@ -1,1292 +0,0 @@ - - - - NSNumber Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NSNumber

-
-
- -
extension NSNumber: NMBDoubleConvertible
-
extension NSNumber: NMBComparable
-
extension NSNumber: TestOutputStringConvertible
- -
-
- -
-
-
-
    -
  • -
    - - - - NMB_compare(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSString.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSString.html deleted file mode 100644 index 1a2de679a..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/NSString.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - NSString Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/String.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/String.html deleted file mode 100644 index 979726b3d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/String.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - String Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/TimeInterval.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/TimeInterval.html deleted file mode 100644 index 490ba7209..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/TimeInterval.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - TimeInterval Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- - -
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt.html deleted file mode 100644 index 1f5e1215d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt

-
-
- -
extension UInt: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt16.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt16.html deleted file mode 100644 index 58d82f62f..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt16.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt16 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt16

-
-
- -
extension UInt16: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt32.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt32.html deleted file mode 100644 index 2187727fb..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt32.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt32 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt32

-
-
- -
extension UInt32: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt64.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt64.html deleted file mode 100644 index d5d5b446f..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt64.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt64 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt64

-
-
- -
extension UInt64: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt8.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt8.html deleted file mode 100644 index bebf61837..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Extensions/UInt8.html +++ /dev/null @@ -1,1262 +0,0 @@ - - - - UInt8 Extension Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

UInt8

-
-
- -
extension UInt8: ExpressibleByBooleanLiteral
- -
-
- -
-
-
-
    -
  • -
    - - - - init(booleanLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(booleanLiteral value: Bool)
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Functions.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Functions.html deleted file mode 100644 index b9e37111e..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Functions.html +++ /dev/null @@ -1,10197 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Functions

-

The following functions are available globally.

- -
-
-
-
    -
  • -
    - - - - withAssertionHandler(_:file:line:closure:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Allows you to temporarily replace the current Nimble assertion handler with -the one provided for the scope of the closure.

    - -

    Once the closure finishes, then the original Nimble assertion handler is restored.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -

    @see AssertionHandler

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler,
    -                                 file: FileString = #file,
    -                                 line: UInt = #line,
    -                                 closure: () async throws -> Void) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - gatherExpectations(silently:closure:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Captures expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about expectations -that occur within a closure.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherFailingExpectations

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherExpectations(silently: Bool = false, closure: () async -> Void) async -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - gatherFailingExpectations(silently:closure:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Captures failed expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about failed -expectations that occur within a closure.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherExpectations -@see raiseException source for an example use case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherFailingExpectations(silently: Bool = false, closure: () async -> Void) async -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allows you to temporarily replace the current Nimble assertion handler with -the one provided for the scope of the closure.

    - -

    @warning -This form of withAssertionHandler does not work in any kind of -async context. Use the async form of withAssertionHandler -if you are running tests in an async context.

    - -

    Once the closure finishes, then the original Nimble assertion handler is restored.

    - -

    @see AssertionHandler

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler,
    -                                 file: FileString = #file,
    -                                 line: UInt = #line,
    -                                 closure: () throws -> Void)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Captures expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about expectations -that occur within a closure.

    - -

    @warning -This form of gatherExpectations does not work in any kind of -async context. Use the async form of gatherExpectations -if you are running tests in an async context.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherFailingExpectations

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Captures failed expectations that occur in the given closure. Note that all -expectations will still go through to the default Nimble handler.

    - -

    This can be useful if you want to gather information about failed -expectations that occur within a closure.

    - -

    @warning -This form of gatherFailingExpectations does not work in any kind of -async context. Use the async form of gatherFailingExpectations -if you are running tests in an async context.

    - -

    @param silently expectations are no longer send to the default Nimble - assertion handler when this is true. Defaults to false.

    - -

    @see gatherExpectations -@see raiseException source for an example use case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func gatherFailingExpectations(silently: Bool = false, closure: () -> Void) -> [AssertionRecord]
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func recordFailure(_ message: String, location: SourceLocation)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The value given is lazily evaluated.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @escaping () async throws -> T?) -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> T)) -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> T?)) -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> Void)) -> AsyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The value given is lazily evaluated. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () async throws -> T?) async -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> T)) async -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> T?)) async -> AsyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expecta(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncExpectation on a given actual value. The closure is lazily invoked. -This is provided to avoid confusion between expect -> SyncExpectation and expect -> AsyncExpectation

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expecta(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> Void)) async -> AsyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - waitUntil(timeout:file:line:action:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Wait asynchronously until the done closure is called or the timeout has been reached.

    - -

    @discussion -Call the done() closure to indicate the waiting has completed.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func waitUntil(timeout: NimbleTimeInterval = PollingDefaults.timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) async -> Void) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - waitUntil(timeout:file:line:action:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Wait asynchronously until the done closure is called or the timeout has been reached.

    - -

    @discussion -Call the done() closure to indicate the waiting has completed.

    - -

    @warning -Unlike the synchronous version of this call, this does not support catching Objective-C exceptions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func waitUntil(timeout: NimbleTimeInterval = PollingDefaults.timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void) async
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncRequirement<Void>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make a SyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided as an alternative to require, for when you want to be specific about whether you’re using SyncRequirement or AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requires(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncRequirement<Void>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @escaping () async throws -> T?) -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: () -> (() async throws -> T)) -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func require<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: () -> (() async throws -> T?)) -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requirea(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The value given is lazily evaluated.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided to avoid confusion between require -> SyncRequirement and require -> AsyncRequirement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requirea<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () async throws -> T?) async -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requirea(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided to avoid confusion between require -> SyncRequirement and require -> AsyncRequirement

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requirea<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() async throws -> T)) async -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requirea(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Make an AsyncRequirement on a given actual value. The closure is lazily invoked.

    - -

    require will return the result of the expression if the matcher passes, and throw an error if not. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -

    This is provided to avoid confusion between require -> SyncRequirement and require -> AsyncRequirement

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func requirea<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() async throws -> T?)) async -> AsyncRequirement<T>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Unwrap -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwraps will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwraps<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toNot(beNil()).

    - -

    unwraps will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwraps<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrap(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrap(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrap will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrap<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrapa(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrapa will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrapa<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - unwrapa(file:line:customError:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toNot(beNil()).

    - -

    unwrapa will return the result of the expression if it is non-nil, and throw an error if the value is nil. -if a customError is given, then that will be thrown. Otherwise, a RequireError will be thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func unwrapa<T>(file: FileString = #file, line: UInt = #line, customError: Error? = nil, _ expression: @autoclosure () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Wait asynchronously until the done closure is called or the timeout has been reached.

    - -

    @discussion -Call the done() closure to indicate the waiting has completed.

    - -

    This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `waitUntil` does not work in async contexts. Use the async variant as a drop-in replacement")
    -public func waitUntil(timeout: NimbleTimeInterval = PollingDefaults.timeout, file: FileString = #file, line: UInt = #line, action: @escaping (@escaping () -> Void) -> Void)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The value given is lazily evaluated.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expect(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expect(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The value given is lazily evaluated. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) -> SyncExpectation<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - expects(file:line:_:) - -
    -
    -
    -
    -
    -
    -

    Make a SyncExpectation on a given actual value. The closure is lazily invoked. -This is provided as an alternative to expect which avoids overloading with expect -> AsyncExpectation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func expects(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> Void)) -> SyncExpectation<Void>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:location:) - -
    -
    -
    -
    -
    -
    -

    Always fails the test with a message and a specified location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func fail(_ message: String, location: SourceLocation)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:file:line:) - -
    -
    -
    -
    -
    -
    -

    Always fails the test with a message.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func fail(_ message: String, file: FileString = #file, line: UInt = #line)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - fail(_:line:) - -
    -
    -
    -
    -
    -
    -

    Always fails the test.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func fail(_ file: FileString = #file, line: UInt = #line)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passFunc: @escaping (S.Element) throws -> Bool
    -) -> Matcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passName: String,
    -    _ passFunc: @escaping (S.Element) throws -> Bool
    -) -> Matcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S>(_ elementMatcher: Matcher<S.Element>) -> Matcher<S> where S : Sequence
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passFunc: @escaping (S.Element) async throws -> Bool
    -) -> AsyncMatcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S: Sequence>(
    -    _ passName: String,
    -    _ passFunc: @escaping (S.Element) async throws -> Bool
    -) -> AsyncMatcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - allPass(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func allPass<S>(_ elementMatcher: AsyncMatcher<S.Element>) -> AsyncMatcher<S> where S : Sequence
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAKindOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an instance of the given class.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAKindOf<T>(_ expectedType: T.Type) -> Matcher<Any>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAKindOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an instance of the given class. -@see beAnInstanceOf if you want to match against the exact class

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAKindOf(_ expectedClass: AnyClass) -> Matcher<NSObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAnInstanceOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an exact instance of the given class.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAnInstanceOf<T>(_ expectedType: T.Type) -> Matcher<Any>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beAnInstanceOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is an instance of the given class. -@see beAKindOf if you want to match against subclasses

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beAnInstanceOf(_ expectedClass: AnyClass) -> Matcher<NSObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - defaultDelta() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func defaultDelta<F>() -> F where F : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beCloseTo(_:within:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is close to another. This is used for floating -point values which can have imprecise results when doing arithmetic on them.

    - -

    @see equal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beCloseTo<Value: FloatingPoint>(
    -    _ expectedValue: Value,
    -    within delta: Value = defaultDelta()
    -) -> Matcher<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beCloseTo(_:within:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is close to another. This is used for floating -point values which can have imprecise results when doing arithmetic on them.

    - -

    @see equal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beCloseTo<Value: NMBDoubleConvertible>(
    -    _ expectedValue: Value,
    -    within delta: Double = DefaultDelta
    -) -> Matcher<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beCloseTo(_:within:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beCloseTo<Value: FloatingPoint, Values: Collection>(
    -    _ expectedValues: Values,
    -    within delta: Value = defaultDelta()
    -) -> Matcher<Values> where Values.Element == Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Operators -

-
-
-
    -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: Value) where Value : Collection, Value.Element : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: Value) async where Value : Collection, Value.Element : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: Value) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: Value) async where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Value)) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Value)) async where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Value)) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Value)) async where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: Value) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: Value) async where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Double)) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ≈(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func  <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Double)) async where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: SyncExpectation<Value>, rhs: (expected: Value, delta: Double)) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <Value>(lhs: AsyncExpectation<Value>, rhs: (expected: Value, delta: Double)) async where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ±(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func ± <Value>(lhs: Value, rhs: Value) -> (expected: Value, delta: Value) where Value : FloatingPoint
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ±(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func ± <Value>(lhs: Value, rhs: Double) -> (expected: Value, delta: Double) where Value : NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty<S>() -> Matcher<S> where S : Sequence
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty<S>() -> Matcher<S> where S : SetAlgebra
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty<S>() -> Matcher<S> where S : Sequence, S : SetAlgebra
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For NSString instances, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NSString>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NSDictionary>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NSArray>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beEmpty() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when a value is “empty”. For collections, this -means the are no items in that collection. For strings, it is an empty string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beEmpty() -> Matcher<NMBCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beGreaterThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThan<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: SyncExpectation<T>, rhs: T) where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beGreaterThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThan<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: SyncExpectation<T>, rhs: T?) where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func > <T>(lhs: AsyncExpectation<T>, rhs: T?) async where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: SyncExpectation<T>, rhs: T) where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is greater than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beGreaterThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: SyncExpectation<T>, rhs: T) where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - >=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func >= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beIdenticalTo(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is the same instance -as the expected instance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beIdenticalTo(_ expected: AnyObject?) -> Matcher<AnyObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ===(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func === (lhs: SyncExpectation<AnyObject>, rhs: AnyObject?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ===(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func === (lhs: AsyncExpectation<AnyObject>, rhs: AnyObject?) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func !== (lhs: SyncExpectation<AnyObject>, rhs: AnyObject?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func !== (lhs: AsyncExpectation<AnyObject>, rhs: AnyObject?) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - be(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is the same instance -as the expected instance.

    - -

    Alias for “beIdenticalTo”.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func be(_ expected: AnyObject?) -> Matcher<AnyObject>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beLessThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThan<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: SyncExpectation<V>, rhs: V) where V : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: AsyncExpectation<V>, rhs: V) async where V : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beLessThan(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThan<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: SyncExpectation<V>, rhs: V?) where V : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func < <V>(lhs: AsyncExpectation<V>, rhs: V?) async where V : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: SyncExpectation<T>, rhs: T) where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is less than -or equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beLessThanOrEqualTo<T>(_ expectedValue: T?) -> Matcher<T> where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: SyncExpectation<T>, rhs: T) where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - <=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func <= <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : NMBComparable
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

beTrue() / beFalse() -

-
-
-
    -
  • -
    - - - - beTrue() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is exactly true. -This matcher will not match against nils.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beTrue() -> Matcher<Bool>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalse() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is exactly false. -This matcher will not match against nils.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beFalse() -> Matcher<Bool>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

beTruthy() / beFalsy() -

-
-
-
    -
  • -
    - - - - beTruthy() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is not logically false.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beTruthy<T>() -> Matcher<T> where T : Equatable, T : ExpressibleByBooleanLiteral
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFalsy() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is logically false. -This matcher will match against nils.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beFalsy<T>() -> Matcher<T> where T : Equatable, T : ExpressibleByBooleanLiteral
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beNil() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beNil<T>() -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beSuccess(test:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher for Result that succeeds when the actual value is success.

    - -

    You can pass a closure to do any arbitrary custom matching to the value inside result. -The closure only gets called when the result is success.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beSuccess<Success, Failure>(
    -    test: ((Success) -> Void)? = nil
    -) -> Matcher<Result<Success, Failure>>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beFailure(test:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher for Result that succeeds when the actual value is failure.

    - -

    You can pass a closure to do any arbitrary custom matching to the error inside result. -The closure only gets called when the result is failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beFailure<Success, Failure>(
    -    test: ((Failure) -> Void)? = nil
    -) -> Matcher<Result<Success, Failure>>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beVoid() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is Void.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beVoid() -> Matcher<()>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == (lhs: SyncExpectation<()>, rhs: ())
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == (lhs: AsyncExpectation<()>, rhs: ()) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != (lhs: SyncExpectation<()>, rhs: ())
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != (lhs: AsyncExpectation<()>, rhs: ()) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beWithin(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is within given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beWithin<T>(_ range: Range<T>) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beWithin(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is within given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beWithin<T>(_ range: ClosedRange<T>) -> Matcher<T> where T : Comparable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence’s first element -is equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith<S>(_ startingElement: S.Element) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection’s first element -is equal to the expected object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith(_ startingElement: Any) -> Matcher<NMBOrderedCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains expected substring -where the expected substring’s location is zero.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith(_ startingSubstring: String) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(prefix:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the exepected sequence is a prefix of the actual sequence.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2854218-starts

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith<Seq1: Sequence, Seq2: Sequence>(prefix expectedPrefix: Seq2?)
    -    -> Matcher<Seq1> where Seq1.Element: Equatable, Seq1.Element == Seq2.Element
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - beginWith(prefix:by:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the expected sequence is the prefix of the actual sequence, using the given matcher as the equivalence test.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2996828-starts

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func beginWith<Seq1: Sequence, Seq2: Sequence>(
    -    prefix expectedPrefix: Seq2?,
    -    by areEquivalent: @escaping (Seq1.Element, Seq2.Element) -> Bool
    -) -> Matcher<Seq1>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: S.Element...) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: [S.Element]) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: S.Element...) -> Matcher<S> where S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: [S.Element]) -> Matcher<S> where S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: S.Element...) -> Matcher<S> where S : Sequence, S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set contains the expected values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain<S>(_ items: [S.Element]) -> Matcher<S> where S : Sequence, S : SetAlgebra, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains the expected substring.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: String...) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: [String]) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains the expected substring.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: NSString...) -> Matcher<NSString>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ substrings: [NSString]) -> Matcher<NSString>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection contains the expected object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ items: Any?...) -> Matcher<NMBContainer>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - contain(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contain(_ items: [Any?]) -> Matcher<NMBContainer>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func containElementSatisfying<S: Sequence>(
    -    _ matcher: @escaping ((S.Element) -> Bool), _ matcherDescription: String = ""
    -) -> Matcher<S>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func containElementSatisfying<S: Sequence>(
    -    _ matcher: @escaping ((S.Element) async -> Bool), _ matcherDescription: String = ""
    -) -> AsyncMatcher<S>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - elementsEqual(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence and the exepected sequence contain the same elements in -the same order.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2854213-elementsequal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func elementsEqual<Seq1: Sequence, Seq2: Sequence>(
    -    _ expectedValue: Seq2?
    -) -> Matcher<Seq1> where Seq1.Element: Equatable, Seq1.Element == Seq2.Element
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - elementsEqual(_:by:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence and the exepected sequence contain equivalent elements in -the same order, using the given matcher as the equivalence test.

    - -

    This is a matcher abstraction for https://developer.apple.com/documentation/swift/sequence/2949668-elementsequal

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func elementsEqual<Seq1: Sequence, Seq2: Sequence>(
    -    _ expectedValue: Seq2?,
    -    by areEquivalent: @escaping (Seq1.Element, Seq2.Element) -> Bool
    -) -> Matcher<Seq1>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual sequence’s last element -is equal to the expected value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func endWith<S>(_ endingElement: S.Element) -> Matcher<S> where S : Sequence, S.Element : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection’s last element -is equal to the expected object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func endWith(_ endingElement: Any) -> Matcher<NMBOrderedCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - endWith(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string contains the expected substring -where the expected substring’s location is the actual string’s length minus the -expected substring’s length.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func endWith(_ endingSubstring: String) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple2 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable>(
    -    _ expectedValue: (T1, T2)?
    -) -> Matcher<(T1, T2)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2)>,
    -    rhs: (T1, T2)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple3 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable>(
    -    _ expectedValue: (T1, T2, T3)?
    -) -> Matcher<(T1, T2, T3)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3)>,
    -    rhs: (T1, T2, T3)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple4 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    _ expectedValue: (T1, T2, T3, T4)?
    -) -> Matcher<(T1, T2, T3, T4)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4)>,
    -    rhs: (T1, T2, T3, T4)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple5 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    _ expectedValue: (T1, T2, T3, T4, T5)?
    -) -> Matcher<(T1, T2, T3, T4, T5)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5)>,
    -    rhs: (T1, T2, T3, T4, T5)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple6 -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual tuple is equal to the expected tuple. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    _ expectedValue: (T1, T2, T3, T4, T5, T6)?
    -) -> Matcher<(T1, T2, T3, T4, T5, T6)>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<(T1, T2, T3, T4, T5, T6)>,
    -    rhs: (T1, T2, T3, T4, T5, T6)?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple2 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable>(
    -    _ expectedValue: [(T1, T2)]?
    -) -> Matcher<[(T1, T2)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2)]>,
    -    rhs: [(T1, T2)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple3 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable>(
    -    _ expectedValue: [(T1, T2, T3)]?
    -) -> Matcher<[(T1, T2, T3)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3)]>,
    -    rhs: [(T1, T2, T3)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple4 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    _ expectedValue: [(T1, T2, T3, T4)]?
    -) -> Matcher<[(T1, T2, T3, T4)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4)]>,
    -    rhs: [(T1, T2, T3, T4)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple5 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    _ expectedValue: [(T1, T2, T3, T4, T5)]?
    -) -> Matcher<[(T1, T2, T3, T4, T5)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5)]>,
    -    rhs: [(T1, T2, T3, T4, T5)]?
    -) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Tuple6 Array -

-
-
-
    -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples. -Values can support equal by supporting the Equatable protocol.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    _ expectedValue: [(T1, T2, T3, T4, T5, T6)]?
    -) -> Matcher<[(T1, T2, T3, T4, T5, T6)]>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: SyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T1: Equatable, T2: Equatable, T3: Equatable, T4: Equatable, T5: Equatable, T6: Equatable>(
    -    lhs: AsyncExpectation<[(T1, T2, T3, T4, T5, T6)]>,
    -    rhs: [(T1, T2, T3, T4, T5, T6)]?
    -) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is equal to the expected value. -Values can support equal by supporting the Equatable protocol.

    - -

    @see beCloseTo if you want to match imprecise types (eg - floats, doubles).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: T) -> Matcher<T> where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher allowing comparison of collection with optional type

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: [T?]) -> Matcher<[T?]> where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value is equal to the expected value. -Values can support equal by supporting the Equatable protocol.

    - -

    @see beCloseTo if you want to match imprecise types (eg - floats, doubles).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: T?) -> Matcher<T> where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>) -> Matcher<Set<T>> where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>?) -> Matcher<Set<T>> where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>) -> Matcher<Set<T>> where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual set is equal to the expected set.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<T>(_ expectedValue: Set<T>?) -> Matcher<Set<T>> where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - equal(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual dictionary is equal to the expected dictionary

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func equal<K, V>(_ expectedValue: [K : V?]) -> Matcher<[K : V]> where K : Hashable, V : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<T>, rhs: T) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<T>, rhs: T?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<T>, rhs: T) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<T>, rhs: T?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<[T]>, rhs: [T]?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<[T]>, rhs: [T]?) where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: SyncExpectation<Set<T>>, rhs: Set<T>?) where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T, C>(lhs: SyncExpectation<[T : C]>, rhs: [T : C]?) where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T, C>(lhs: SyncExpectation<[T : C]>, rhs: [T : C]?) where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<T>, rhs: T?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<T>, rhs: T) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<T>, rhs: T?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<[T]>, rhs: [T]?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<[T]>, rhs: [T]?) async where T : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T>(lhs: AsyncExpectation<Set<T>>, rhs: Set<T>?) async where T : Comparable, T : Hashable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func == <T, C>(lhs: AsyncExpectation<[T : C]>, rhs: [T : C]?) async where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func != <T, C>(lhs: AsyncExpectation<[T : C]>, rhs: [T : C]?) async where T : Hashable, C : Equatable
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - haveCount(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual Collection’s count equals -the expected value

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func haveCount<T>(_ expectedValue: Int) -> Matcher<T> where T : Collection
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - haveCount(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual collection’s count equals -the expected value

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func haveCount(_ expectedValue: Int) -> Matcher<NMBCollection>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - map(_:_:) - -
    -
    -
    -
    -
    -
    -

    map works by transforming the expression to a value that the given matcher uses.

    - -

    For example, you might only care that a particular property on a method equals some other value. -So, you could write expect(myObject).to(lens(\.someIntValue, equal(3)). -This is also useful in conjunction with satisfyAllOf to do a partial equality of an object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func map<T, U>(_ transform: @escaping (T) throws -> U, _ matcher: Matcher<U>) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - map(_:_:) - -
    -
    -
    -
    -
    -
    -

    map works by transforming the expression to a value that the given matcher uses.

    - -

    For example, you might only care that a particular property on a method equals some other value. -So, you could write expect(myObject).to(lens(\.someIntValue, equal(3)). -This is also useful in conjunction with satisfyAllOf to do a partial equality of an object.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func map<T, U>(_ transform: @escaping (T) async throws -> U, _ matcher: some AsyncableMatcher<U>) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - match(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual string satisfies the regular expression -described by the expected string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func match(_ expectedValue: String?) -> Matcher<String>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchError(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression evaluates to an -error from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparison by _domain and _code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func matchError<T>(_ error: T) -> Matcher<Error> where T : Error
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchError(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression evaluates to an -error from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func matchError<T>(_ error: T) -> Matcher<Error> where T : Equatable, T : Error
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - matchError(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression evaluates to an -error of the specified type

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func matchError<T>(_ errorType: T.Type) -> Matcher<Error> where T : Error
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func postNotifications<Out>(
    -    _ matcher: Matcher<[Notification]>,
    -    from center: NotificationCenter = .default
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func postDistributedNotifications<Out>(
    -    _ matcher: Matcher<[Notification]>,
    -    from center: DistributedNotificationCenter = .default(),
    -    names: Set<Notification.Name>
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression raises an -exception with the specified name, reason, and/or userInfo.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the raised exception. The closure only gets called when an exception -is raised.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func raiseException<Out>(
    -    named: NSExceptionName? = nil,
    -    reason: String? = nil,
    -    userInfo: NSDictionary? = nil,
    -    closure: ((NSException) -> Void)? = nil
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression raises an -exception with the specified name, reason, and/or userInfo.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the raised exception. The closure only gets called when an exception -is raised.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func raiseException<Out>(
    -    named: String?,
    -    reason: String? = nil,
    -    userInfo: NSDictionary? = nil,
    -    closure: ((NSException) -> Void)? = nil
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAllOf<T>(_ matchers: Matcher<T>...) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAllOf<T>(_ matchers: [Matcher<T>]) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - &&(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func && <T>(left: Matcher<T>, right: Matcher<T>) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAllOf<T>(_ matchers: any AsyncableMatcher<T>...) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAllOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with all of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAllOf<T>(_ matchers: [any AsyncableMatcher<T>]) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - &&(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func && <T>(left: some AsyncableMatcher<T>, right: some AsyncableMatcher<T>) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAnyOf<T>(_ matchers: Matcher<T>...) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfyAnyOf<T>(_ matchers: [Matcher<T>]) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ||(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func || <T>(left: Matcher<T>, right: Matcher<T>) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the variable list of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAnyOf<T>(_ matchers: any AsyncableMatcher<T>...) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfyAnyOf(_:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual value matches with any of the matchers -provided in the array of matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(macOS 13.0.0, iOS 16.0.0, tvOS 16.0.0, watchOS 9.0.0, *)
    -public func satisfyAnyOf<T>(_ matchers: [any AsyncableMatcher<T>]) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ||(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func || <T>(left: some AsyncableMatcher<T>, right: some AsyncableMatcher<T>) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Run the provided block. If a POSIX SIGILL is received, handle it and return a BadInstructionException (which is just an empty object in this POSIX signal version). Otherwise return nil. -NOTE: This function is only intended for use in test harnesses – use in a distributed build is almost certainly a bad choice. If a SIGILL is received, the block will be interrupted using a C longjmp. The risks associated with abrupt jumps apply here: most Swift functions are not interrupt-safe. Memory may be leaked and the program will not necessarily be left in a safe state.

    - -
    -
    -
    -
  • -
  • -
    - - - - throwAssertion() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwAssertion<Out>() -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - throwError() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparison by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<Out>() -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T, Out>(_ error: T, closure: ((Error) -> Void)? = nil) -> Matcher<Out> where T : Error
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T, Out>(_ error: T, closure: ((T) -> Void)? = nil) -> Matcher<Out> where T : Equatable, T : Error
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws an -error of the specified type or from the specified case.

    - -

    Errors are tried to be compared by their implementation of Equatable, -otherwise they fallback to comparision by _domain and _code.

    - -

    Alternatively, you can pass a closure to do any arbitrary custom matching -to the thrown error. The closure only gets called when an error was thrown.

    - -

    nil arguments indicates that the matcher should not attempt to match against -that parameter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T: Error, Out>(
    -    errorType: T.Type,
    -    closure: ((T) -> Void)? = nil
    -) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - throwError(closure:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws any -error or when the passed closures’ arbitrary custom matching succeeds.

    - -

    This duplication to it’s generic adequate is required to allow to receive -values of the existential type Error in the closure.

    - -

    The closure only gets called when an error was thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<Out>(closure: @escaping ((Error) -> Void)) -> Matcher<Out>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - throwError(closure:) - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that succeeds when the actual expression throws any -error or when the passed closures’ arbitrary custom matching succeeds.

    - -

    This duplication to it’s generic adequate is required to allow to receive -values of the existential type Error in the closure.

    - -

    The closure only gets called when an error was thrown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func throwError<T, Out>(closure: @escaping ((T) -> Void)) -> Matcher<Out> where T : Error
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - succeed() - -
    -
    -
    -
    -
    -
    -

    A Nimble matcher that takes in a closure for validation.

    - -

    Return .succeeded when the validation succeeds. -Return .failed with a failure reason when the validation fails.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func succeed() -> Matcher<ToSucceedResult>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

UnwrapEventually -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwraps<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () throws -> T?) throws -> T
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Makes sure that the expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to require(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwraps<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() throws -> T?)) throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrap(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrap(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrap<T>(file: FileString = #file, line: UInt = #line, _ expression: () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrapa(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrapa<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure @escaping () async throws -> T?) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollUnwrapa(file:line:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Makes sure that the async expression evaluates to a non-nil value, otherwise throw an error. -As you can tell, this is a much less verbose equivalent to requirea(expression).toEventuallyNot(beNil())

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func pollUnwrapa<T>(file: FileString = #file, line: UInt = #line, _ expression: @autoclosure () -> (() async throws -> T?)) async throws -> T
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - stringify(_:) - -
    -
    -
    -
    -
    -
    -

    Returns a string appropriate for displaying in test output -from the provided value.

    -
    -

    See also

    -

    TestOutputStringConvertible

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func stringify<T>(_ value: T?) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    A value that will show up in a test’s output.

    -
    -
    -
    -
    -

    Return Value

    -

    The string that is returned can be -customized per type by conforming a type to the TestOutputStringConvertible -protocol. When stringifying a non-TestOutputStringConvertible type, this -function will return the value’s debug description and then its -normal description if available and in that order. Otherwise it -will return the result of constructing a string from the value.

    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Collection Type Stringers -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Attempts to generate a pretty type string for a given value. If the value is of a Objective-C -collection type, or a subclass thereof, (e.g. NSArray, NSDictionary, etc.). -This function will return the type name of the root class of the class cluster for better -readability (e.g. NSArray instead of __NSArrayI).

    - -

    For values that don’t have a type of an Objective-C collection, this function returns the -default type description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func prettyCollectionType<T>(_ value: T) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    A value that will be used to determine a type name.

    -
    -
    -
    -
    -

    Return Value

    -

    The name of the class cluster root class for Objective-C collection types, or the -the dynamicType of the value for values of any other type.

    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the type name for a given collection type. This overload is used by Swift -collection types.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func prettyCollectionType<T>(_ collection: T) -> String where T : Collection
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - collection - - -
    -

    A Swift CollectionType value.

    -
    -
    -
    -
    -

    Return Value

    -

    A string representing the dynamicType of the value.

    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Global Variables.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Global Variables.html deleted file mode 100644 index 6ec912252..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Global Variables.html +++ /dev/null @@ -1,1290 +0,0 @@ - - - - Global Variables Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Global Variables

-

The following global variables are available globally.

- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Global backing interface for assertions that Nimble creates. -Defaults to a private test handler that passes through to XCTest.

    - -

    If XCTest is not available, you must assign your own assertion handler -before using any matchers, otherwise Nimble will abort the program.

    - -

    @see AssertionHandler

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var NimbleAssertionHandler: AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - DefaultDelta - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let DefaultDelta: Double
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols.html deleted file mode 100644 index afc040121..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols.html +++ /dev/null @@ -1,1495 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Protocols

-

The following protocols are available globally.

- -
-
-
-
    -
  • -
    - - - - AssertionHandler - -
    -
    -
    -
    -
    -
    -

    Protocol for the assertion handler that Nimble uses for all expectations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AssertionHandler
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Expectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Expectation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncableMatcher - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AsyncableMatcher<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBContainer - -
    -
    -
    -
    -
    -
    -

    Protocol for types that support contain() matcher.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBContainer
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBCollection - -
    -
    -
    -
    -
    -
    -

    Protocol for types that support only beEmpty(), haveCount() matchers

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBCollection
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBOrderedCollection - -
    -
    -
    -
    -
    -
    -

    Protocol for types that support beginWith(), endWith(), beEmpty() matchers

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBOrderedCollection : NMBCollection
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBDoubleConvertible - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol NMBDoubleConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBComparable - -
    -
    -
    -
    -
    -
    -

    Protocol for types to support beLessThan(), beLessThanOrEqualTo(), - beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers.

    - -

    Types that conform to Swift’s Comparable protocol will work implicitly too

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @objc
    -public protocol NMBComparable
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A type with a customized test output text representation.

    - -

    This textual representation is produced when values will be -printed in test runs, and may be useful when producing -error messages in custom matchers.

    -
    -

    See also

    - CustomDebugStringConvertible - -
    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol TestOutputStringConvertible
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/AssertionHandler.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/AssertionHandler.html deleted file mode 100644 index 53381f86f..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/AssertionHandler.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - AssertionHandler Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionHandler

-
-
- -
public protocol AssertionHandler
- -
-
-

Protocol for the assertion handler that Nimble uses for all expectations.

- -
-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/AsyncableMatcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/AsyncableMatcher.html deleted file mode 100644 index fbef97920..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/AsyncableMatcher.html +++ /dev/null @@ -1,1294 +0,0 @@ - - - - AsyncableMatcher Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncableMatcher

-
-
- -
public protocol AsyncableMatcher<Value>
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - Value - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func satisfies(_ expression: AsyncExpression<Value>) async throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/Expectation.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/Expectation.html deleted file mode 100644 index 59fac22e8..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/Expectation.html +++ /dev/null @@ -1,1399 +0,0 @@ - - - - Expectation Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Expectation

-
-
- -
public protocol Expectation
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    The status of the test after matchers have been evaluated.

    - -

    This property can be used for changing test behavior based whether an expectation has -passed.

    - -

    In the below example, we perform additional tests on an array only if it has enough -elements.

    -
    if expect(array).to(haveCount(10)).status == .passed {
    -   expect(array[9]).to(...)
    -}
    -
    -
    -

    Remark

    - Similar functionality can be achieved using the onFailure(throw:) method. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var status: ExpectationStatus { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:) - -
    -
    -
    -
    -
    -
    -

    Takes the result of a test and passes it to the assertion handler.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -func verify(_ pass: Bool, _ message: FailureMessage) -> Self
    - -
    -
    -
    -

    Return Value

    -

    An updated Expression with the result of the test applied to the status - property.

    -
    -
    -
    -
  • -
  • -
    - - - - onFailure(throw:) - - - Extension method - -
    -
    -
    -
    -
    -
    -

    Throws the supplied error if the expectation has previously failed.

    - -

    This provides a mechanism for halting tests when a failure occurs. This can be used in -conjunction with Quick.StopTest to halt a test when a failure would cause subsequent test -code to fail.

    - -

    In the below example, the test will stop in the first line if array.count == 5 rather -than crash on the second line.

    -
    try expect(array).to(haveCount(10)).onFailure(throw: StopTest.silently)
    -expect(array[9]).to(...)
    -
    -
    -

    Warning

    -

    This method MUST be called after a matcher method like to or not. - Otherwise, this expectation will be in an indeterminate state and will - unconditionally log an error.

    - -
    -

    Remark

    -

    Similar functionality can be achieved using the status property.

    - -
    -

    Attention

    -

    This is deprecated in favor of the require dsl (require, unwrap, - pollUnwrap), which integrates the matcher seemlessly, or, in the case of - unwrap and pollUnwrap, acts as a shorthand when you require that an - expression evaluate to some non-nil value. onFailure will be removed in - Nimble 15.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, message: "Use the require dsl")
    -public func onFailure(throw error: Error) throws
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBCollection.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBCollection.html deleted file mode 100644 index 936884de8..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBCollection.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBCollection Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBCollection

-
-
- -
public protocol NMBCollection
- -
-
-

Protocol for types that support only beEmpty(), haveCount() matchers

- -
-
-
-
    -
  • -
    - - - - count - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var count: Int { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBComparable.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBComparable.html deleted file mode 100644 index 84f1a3828..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBComparable.html +++ /dev/null @@ -1,1268 +0,0 @@ - - - - NMBComparable Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBComparable

-
-
- -
@objc
-public protocol NMBComparable
- -
-
-

Protocol for types to support beLessThan(), beLessThanOrEqualTo(), - beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers.

- -

Types that conform to Swift’s Comparable protocol will work implicitly too

- -
-
-
-
    -
  • -
    - - - - NMB_compare(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBContainer.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBContainer.html deleted file mode 100644 index 48927aa8d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBContainer.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBContainer Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBContainer

-
-
- -
public protocol NMBContainer
- -
-
-

Protocol for types that support contain() matcher.

- -
-
-
-
    -
  • -
    - - - - contains(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func contains(_ anObject: Any) -> Bool
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBDoubleConvertible.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBDoubleConvertible.html deleted file mode 100644 index f4846ead3..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBDoubleConvertible.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBDoubleConvertible Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBDoubleConvertible

-
-
- -
public protocol NMBDoubleConvertible
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - doubleValue - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var doubleValue: CDouble { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBOrderedCollection.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBOrderedCollection.html deleted file mode 100644 index 7a0d06242..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/NMBOrderedCollection.html +++ /dev/null @@ -1,1264 +0,0 @@ - - - - NMBOrderedCollection Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

NMBOrderedCollection

-
-
- -
public protocol NMBOrderedCollection : NMBCollection
- -
-
-

Protocol for types that support beginWith(), endWith(), beEmpty() matchers

- -
-
-
-
    -
  • -
    - - - - object(at:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func object(at index: Int) -> Any
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/TestOutputStringConvertible.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/TestOutputStringConvertible.html deleted file mode 100644 index 971db493e..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Protocols/TestOutputStringConvertible.html +++ /dev/null @@ -1,1273 +0,0 @@ - - - - TestOutputStringConvertible Protocol Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

TestOutputStringConvertible

-
-
- -
public protocol TestOutputStringConvertible
- -
-
-

A type with a customized test output text representation.

- -

This textual representation is produced when values will be -printed in test runs, and may be useful when producing -error messages in custom matchers.

-
-

See also

- CustomDebugStringConvertible - -
- -
-
-
-
    -
  • -
    - - - - testDescription - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var testDescription: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs.html deleted file mode 100644 index 7028eac53..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs.html +++ /dev/null @@ -1,1665 +0,0 @@ - - - - Structures Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Structures

-

The following structures are available globally.

- -
-
-
-
    -
  • -
    - - - - AssertionRecord - -
    -
    -
    -
    -
    -
    -

    A data structure that stores information about an assertion when -AssertionRecorder is set as the Nimble assertion handler.

    - -

    @see AssertionRecorder -@see AssertionHandler

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AssertionRecord : CustomStringConvertible
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncExpression - -
    -
    -
    -
    -
    -
    -

    Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

    -
    -

    Warning

    - Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
    - -

    This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - SyncExpectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SyncExpectation<Value> : Expectation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncExpectation - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncExpectation<Value> : Expectation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Expression - -
    -
    -
    -
    -
    -
    -

    Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

    -
    -

    Warning

    - Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
    - -

    This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Matcher - -
    -
    -
    -
    -
    -
    -

    A Matcher is part of the new matcher API that provides assertions to expectations.

    - -

    Given a code snippet:

    - -

    expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

    - -

    A matcher consists of two parts a constructor function and the Matcher.

    - -

    The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

    - -

    In the 2023 Apple Platform releases (macOS 14, iOS 17, watchOS 10, tvOS 17, visionOS 1), Apple -renamed NSMatcher to Matcher. In response, we decided to rename Matcher to -Matcher.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Matcher<T>
    -
    extension Matcher: AsyncableMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncMatcher - -
    -
    -
    -
    -
    -
    -

    An AsyncMatcher is part of the new matcher API that provides assertions to expectations.

    - -

    Given a code snippet:

    - -

    expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

    - -

    A matcher consists of two parts a constructor function and the Matcher.

    - -

    The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

    - -

    AsyncMatchers serve to allow writing matchers that must be run in async contexts. -These can also be used with either Expectations or AsyncExpectations. -But these can only be used from async contexts, and are unavailable in Objective-C. -You can, however, call regular Matchers from an AsyncMatcher, if you wish to compose one like that.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncMatcher<T> : AsyncableMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ExpectationNil - -
    -
    -
    -
    -
    -
    -

    Represents nil value to be used with the operator overloads for beNil.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct ExpectationNil : ExpressibleByNilLiteral
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MatcherResult - -
    -
    -
    -
    -
    -
    -

    The value that a Matcher returns to describe if the given (actual) value matches the -matcher.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - SyncRequirement - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SyncRequirement<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - AsyncRequirement - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct AsyncRequirement<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PollingDefaults - -
    -
    -
    -
    -
    -
    -

    If you are running on a slower machine, it could be useful to increase the default timeout value -or slow down poll interval. Default timeout interval is 1, and poll interval is 0.01.

    -
    -

    Note

    - This used to be known as AsyncDefaults. - -
    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct PollingDefaults
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - RequireError - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RequireError : Error, CustomNSError
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AssertionRecord.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AssertionRecord.html deleted file mode 100644 index acf45a260..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AssertionRecord.html +++ /dev/null @@ -1,1348 +0,0 @@ - - - - AssertionRecord Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AssertionRecord

-
-
- -
public struct AssertionRecord : CustomStringConvertible
- -
-
-

A data structure that stores information about an assertion when -AssertionRecorder is set as the Nimble assertion handler.

- -

@see AssertionRecorder -@see AssertionHandler

- -
-
-
-
    -
  • -
    - - - - success - -
    -
    -
    -
    -
    -
    -

    Whether the assertion succeeded or failed

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let success: Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - message - -
    -
    -
    -
    -
    -
    -

    The failure message the assertion would display on failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let message: FailureMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The source location the expectation occurred on.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: SourceLocation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncExpectation.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncExpectation.html deleted file mode 100644 index 754e98889..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncExpectation.html +++ /dev/null @@ -1,2129 +0,0 @@ - - - - AsyncExpectation Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncExpectation

-
-
- -
public struct AsyncExpectation<Value> : Expectation
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    The status of the test after matchers have been evaluated.

    - -

    This property can be used for changing test behavior based whether an expectation has -passed.

    - -

    In the below example, we perform additional tests on an array only if it has enough -elements.

    -
    if expect(array).to(haveCount(10)).status == .passed {
    -   expect(array[9]).to(...)
    -}
    -
    -
    -

    Remark

    - Similar functionality can be achieved using the onFailure(throw:) method. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let status: ExpectationStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(expression:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: AsyncExpression<Value>)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:) - -
    -
    -
    -
    -
    -
    -

    Takes the result of a test and passes it to the assertion handler.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func verify(_ pass: Bool, _ message: FailureMessage) -> AsyncExpectation<Value>
    - -
    -
    -
    -

    Return Value

    -

    An updated Expression with the result of the test applied to the status - property.

    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> AsyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: AsyncExpectation, rhs: ExpectationNil) async
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func != (lhs: AsyncExpectation, rhs: ExpectationNil) async
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

With Synchronous Matchers -

-
-
- -
-
-
- - -
- -

With AsyncMatchers -

-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncExpression.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncExpression.html deleted file mode 100644 index 7638d6c71..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncExpression.html +++ /dev/null @@ -1,1662 +0,0 @@ - - - - AsyncExpression Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncExpression

-
-
- -
public struct AsyncExpression<Value>
- -
-
-

Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

-
-

Warning

- Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
- -

This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

- -
-
-
-
    -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: SourceLocation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - isClosure - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let isClosure: Bool
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process. The expression is memoized.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: @escaping () async throws -> Value?, location: SourceLocation, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(memoizedExpression: @escaping (Bool) async throws -> Value?, location: SourceLocation, withoutCaching: Bool, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - withoutCaching - - -
    -

    Indicates if the struct should memoize the given - closure’s result. Subsequent evaluate() calls will - not call the given closure if this is true.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - toSynchronousExpression() - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Creates a new synchronous expression, for use in Matchers.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toSynchronousExpression() async -> Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - cast(_:) - -
    -
    -
    -
    -
    -
    -

    Returns a new Expression from the given expression. Identical to a map() -on this type. This should be used only to typecast the Expression’s -closure value.

    - -

    The returned expression will preserve location and isClosure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func cast<U>(_ block: @escaping (Value?) throws -> U?) -> AsyncExpression<U>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - block - - -
    -

    The block that can cast the current Expression value to a - new type.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - cast(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func cast<U>(_ block: @escaping (Value?) async throws -> U?) -> AsyncExpression<U>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - evaluate() - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func evaluate() async throws -> Value?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withoutCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withoutCaching() -> AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withCaching() -> AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncMatcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncMatcher.html deleted file mode 100644 index d78d8375d..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncMatcher.html +++ /dev/null @@ -1,1485 +0,0 @@ - - - - AsyncMatcher Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncMatcher

-
-
- -
public struct AsyncMatcher<T> : AsyncableMatcher
- -
-
-

An AsyncMatcher is part of the new matcher API that provides assertions to expectations.

- -

Given a code snippet:

- -

expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

- -

A matcher consists of two parts a constructor function and the Matcher.

- -

The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

- -

AsyncMatchers serve to allow writing matchers that must be run in async contexts. -These can also be used with either Expectations or AsyncExpectations. -But these can only be used from async contexts, and are unavailable in Objective-C. -You can, however, call regular Matchers from an AsyncMatcher, if you wish to compose one like that.

- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ matcher: @escaping (AsyncExpression<T>) async throws -> MatcherResult)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Uses a matcher on a given value to see if it passes the matcher.

    - -

    @param expression The value to run the matcher’s logic against -@returns A matcher result indicate passing or failing and an associated error message.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfies(_ expression: AsyncExpression<T>) async throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(matcher:) - -
    -
    -
    -
    -
    -
    -

    Like Matcher() constructor, but automatically guard against nil (actual) values

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(matcher: @escaping (AsyncExpression<T>) async throws -> MatcherResult) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(_ message: String = "match", matcher: @escaping (AsyncExpression<T>, ExpectationMessage) async throws -> MatcherResult) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Unlike define, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func defineNilable(_ message: String = "match", matcher: @escaping (AsyncExpression<T>, ExpectationMessage) async throws -> MatcherResult) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - simple(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simple(_ message: String = "match", matcher: @escaping (AsyncExpression<T>) async throws -> MatcherStatus) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Unlike simple, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simpleNilable(_ message: String = "match", matcher: @escaping (AsyncExpression<T>) async throws -> MatcherStatus) -> AsyncMatcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requireNonNil - -
    -
    -
    -
    -
    -
    -

    Returns a new Matcher based on the current one that always fails if nil is given as -the actual value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var requireNonNil: AsyncMatcher<T> { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncRequirement.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncRequirement.html deleted file mode 100644 index dee5f829e..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/AsyncRequirement.html +++ /dev/null @@ -1,2062 +0,0 @@ - - - - AsyncRequirement Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

AsyncRequirement

-
-
- -
public struct AsyncRequirement<Value>
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - customError - -
    -
    -
    -
    -
    -
    -

    A custom error to throw. -If nil, then we will throw a RequireError on failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let customError: Error?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: AsyncExpression<Value>, customError: Error?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func verify(_ pass: Bool, _ message: FailureMessage, _ value: Value?) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

AsyncMatchers -

-
-
-
    -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Async Polling With Synchronous Matchers -

-
-
- -
-
-
- - -
- -

Async Polling With AsyncMatchers -

-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/ExpectationNil.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/ExpectationNil.html deleted file mode 100644 index d5076ec7e..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/ExpectationNil.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - ExpectationNil Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

ExpectationNil

-
-
- -
public struct ExpectationNil : ExpressibleByNilLiteral
- -
-
-

Represents nil value to be used with the operator overloads for beNil.

- -
-
-
-
    -
  • -
    - - - - init(nilLiteral:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(nilLiteral: ())
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/Expression.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/Expression.html deleted file mode 100644 index 1182058d2..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/Expression.html +++ /dev/null @@ -1,1629 +0,0 @@ - - - - Expression Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Expression

-
-
- -
public struct Expression<Value>
- -
-
-

Expression represents the closure of the value inside expect(…). -Expressions are memoized by default. This makes them safe to call -evaluate() multiple times without causing a re-evaluation of the underlying -closure.

-
-

Warning

- Since the closure can be any code, Objective-C code may choose - to raise an exception. Currently, SyncExpression does not memoize - exception raising. - -
- -

This provides a common consumable API for matchers to utilize to allow -Nimble to change internals to how the captured closure is managed.

- -
-
-
-
    -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: SourceLocation
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - isClosure - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let isClosure: Bool
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process. The expression is memoized.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: @escaping () throws -> Value?, location: SourceLocation, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a new expression struct. Normally, expect(…) will manage this -creation process.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(memoizedExpression: @escaping (Bool) throws -> Value?, location: SourceLocation, withoutCaching: Bool, isClosure: Bool = true)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - expression - - -
    -

    The closure that produces a given value.

    -
    -
    - - location - - -
    -

    The source location that this closure originates from.

    -
    -
    - - withoutCaching - - -
    -

    Indicates if the struct should memoize the given - closure’s result. Subsequent evaluate() calls will - not call the given closure if this is true.

    -
    -
    - - isClosure - - -
    -

    A bool indicating if the captured expression is a - closure or internally produced closure. Some matchers - may require closures. For example, toEventually() - requires an explicit closure. This gives Nimble - flexibility if @autoclosure behavior changes between - Swift versions. Nimble internals always sets this true.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - cast(_:) - -
    -
    -
    -
    -
    -
    -

    Returns a new Expression from the given expression. Identical to a map() -on this type. This should be used only to typecast the Expression’s -closure value.

    - -

    The returned expression will preserve location and isClosure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func cast<U>(_ block: @escaping (Value?) throws -> U?) -> Expression<U>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - block - - -
    -

    The block that can cast the current Expression value to a - new type.

    -
    -
    -
    -
    -
    -
  • -
  • -
    - - - - evaluate() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func evaluate() throws -> Value?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withoutCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withoutCaching() -> Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - withCaching() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func withCaching() -> Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toAsyncExpression() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toAsyncExpression() -> AsyncExpression<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/Matcher.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/Matcher.html deleted file mode 100644 index cb2a010d4..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/Matcher.html +++ /dev/null @@ -1,1512 +0,0 @@ - - - - Matcher Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Matcher

-
-
- -
public struct Matcher<T>
-
extension Matcher: AsyncableMatcher
- -
-
-

A Matcher is part of the new matcher API that provides assertions to expectations.

- -

Given a code snippet:

- -

expect(1).to(equal(2)) - ^^^^^^^^ - Called a “matcher”

- -

A matcher consists of two parts a constructor function and the Matcher.

- -

The Matcher provide the heavy lifting on how to assert against a given value. Internally, -matchers are simple wrappers around closures to provide static type information and -allow composition and wrapping of existing behaviors.

- -

In the 2023 Apple Platform releases (macOS 14, iOS 17, watchOS 10, tvOS 17, visionOS 1), Apple -renamed NSMatcher to Matcher. In response, we decided to rename Matcher to -Matcher.

- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Constructs a matcher that knows how take a given value

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ matcher: @escaping (Expression<T>) throws -> MatcherResult)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - -
    -
    -
    -
    -
    -
    -

    Uses a matcher on a given value to see if it passes the matcher.

    - -

    @param expression The value to run the matcher’s logic against -@returns A matcher result indicate passing or failing and an associated error message.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfies(_ expression: Expression<T>) throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - satisfies(_:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func satisfies(_ expression: AsyncExpression<T>) async throws -> MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(matcher:) - -
    -
    -
    -
    -
    -
    -

    Like Matcher() constructor, but automatically guard against nil (actual) values

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(matcher: @escaping (Expression<T>) throws -> MatcherResult) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - define(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func define(_ message: String = "match", matcher: @escaping (Expression<T>, ExpectationMessage) throws -> MatcherResult) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Defines a matcher with a default message that can be returned in the closure -Unlike define, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func defineNilable(_ message: String = "match", matcher: @escaping (Expression<T>, ExpectationMessage) throws -> MatcherResult) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - simple(_:matcher:) - -
    -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Also ensures the matcher’s actual value cannot pass with nil given.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simple(_ message: String = "match", matcher: @escaping (Expression<T>) throws -> MatcherStatus) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Provides a simple matcher definition that provides no control over the predefined -error message.

    - -

    Unlike simple, this allows nil values to succeed if the given closure chooses to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func simpleNilable(_ message: String = "match", matcher: @escaping (Expression<T>) throws -> MatcherStatus) -> Matcher<T>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - requireNonNil - -
    -
    -
    -
    -
    -
    -

    Returns a new Matcher based on the current one that always fails if nil is given as -the actual value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var requireNonNil: Matcher<T> { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/MatcherResult.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/MatcherResult.html deleted file mode 100644 index 390edd516..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/MatcherResult.html +++ /dev/null @@ -1,1400 +0,0 @@ - - - - MatcherResult Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

MatcherResult

-
-
- -
public struct MatcherResult
- -
-
-

The value that a Matcher returns to describe if the given (actual) value matches the -matcher.

- -
-
-
-
    -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    Status indicates if the matcher matches, does not match, or fails.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var status: MatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - message - -
    -
    -
    -
    -
    -
    -

    The error message that can be displayed if it does not match

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var message: ExpectationMessage
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(status:message:) - -
    -
    -
    -
    -
    -
    -

    Constructs a new MatcherResult with a given status and error message

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(status: MatcherStatus, message: ExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(bool:message:) - -
    -
    -
    -
    -
    -
    -

    Shorthand to MatcherResult(status: MatcherStatus(bool: bool), message: message)

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(bool: Bool, message: ExpectationMessage)
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Converts the result to a boolean based on what the expectation intended

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toBoolean(expectation style: ExpectationStyle) -> Bool
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toObjectiveC() - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func toObjectiveC() -> NMBMatcherResult
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/PollingDefaults.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/PollingDefaults.html deleted file mode 100644 index 4d59dac12..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/PollingDefaults.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - PollingDefaults Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

PollingDefaults

-
-
- -
public struct PollingDefaults
- -
-
-

If you are running on a slower machine, it could be useful to increase the default timeout value -or slow down poll interval. Default timeout interval is 1, and poll interval is 0.01.

-
-

Note

- This used to be known as AsyncDefaults. - -
- -
-
-
-
    -
  • -
    - - - - timeout - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var timeout: NimbleTimeInterval
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - pollInterval - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var pollInterval: NimbleTimeInterval
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/RequireError.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/RequireError.html deleted file mode 100644 index fb80c799e..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/RequireError.html +++ /dev/null @@ -1,1263 +0,0 @@ - - - - RequireError Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

RequireError

-
-
- -
public struct RequireError : Error, CustomNSError
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - errorUserInfo - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var errorUserInfo: [String : Any] { get }
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/SyncExpectation.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/SyncExpectation.html deleted file mode 100644 index 0a66b5fa0..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/SyncExpectation.html +++ /dev/null @@ -1,2398 +0,0 @@ - - - - SyncExpectation Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

SyncExpectation

-
-
- -
public struct SyncExpectation<Value> : Expectation
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - status - -
    -
    -
    -
    -
    -
    -

    The status of the test after matchers have been evaluated.

    - -

    This property can be used for changing test behavior based whether an expectation has -passed.

    - -

    In the below example, we perform additional tests on an array only if it has enough -elements.

    -
    if expect(array).to(haveCount(10)).status == .passed {
    -   expect(array[9]).to(...)
    -}
    -
    -
    -

    Remark

    - Similar functionality can be achieved using the onFailure(throw:) method. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let status: ExpectationStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - init(expression:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: Expression<Value>)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:) - -
    -
    -
    -
    -
    -
    -

    Takes the result of a test and passes it to the assertion handler.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func verify(_ pass: Bool, _ message: FailureMessage) -> SyncExpectation<Value>
    - -
    -
    -
    -

    Return Value

    -

    An updated Expression with the result of the test applied to the status - property.

    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

AsyncMatchers -

-
-
-
    -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: SyncExpectation, rhs: ExpectationNil)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - !=(_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func != (lhs: SyncExpectation, rhs: ExpectationNil)
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

With Synchronous Matchers -

-
-
- -
-
-
- - -
- -

With AsyncMatchers -

-
-
-
    -
  • -
    - - - - toEventually(_:timeout:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match by checking continuously -at each pollInterval until the timeout is reached.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toEventually(_ matcher: AsyncMatcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toEventuallyNot(_ matcher: AsyncMatcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toEventuallyNot()

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNotEventually(_ matcher: AsyncMatcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNever(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNever(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - neverTo(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toNever()

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func neverTo(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toAlways(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toAlways(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - alwaysTo(_:until:pollInterval:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    Alias of toAlways()

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func alwaysTo(_ matcher: AsyncMatcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) async -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match by checking continuously -at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventually does not work in any kind of async context. Use the async form of toEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventuallyNot does not work in any kind of async context. -Use the async form of toEventuallyNot if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventuallyNot` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventuallyNot(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toEventuallyNot()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNotEventually does not work in any kind of async context. -Use the async form of toNotEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNotEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNotEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNever does not work in any kind of async context. -Use the async form of toNever if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNever` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNever(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toNever()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of neverTo does not work in any kind of async context. -Use the async form of neverTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `neverTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func neverTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toAlways does not work in any kind of async context. -Use the async form of toAlways if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toAlways` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toAlways(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    Alias of toAlways()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of alwaysTo does not work in any kind of async context. -Use the async form of alwaysTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `alwaysTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func alwaysTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) -> SyncExpectation<Value>
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/SyncRequirement.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/SyncRequirement.html deleted file mode 100644 index 415e23eaf..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Structs/SyncRequirement.html +++ /dev/null @@ -1,2337 +0,0 @@ - - - - SyncRequirement Structure Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

SyncRequirement

-
-
- -
public struct SyncRequirement<Value>
- -
-
-

Undocumented

- -
-
-
-
    -
  • -
    - - - - expression - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let expression: Expression<Value>
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - customError - -
    -
    -
    -
    -
    -
    -

    A custom error to throw. -If nil, then we will throw a RequireError on failure.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let customError: Error?
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var location: SourceLocation { get }
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(expression: Expression<Value>, customError: Error?)
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - verify(_:_:_:) - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func verify(_ pass: Bool, _ message: FailureMessage, _ value: Value?) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - to(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: Matcher<Value>, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: Matcher<Value>, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: Matcher<Value>, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

AsyncMatchers -

-
-
-
    -
  • -
    - - - - to(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func to(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - toNot(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func toNot(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - notTo(_:description:) - - - Asynchronous - -
    -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match.

    - -

    Alias to toNot().

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public func notTo(_ matcher: AsyncMatcher<Value>, description: String? = nil) async throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Dispatch Polling with Synchronous Matchers -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Require the actual value using a matcher to match by checking continuously -at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventually does not work in any kind of async context. Use the async form of toEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toEventuallyNot does not work in any kind of async context. -Use the async form of toEventuallyNot if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toEventuallyNot` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toEventuallyNot(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to not match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toEventuallyNot()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNotEventually does not work in any kind of async context. -Use the async form of toNotEventually if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNotEventually` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNotEventually(_ matcher: Matcher<Value>, timeout: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toNever does not work in any kind of async context. -Use the async form of toNever if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toNever` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toNever(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to never match by checking -continuously at each pollInterval until the timeout is reached.

    - -

    Alias of toNever()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of neverTo does not work in any kind of async context. -Use the async form of neverTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `neverTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func neverTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of toAlways does not work in any kind of async context. -Use the async form of toAlways if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `toAlways` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func toAlways(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Tests the actual value using a matcher to always match by checking -continusouly at each pollInterval until the timeout is reached

    - -

    Alias of toAlways()

    - -

    @discussion -This function manages the main run loop (NSRunLoop.mainRunLoop()) while this function -is executing. Any attempts to touch the run loop may cause non-deterministic behavior.

    - -

    @warning -This form of alwaysTo does not work in any kind of async context. -Use the async form of alwaysTo if you are running tests in an async context.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, noasync, message: "the sync variant of `alwaysTo` does not work in async contexts. Use the async variant as a drop-in replacement")
    -@discardableResult
    -public func alwaysTo(_ matcher: Matcher<Value>, until: NimbleTimeInterval = PollingDefaults.timeout, pollInterval: NimbleTimeInterval = PollingDefaults.pollInterval, description: String? = nil) throws -> Value
    - -
    -
    -
    -
    -
  • -
-
-
-
- - -
- -

Async Polling with Synchronous Matchers -

-
-
- -
-
-
- - -
- -

Async Polling With AsyncMatchers -

-
-
- -
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Typealiases.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/Typealiases.html deleted file mode 100644 index 1a8da189b..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/Typealiases.html +++ /dev/null @@ -1,1525 +0,0 @@ - - - - Type Aliases Reference - - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
-

Type Aliases

-

The following type aliases are available globally.

- -
-
-
-
    -
  • -
    - - - - AsyncPredicate - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias AsyncPredicate = AsyncMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - Predicate - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "Matcher")
    -public typealias Predicate = Matcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PredicateResult - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "MatcherResult")
    -public typealias PredicateResult = MatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PredicateStatus - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "MatcherStatus")
    -public typealias PredicateStatus = MatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - MatcherBlock - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias MatcherBlock = (_ actualExpression: Expression<NSObject>) throws -> NMBMatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - PredicateBlock - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "MatcherBlock")
    -public typealias PredicateBlock = MatcherBlock
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBPredicate - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "NMBMatcher")
    -public typealias NMBPredicate = NMBMatcher
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBPredicateResult - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "NMBMatcherResult")
    -public typealias NMBPredicateResult = NMBMatcherResult
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - NMBPredicateStatus - -
    -
    -
    -
    -
    -
    -

    Provides an easy upgrade path for custom Matchers to be renamed to Matchers

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @available(*, deprecated, renamed: "NMBMatcherStatus")
    -public typealias NMBPredicateStatus = NMBMatcherStatus
    - -
    -
    -
    -
    -
  • -
  • -
    - - - - FileString - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
  • -
  • -
    - - - - FileString - -
    -
    -
    -
    -
    -
    -

    Undocumented

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias FileString = String
    - -
    -
    -
    -
    -
  • -
-
-
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/css/highlight.css b/docs/docsets/Nimble.docset/Contents/Resources/Documents/css/highlight.css deleted file mode 100644 index c170357ce..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/css/highlight.css +++ /dev/null @@ -1,202 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -/* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight .c { - color: #999988; - font-style: italic; } - -.highlight .err { - color: #a61717; - background-color: #e3d2d2; } - -.highlight .k { - color: #000000; - font-weight: bold; } - -.highlight .o { - color: #000000; - font-weight: bold; } - -.highlight .cm { - color: #999988; - font-style: italic; } - -.highlight .cp { - color: #999999; - font-weight: bold; } - -.highlight .c1 { - color: #999988; - font-style: italic; } - -.highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - -.highlight .gd { - color: #000000; - background-color: #ffdddd; } - -.highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - -.highlight .ge { - color: #000000; - font-style: italic; } - -.highlight .gr { - color: #aa0000; } - -.highlight .gh { - color: #999999; } - -.highlight .gi { - color: #000000; - background-color: #ddffdd; } - -.highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - -.highlight .go { - color: #888888; } - -.highlight .gp { - color: #555555; } - -.highlight .gs { - font-weight: bold; } - -.highlight .gu { - color: #aaaaaa; } - -.highlight .gt { - color: #aa0000; } - -.highlight .kc { - color: #000000; - font-weight: bold; } - -.highlight .kd { - color: #000000; - font-weight: bold; } - -.highlight .kp { - color: #000000; - font-weight: bold; } - -.highlight .kr { - color: #000000; - font-weight: bold; } - -.highlight .kt { - color: #445588; } - -.highlight .m { - color: #009999; } - -.highlight .s { - color: #d14; } - -.highlight .na { - color: #008080; } - -.highlight .nb { - color: #0086B3; } - -.highlight .nc { - color: #445588; - font-weight: bold; } - -.highlight .no { - color: #008080; } - -.highlight .ni { - color: #800080; } - -.highlight .ne { - color: #990000; - font-weight: bold; } - -.highlight .nf { - color: #990000; } - -.highlight .nn { - color: #555555; } - -.highlight .nt { - color: #000080; } - -.highlight .nv { - color: #008080; } - -.highlight .ow { - color: #000000; - font-weight: bold; } - -.highlight .w { - color: #bbbbbb; } - -.highlight .mf { - color: #009999; } - -.highlight .mh { - color: #009999; } - -.highlight .mi { - color: #009999; } - -.highlight .mo { - color: #009999; } - -.highlight .sb { - color: #d14; } - -.highlight .sc { - color: #d14; } - -.highlight .sd { - color: #d14; } - -.highlight .s2 { - color: #d14; } - -.highlight .se { - color: #d14; } - -.highlight .sh { - color: #d14; } - -.highlight .si { - color: #d14; } - -.highlight .sx { - color: #d14; } - -.highlight .sr { - color: #009926; } - -.highlight .s1 { - color: #d14; } - -.highlight .ss { - color: #990073; } - -.highlight .bp { - color: #999999; } - -.highlight .vc { - color: #008080; } - -.highlight .vg { - color: #008080; } - -.highlight .vi { - color: #008080; } - -.highlight .il { - color: #009999; } diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/Nimble.docset/Contents/Resources/Documents/css/jazzy.css deleted file mode 100644 index 2e3871391..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/css/jazzy.css +++ /dev/null @@ -1,439 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { - background: transparent; - border: 0; - margin: 0; - outline: 0; - padding: 0; - vertical-align: baseline; } - -body { - background-color: #f2f2f2; - font-family: Helvetica, freesans, Arial, sans-serif; - font-size: 14px; - -webkit-font-smoothing: subpixel-antialiased; - word-wrap: break-word; } - -h1, h2, h3 { - margin-top: 0.8em; - margin-bottom: 0.3em; - font-weight: 100; - color: black; } - -h1 { - font-size: 2.5em; } - -h2 { - font-size: 2em; - border-bottom: 1px solid #e2e2e2; } - -h4 { - font-size: 13px; - line-height: 1.5; - margin-top: 21px; } - -h5 { - font-size: 1.1em; } - -h6 { - font-size: 1.1em; - color: #777; } - -.section-name { - color: gray; - display: block; - font-family: Helvetica; - font-size: 22px; - font-weight: 100; - margin-bottom: 15px; } - -pre, code { - font: 0.95em Menlo, monospace; - color: #777; - word-wrap: normal; } - -p code, li code { - background-color: #eee; - padding: 2px 4px; - border-radius: 4px; } - -pre > code { - padding: 0; } - -a { - color: #0088cc; - text-decoration: none; } - a code { - color: inherit; } - -ul { - padding-left: 15px; } - -li { - line-height: 1.8em; } - -img { - max-width: 100%; } - -blockquote { - margin-left: 0; - padding: 0 10px; - border-left: 4px solid #ccc; } - -hr { - height: 1px; - border: none; - background-color: #e2e2e2; } - -.footnote-ref { - display: inline-block; - scroll-margin-top: 70px; } - -.footnote-def { - scroll-margin-top: 70px; } - -.content-wrapper { - margin: 0 auto; - width: 980px; } - -header { - font-size: 0.85em; - line-height: 32px; - background-color: #414141; - position: fixed; - width: 100%; - z-index: 3; } - header img { - padding-right: 6px; - vertical-align: -3px; - height: 16px; } - header a { - color: #fff; } - header p { - float: left; - color: #999; } - header .header-right { - float: right; - margin-left: 16px; } - -#breadcrumbs { - background-color: #f2f2f2; - height: 21px; - padding-top: 17px; - position: fixed; - width: 100%; - z-index: 2; - margin-top: 32px; } - #breadcrumbs #carat { - height: 10px; - margin: 0 5px; } - -.sidebar { - background-color: #f9f9f9; - border: 1px solid #e2e2e2; - overflow-y: auto; - overflow-x: hidden; - position: fixed; - top: 70px; - bottom: 0; - width: 230px; - word-wrap: normal; } - -.nav-groups { - list-style-type: none; - background: #fff; - padding-left: 0; } - -.nav-group-name { - border-bottom: 1px solid #e2e2e2; - font-size: 1.1em; - font-weight: 100; - padding: 15px 0 15px 20px; } - .nav-group-name > a { - color: #333; } - -.nav-group-tasks { - margin-top: 5px; } - -.nav-group-task { - font-size: 0.9em; - list-style-type: none; - white-space: nowrap; } - .nav-group-task a { - color: #888; } - -.main-content { - background-color: #fff; - border: 1px solid #e2e2e2; - margin-left: 246px; - position: absolute; - overflow: hidden; - padding-bottom: 20px; - top: 70px; - width: 734px; } - .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { - margin-bottom: 1em; } - .main-content p { - line-height: 1.8em; } - .main-content section .section:first-child { - margin-top: 0; - padding-top: 0; } - .main-content section .task-group-section .task-group:first-of-type { - padding-top: 10px; } - .main-content section .task-group-section .task-group:first-of-type .section-name { - padding-top: 15px; } - .main-content section .heading:before { - content: ""; - display: block; - padding-top: 70px; - margin: -70px 0 0; } - .main-content .section-name p { - margin-bottom: inherit; - line-height: inherit; } - .main-content .section-name code { - background-color: inherit; - padding: inherit; - color: inherit; } - -.section { - padding: 0 25px; } - -.highlight { - background-color: #eee; - padding: 10px 12px; - border: 1px solid #e2e2e2; - border-radius: 4px; - overflow-x: auto; } - -.declaration .highlight { - overflow-x: initial; - padding: 0 40px 40px 0; - margin-bottom: -25px; - background-color: transparent; - border: none; } - -.section-name { - margin: 0; - margin-left: 18px; } - -.task-group-section { - margin-top: 10px; - padding-left: 6px; - border-top: 1px solid #e2e2e2; } - -.task-group { - padding-top: 0px; } - -.task-name-container a[name]:before { - content: ""; - display: block; - padding-top: 70px; - margin: -70px 0 0; } - -.section-name-container { - position: relative; - display: inline-block; } - .section-name-container .section-name-link { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin-bottom: 0; } - .section-name-container .section-name { - position: relative; - pointer-events: none; - z-index: 1; } - .section-name-container .section-name a { - pointer-events: auto; } - -.item { - padding-top: 8px; - width: 100%; - list-style-type: none; } - .item a[name]:before { - content: ""; - display: block; - padding-top: 70px; - margin: -70px 0 0; } - .item code { - background-color: transparent; - padding: 0; } - .item .token, .item .direct-link { - display: inline-block; - text-indent: -20px; - padding-left: 3px; - margin-left: 35px; - font-size: 11.9px; - transition: all 300ms; } - .item .token-open { - margin-left: 20px; } - .item .discouraged { - text-decoration: line-through; } - .item .declaration-note { - font-size: .85em; - color: gray; - font-style: italic; } - -.pointer-container { - border-bottom: 1px solid #e2e2e2; - left: -23px; - padding-bottom: 13px; - position: relative; - width: 110%; } - -.pointer { - background: #f9f9f9; - border-left: 1px solid #e2e2e2; - border-top: 1px solid #e2e2e2; - height: 12px; - left: 21px; - top: -7px; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - position: absolute; - width: 12px; } - -.height-container { - display: none; - left: -25px; - padding: 0 25px; - position: relative; - width: 100%; - overflow: hidden; } - .height-container .section { - background: #f9f9f9; - border-bottom: 1px solid #e2e2e2; - left: -25px; - position: relative; - width: 100%; - padding-top: 10px; - padding-bottom: 5px; } - -.aside, .language { - padding: 6px 12px; - margin: 12px 0; - border-left: 5px solid #dddddd; - overflow-y: hidden; } - .aside .aside-title, .language .aside-title { - font-size: 9px; - letter-spacing: 2px; - text-transform: uppercase; - padding-bottom: 0; - margin: 0; - color: #aaa; - -webkit-user-select: none; } - .aside p:last-child, .language p:last-child { - margin-bottom: 0; } - -.language { - border-left: 5px solid #cde9f4; } - .language .aside-title { - color: #4b8afb; } - -.aside-warning, .aside-deprecated, .aside-unavailable { - border-left: 5px solid #ff6666; } - .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { - color: #ff0000; } - -.graybox { - border-collapse: collapse; - width: 100%; } - .graybox p { - margin: 0; - word-break: break-word; - min-width: 50px; } - .graybox td { - border: 1px solid #e2e2e2; - padding: 5px 25px 5px 10px; - vertical-align: middle; } - .graybox tr td:first-of-type { - text-align: right; - padding: 7px; - vertical-align: top; - word-break: normal; - width: 40px; } - -.slightly-smaller { - font-size: 0.9em; } - -#footer { - position: relative; - top: 10px; - bottom: 0px; - margin-left: 25px; } - #footer p { - margin: 0; - color: #aaa; - font-size: 0.8em; } - -html.dash header, html.dash #breadcrumbs, html.dash .sidebar { - display: none; } - -html.dash .main-content { - width: 980px; - margin-left: 0; - border: none; - width: 100%; - top: 0; - padding-bottom: 0; } - -html.dash .height-container { - display: block; } - -html.dash .item .token { - margin-left: 0; } - -html.dash .content-wrapper { - width: auto; } - -html.dash #footer { - position: static; } - -form[role=search] { - float: right; } - form[role=search] input { - font: Helvetica, freesans, Arial, sans-serif; - margin-top: 6px; - font-size: 13px; - line-height: 20px; - padding: 0px 10px; - border: none; - border-radius: 1em; } - .loading form[role=search] input { - background: white url(../img/spinner.gif) center right 4px no-repeat; } - form[role=search] .tt-menu { - margin: 0; - min-width: 300px; - background: #fff; - color: #333; - border: 1px solid #e2e2e2; - z-index: 4; } - form[role=search] .tt-highlight { - font-weight: bold; } - form[role=search] .tt-suggestion { - font: Helvetica, freesans, Arial, sans-serif; - font-size: 14px; - padding: 0 8px; } - form[role=search] .tt-suggestion span { - display: table-cell; - white-space: nowrap; } - form[role=search] .tt-suggestion .doc-parent-name { - width: 100%; - text-align: right; - font-weight: normal; - font-size: 0.9em; - padding-left: 16px; } - form[role=search] .tt-suggestion:hover, - form[role=search] .tt-suggestion.tt-cursor { - cursor: pointer; - background-color: #4183c4; - color: #fff; } - form[role=search] .tt-suggestion:hover .doc-parent-name, - form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { - color: #fff; } diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/carat.png b/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/carat.png deleted file mode 100755 index 29d2f7fd4..000000000 Binary files a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/carat.png and /dev/null differ diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/dash.png b/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/dash.png deleted file mode 100755 index 6f694c7a0..000000000 Binary files a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/dash.png and /dev/null differ diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/gh.png b/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/gh.png deleted file mode 100755 index 628da97c7..000000000 Binary files a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/gh.png and /dev/null differ diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/spinner.gif b/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/spinner.gif deleted file mode 100644 index e3038d0a4..000000000 Binary files a/docs/docsets/Nimble.docset/Contents/Resources/Documents/img/spinner.gif and /dev/null differ diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/index.html b/docs/docsets/Nimble.docset/Contents/Resources/Documents/index.html deleted file mode 100644 index 937b39709..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/index.html +++ /dev/null @@ -1,3146 +0,0 @@ - - - - Nimble Reference - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
- -

Nimble

- -

Build Status -CocoaPods -Carthage Compatible -Platforms

- -

Use Nimble to express the expected outcomes of Swift -or Objective-C expressions. Inspired by -Cedar.

-
// Swift
-expect(1 + 1).to(equal(2))
-expect(1.2).to(beCloseTo(1.1, within: 0.1))
-expect(3) > 2
-expect("seahorse").to(contain("sea"))
-expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))
-expect(ocean.isClean).toEventually(beTruthy())
-
-

How to Use Nimble

- - - - - -

Table of Contents generated with DocToc

- - - - -

Some Background: Expressing Outcomes Using Assertions in XCTest

- -

Apple’s Xcode includes the XCTest framework, which provides -assertion macros to test whether code behaves properly. -For example, to assert that 1 + 1 = 2, XCTest has you write:

-
// Swift
-
-XCTAssertEqual(1 + 1, 2, "expected one plus one to equal two")
-
- -

Or, in Objective-C:

-
// Objective-C
-
-XCTAssertEqual(1 + 1, 2, @"expected one plus one to equal two");
-
- -

XCTest assertions have a couple of drawbacks:

- -
    -
  1. Not enough macros. There’s no easy way to assert that a string -contains a particular substring, or that a number is less than or -equal to another.
  2. -
  3. It’s hard to write asynchronous tests. XCTest forces you to write -a lot of boilerplate code.
  4. -
- -

Nimble addresses these concerns.

-

Nimble: Expectations Using expect(...).to

- -

Nimble allows you to express expectations using a natural, -easily understood language:

-
// Swift
-
-import Nimble
-
-expect(seagull.squawk).to(equal("Squee!"))
-
-
// Objective-C
-
-@import Nimble;
-
-expect(seagull.squawk).to(equal(@"Squee!"));
-
- -
-

The expect function autocompletes to include file: and line:, - but these parameters are optional. Use the default values to have - Xcode highlight the correct line when an expectation is not met.

-
- -

To perform the opposite expectation–to assert something is not -equal–use toNot or notTo:

-
// Swift
-
-import Nimble
-
-expect(seagull.squawk).toNot(equal("Oh, hello there!"))
-expect(seagull.squawk).notTo(equal("Oh, hello there!"))
-
-
// Objective-C
-
-@import Nimble;
-
-expect(seagull.squawk).toNot(equal(@"Oh, hello there!"));
-expect(seagull.squawk).notTo(equal(@"Oh, hello there!"));
-
-

Custom Failure Messages

- -

Would you like to add more information to the test’s failure messages? Use the description optional argument to add your own text:

-
// Swift
-
-expect(1 + 1).to(equal(3))
-// failed - expected to equal <3>, got <2>
-
-expect(1 + 1).to(equal(3), description: "Make sure libKindergartenMath is loaded")
-// failed - Make sure libKindergartenMath is loaded
-// expected to equal <3>, got <2>
-
- -

Or the *WithDescription version in Objective-C:

-
// Objective-C
-
-@import Nimble;
-
-expect(@(1+1)).to(equal(@3));
-// failed - expected to equal <3.0000>, got <2.0000>
-
-expect(@(1+1)).toWithDescription(equal(@3), @"Make sure libKindergartenMath is loaded");
-// failed - Make sure libKindergartenMath is loaded
-// expected to equal <3.0000>, got <2.0000>
-
-

Type Safety

- -

Nimble makes sure you don’t compare two types that don’t match:

-
// Swift
-
-// Does not compile:
-expect(1 + 1).to(equal("Squee!"))
-
- -
-

Nimble uses generics–only available in Swift–to ensure - type correctness. That means type checking is - not available when using Nimble in Objective-C. :sob:

-
-

Operator Overloads

- -

Tired of so much typing? With Nimble, you can use overloaded operators -like == for equivalence, or > for comparisons:

-
// Swift
-
-// Passes if squawk does not equal "Hi!":
-expect(seagull.squawk) != "Hi!"
-
-// Passes if 10 is greater than 2:
-expect(10) > 2
-
- -
-

Operator overloads are only available in Swift, so you won’t be able - to use this syntax in Objective-C. :broken_heart:

-
-

Lazily Computed Values

- -

The expect function doesn’t evaluate the value it’s given until it’s -time to match. So Nimble can test whether an expression raises an -exception once evaluated:

-
// Swift
-
-// Note: Swift currently doesn't have exceptions.
-//       Only Objective-C code can raise exceptions
-//       that Nimble will catch.
-//       (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064)
-let exception = NSException(
-    name: NSInternalInconsistencyException,
-    reason: "Not enough fish in the sea.",
-    userInfo: ["something": "is fishy"])
-expect { exception.raise() }.to(raiseException())
-
-// Also, you can customize raiseException to be more specific
-expect { exception.raise() }.to(raiseException(named: NSInternalInconsistencyException))
-expect { exception.raise() }.to(raiseException(
-    named: NSInternalInconsistencyException,
-    reason: "Not enough fish in the sea"))
-expect { exception.raise() }.to(raiseException(
-    named: NSInternalInconsistencyException,
-    reason: "Not enough fish in the sea",
-    userInfo: ["something": "is fishy"]))
-
- -

Objective-C works the same way, but you must use the expectAction -macro when making an expectation on an expression that has no return -value:

-
// Objective-C
-
-NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException
-                                                 reason:@"Not enough fish in the sea."
-                                               userInfo:nil];
-expectAction(^{ [exception raise]; }).to(raiseException());
-
-// Use the property-block syntax to be more specific.
-expectAction(^{ [exception raise]; }).to(raiseException().named(NSInternalInconsistencyException));
-expectAction(^{ [exception raise]; }).to(raiseException().
-    named(NSInternalInconsistencyException).
-    reason("Not enough fish in the sea"));
-expectAction(^{ [exception raise]; }).to(raiseException().
-    named(NSInternalInconsistencyException).
-    reason("Not enough fish in the sea").
-    userInfo(@{@"something": @"is fishy"}));
-
-// You can also pass a block for custom matching of the raised exception
-expectAction(exception.raise()).to(raiseException().satisfyingBlock(^(NSException *exception) {
-    expect(exception.name).to(beginWith(NSInternalInconsistencyException));
-}));
-
-

C Primitives

- -

Some testing frameworks make it hard to test primitive C values. -In Nimble, it just works:

-
// Swift
-
-let actual: CInt = 1
-let expectedValue: CInt = 1
-expect(actual).to(equal(expectedValue))
-
- -

In fact, Nimble uses type inference, so you can write the above -without explicitly specifying both types:

-
// Swift
-
-expect(1 as CInt).to(equal(1))
-
- -
-

In Objective-C, Nimble only supports Objective-C objects. To - make expectations on primitive C values, wrap then in an object - literal:

-
-
expect(@(1 + 1)).to(equal(@2));
-
-

Async/Await Support

- -

Nimble makes it easy to await for an async function to complete. Simply pass -the async function in to expect:

-
// Swift
-await expect { await aFunctionReturning1() }.to(equal(1))
-
- -

The async function is awaited on first, before passing it to the matcher. This -enables the matcher to run synchronous code like before, without caring about -whether the value it’s processing was abtained async or not.

- -

Async support is Swift-only, and it requires that you execute the test in an -async context. For XCTest, this is as simple as marking your test function with -async. If you use Quick, all tests in Quick 6 are executed in an async context. -In Quick 7 and later, only tests that are in an AsyncSpec subclass will be -executed in an async context.

- -

To avoid a compiler errors when using synchronous expect in asynchronous contexts, -expect with async expressions does not support autoclosures. However, the expecta -(expect async) function is provided as an alternative, which does support autoclosures.

-
// Swift
-await expecta(await aFunctionReturning1()).to(equal(1)))
-
- -

Similarly, if you’re ever in a situation where you want to force the compiler to -produce a SyncExpectation, you can use the expects (expect sync) function to -produce a SyncExpectation. Like so:

-
// Swift
-expects(someNonAsyncFunction()).to(equal(1)))
-
-expects(await someAsyncFunction()).to(equal(1)) // Compiler error: 'async' call in an autoclosure that does not support concurrency
-
-

Async Matchers

- -

In addition to asserting on async functions prior to passing them to a -synchronous matcher, you can also write matchers that directly take in an -async value. These are called AsyncMatchers. This is most obviously useful -when directly asserting against an actor. In addition to writing your own -async matchers, Nimble currently ships with async versions of the following -matchers:

- -
    -
  • allPass
  • -
  • containElementSatisfying
  • -
  • satisfyAllOf and the && operator overload accept both AsyncMatcher and -synchronous Matchers.
  • -
  • satisfyAnyOf and the || operator overload accept both AsyncMatcher and -synchronous Matchers.
  • -
- -

Note: Async/Await support is different than the toEventually/toEventuallyNot -feature described below.

-

Polling Expectations

- -

In Nimble, it’s easy to make expectations on values that are updated -asynchronously. Just use toEventually or toEventuallyNot:

-
// Swift
-DispatchQueue.main.async {
-    ocean.add("dolphins")
-    ocean.add("whales")
-}
-expect(ocean).toEventually(contain("dolphins", "whales"))
-
-
// Objective-C
-
-dispatch_async(dispatch_get_main_queue(), ^{
-    [ocean add:@"dolphins"];
-    [ocean add:@"whales"];
-});
-expect(ocean).toEventually(contain(@"dolphins", @"whales"));
-
- -

Note: toEventually triggers its polls on the main thread. Blocking the main -thread will cause Nimble to stop the run loop. This can cause test pollution -for whatever incomplete code that was running on the main thread. Blocking the -main thread can be caused by blocking IO, calls to sleep(), deadlocks, and -synchronous IPC.

- -

In the above example, ocean is constantly re-evaluated. If it ever -contains dolphins and whales, the expectation passes. If ocean still -doesn’t contain them, even after being continuously re-evaluated for one -whole second, the expectation fails.

-

Using Polling Expectations in Async Tests

- -

You can easily use toEventually or toEventuallyNot in async contexts as -well. You only need to add an await statement to the beginning of the line:

-
// Swift
-DispatchQueue.main.async {
-    ocean.add("dolphins")
-    ocean.add("whales")
-}
-await expect(ocean).toEventually(contain("dolphens", "whiles"))
-
- -

Starting in Nimble 12, toEventually et. al. now also supports async -expectations. For example, the following test is now supported:

-
actor MyActor {
-    private var counter = 0
-
-    func access() -> Int {
-        counter += 1
-        return counter
-    }
-}
-
-let subject = MyActor()
-await expect { await subject.access() }.toEventually(equal(2))
-
-

Verifying a Matcher will Never or Always Match

- -

You can also test that a value always or never matches throughout the length of the timeout. Use toNever and toAlways for this:

-
// Swift
-ocean.add("dolphins")
-expect(ocean).toAlways(contain("dolphins"))
-expect(ocean).toNever(contain("hares"))
-
-
// Objective-C
-[ocean add:@"dolphins"]
-expect(ocean).toAlways(contain(@"dolphins"))
-expect(ocean).toNever(contain(@"hares"))
-
-

Waiting for a Callback to be Called

- -

You can also provide a callback by using the waitUntil function:

-
// Swift
-
-waitUntil { done in
-    ocean.goFish { success in
-        expect(success).to(beTrue())
-        done()
-    }
-}
-
-
// Objective-C
-
-waitUntil(^(void (^done)(void)){
-    [ocean goFishWithHandler:^(BOOL success){
-        expect(success).to(beTrue());
-        done();
-    }];
-});
-
- -

waitUntil also optionally takes a timeout parameter:

-
// Swift
-
-waitUntil(timeout: .seconds(10)) { done in
-    ocean.goFish { success in
-        expect(success).to(beTrue())
-        done()
-    }
-}
-
-
// Objective-C
-
-waitUntilTimeout(10, ^(void (^done)(void)){
-    [ocean goFishWithHandler:^(BOOL success){
-        expect(success).to(beTrue());
-        done();
-    }];
-});
-
- -

Note: waitUntil triggers its timeout code on the main thread. Blocking the main -thread will cause Nimble to stop the run loop to continue. This can cause test -pollution for whatever incomplete code that was running on the main thread. -Blocking the main thread can be caused by blocking IO, calls to sleep(), -deadlocks, and synchronous IPC.

-

Changing the Timeout and Polling Intervals

- -

Sometimes it takes more than a second for a value to update. In those -cases, use the timeout parameter:

-
// Swift
-
-// Waits three seconds for ocean to contain "starfish":
-expect(ocean).toEventually(contain("starfish"), timeout: .seconds(3))
-
-// Evaluate someValue every 0.2 seconds repeatedly until it equals 100, or fails if it timeouts after 5.5 seconds.
-expect(someValue).toEventually(equal(100), timeout: .milliseconds(5500), pollInterval: .milliseconds(200))
-
-
// Objective-C
-
-// Waits three seconds for ocean to contain "starfish":
-expect(ocean).withTimeout(3).toEventually(contain(@"starfish"));
-
-

Changing default Timeout and Poll Intervals

- -

In some cases (e.g. when running on slower machines) it can be useful to modify -the default timeout and poll interval values. This can be done as follows:

-
// Swift
-
-// Increase the global timeout to 5 seconds:
-Nimble.PollingDefaults.timeout = .seconds(5)
-
-// Slow the polling interval to 0.1 seconds:
-Nimble.PollingDefaults.pollInterval = .milliseconds(100)
-
- -

You can set these globally at test startup in two ways:

-

Quick

- -

If you use Quick, add a QuickConfiguration subclass which sets your desired PollingDefaults.

-
import Quick
-import Nimble
-
-class PollingConfiguration: QuickConfiguration {
-    override class func configure(_ configuration: QCKConfiguration) {
-        Nimble.PollingDefaults.timeout = .seconds(5)
-        Nimble.PollingDefaults.pollInterval = .milliseconds(100)
-    }
-}
-
-

XCTest

- -

If you use XCTest, add an object that conforms to XCTestObservation and implement testBundleWillStart(_:).

- -

Additionally, you will need to register this observer with the XCTestObservationCenter at test startup. To do this, set the NSPrincipalClass key in your test bundle’s Info.plist and implement a class with that same name.

- -

For example

-
<!-- Info.plist -->
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-    <!-- ... -->
-    <key>NSPrincipalClass</key>
-    <string>MyTests.TestSetup</string>
-</dict>
-</plist>
-
-
// TestSetup.swift
-import XCTest
-import Nimble
-
-@objc
-class TestSetup: NSObject {
-    override init() {
-        XCTestObservationCenter.shared.register(PollingConfigurationTestObserver())
-    }
-}
-
-class PollingConfigurationTestObserver: NSObject, XCTestObserver {
-    func testBundleWillStart(_ testBundle: Bundle) {
-        Nimble.PollingDefaults.timeout = .seconds(5)
-        Nimble.PollingDefaults.pollInterval = .milliseconds(100)
-    }
-}
-
- -

In Linux, you can implement LinuxMain to set the PollingDefaults before calling XCTMain.

-

Objective-C Support

- -

Nimble has full support for Objective-C. However, there are two things -to keep in mind when using Nimble in Objective-C:

- -
    -
  1. All parameters passed to the expect function, as well as matcher -functions like equal, must be Objective-C objects or can be converted into -an NSObject equivalent:
  2. -
-
   // Objective-C
-
-   @import Nimble;
-
-   expect(@(1 + 1)).to(equal(@2));
-   expect(@"Hello world").to(contain(@"world"));
-
-   // Boxed as NSNumber *
-   expect(2).to(equal(2));
-   expect(1.2).to(beLessThan(2.0));
-   expect(true).to(beTruthy());
-
-   // Boxed as NSString *
-   expect("Hello world").to(equal("Hello world"));
-
-   // Boxed as NSRange
-   expect(NSMakeRange(1, 10)).to(equal(NSMakeRange(1, 10)));
-
- -
    -
  1. To make an expectation on an expression that does not return a value, -such as -[NSException raise], use expectAction instead of -expect:
  2. -
-
   // Objective-C
-
-   expectAction(^{ [exception raise]; }).to(raiseException());
-
- -

The following types are currently converted to an NSObject type:

- -
    -
  • C Numeric types are converted to NSNumber *
  • -
  • NSRange is converted to NSValue *
  • -
  • char * is converted to NSString *
  • -
- -

For the following matchers:

- -
    -
  • equal
  • -
  • beGreaterThan
  • -
  • beGreaterThanOrEqual
  • -
  • beLessThan
  • -
  • beLessThanOrEqual
  • -
  • beCloseTo
  • -
  • beTrue
  • -
  • beFalse
  • -
  • beTruthy
  • -
  • beFalsy
  • -
  • haveCount
  • -
- -

If you would like to see more, file an issue.

-

Disabling Objective-C Shorthand

- -

Nimble provides a shorthand for expressing expectations using the -expect function. To disable this shorthand in Objective-C, define the -NIMBLE_DISABLE_SHORT_SYNTAX macro somewhere in your code before -importing Nimble:

-
#define NIMBLE_DISABLE_SHORT_SYNTAX 1
-
-@import Nimble;
-
-NMB_expect(^{ return seagull.squawk; }, __FILE__, __LINE__).to(NMB_equal(@"Squee!"));
-
- -
-

Disabling the shorthand is useful if you’re testing functions with - names that conflict with Nimble functions, such as expect or - equal. If that’s not the case, there’s no point in disabling the - shorthand.

-
-

Using require to demand that a matcher pass before continuing

- -

Nimble 13.1 added the require dsl to complement expect. require -looks similar to expect and works with matchers just like expect does. The -difference is that require requires that the matcher passes - if the matcher -doesn’t pass, then require will throw an error. Additionally, if require -does pass, then it’ll return the result of running the expression.

- -

For example, in testing a function that returns an array, you might need to -first guarantee that there are exactly 3 items in the array before continuing -to assert on it. Instead of writing code that needlessly duplicates an assertion -and a conditional like so:

-
let collection = myFunction()
-expect(collection).to(haveCount(3))
-guard collection.count == 3 else { return }
-// ...
-
- -

You can replace that with:

-
let collection = try require(myFunction()).to(haveCount(3))
-// ...
-
-

Polling with require.

- -

Because require does everything you can do with expect, you can also use -require to poll matchers using toEventually, -eventuallyTo, toEventuallyNot, toNotEventually, toNever, neverTo, -toAlways, and alwaysTo. These work exactly the same as they do when using -expect, except that they throw if they fail, and they return the value of the -expression when they pass.

-

Using require with Async expressions and Async matchers

- -

require also works with both async expressions -(require { await someExpression() }.to(...)), and async matchers -(require().to(someAsyncMatcher())).

- -

Note that to prevent compiler confusion, -you cannot use require with async autoclosures. That is, -require(await someExpression()) will not compile. You can instead either -make the closure explicit (require { await someExpression() }), or use the -requirea function, which does accept autoclosures. -Similarly, if you ever wish to use the sync version of require when the -compiler is trying to force you to use the async version, you can use the -requires function, which only allows synchronous expressions.

-

Using unwrap to replace require(...).toNot(beNil())

- -

It’s very common to require that a value not be nil. Instead of writing -try require(...).toNot(beNil()), Nimble provides the unwrap function. This -expression throws an error if the expression evaluates to nil, or returns the -non-nil result when it passes. For example:

-
let value = try unwrap(nil as Int?) // throws
-let value = try unwrap(1 as Int?) // returns 1
-
- -

Additionally, there is also the pollUnwrap function, which aliases to -require(...).toEventuallyNot(beNil()). This is extremely useful for verifying -that a value that is updated on a background thread was eventually set to a -non-nil value.

- -

Note: As with require, there are unwraps, unwrapa, pollUnwraps, and -pollUnwrapa variants for allowing you to use autoclosures specifically with -synchronous or asynchronous code.

-

Throwing a Custom Error from Require

- -

By default, if the matcher fails in a require, then a RequireError will be -thrown. You can override this behavior and throw a custom error by passing a -non-nil Error value to the customError parameter:

-
try require(1).to(equal(2)) // throws a `RequireError`
-try require(customError: MyCustomError(), 1).to(equal(2)) // throws a `MyCustomError`
-
-

Built-in Matcher Functions

- -

Nimble includes a wide variety of matcher functions.

-

Type Checking

- -

Nimble supports checking the type membership of any kind of object, whether -Objective-C conformant or not:

-
// Swift
-
-protocol SomeProtocol{}
-class SomeClassConformingToProtocol: SomeProtocol{}
-struct SomeStructConformingToProtocol: SomeProtocol{}
-
-// The following tests pass
-expect(1).to(beAKindOf(Int.self))
-expect("turtle").to(beAKindOf(String.self))
-
-let classObject = SomeClassConformingToProtocol()
-expect(classObject).to(beAKindOf(SomeProtocol.self))
-expect(classObject).to(beAKindOf(SomeClassConformingToProtocol.self))
-expect(classObject).toNot(beAKindOf(SomeStructConformingToProtocol.self))
-
-let structObject = SomeStructConformingToProtocol()
-expect(structObject).to(beAKindOf(SomeProtocol.self))
-expect(structObject).to(beAKindOf(SomeStructConformingToProtocol.self))
-expect(structObject).toNot(beAKindOf(SomeClassConformingToProtocol.self))
-
-
// Objective-C
-
-// The following tests pass
-NSMutableArray *array = [NSMutableArray array];
-expect(array).to(beAKindOf([NSArray class]));
-expect(@1).toNot(beAKindOf([NSNull class]));
-
- -

Objects can be tested for their exact types using the beAnInstanceOf matcher:

-
// Swift
-
-protocol SomeProtocol{}
-class SomeClassConformingToProtocol: SomeProtocol{}
-struct SomeStructConformingToProtocol: SomeProtocol{}
-
-// Unlike the 'beKindOf' matcher, the 'beAnInstanceOf' matcher only
-// passes if the object is the EXACT type requested. The following
-// tests pass -- note its behavior when working in an inheritance hierarchy.
-expect(1).to(beAnInstanceOf(Int.self))
-expect("turtle").to(beAnInstanceOf(String.self))
-
-let classObject = SomeClassConformingToProtocol()
-expect(classObject).toNot(beAnInstanceOf(SomeProtocol.self))
-expect(classObject).to(beAnInstanceOf(SomeClassConformingToProtocol.self))
-expect(classObject).toNot(beAnInstanceOf(SomeStructConformingToProtocol.self))
-
-let structObject = SomeStructConformingToProtocol()
-expect(structObject).toNot(beAnInstanceOf(SomeProtocol.self))
-expect(structObject).to(beAnInstanceOf(SomeStructConformingToProtocol.self))
-expect(structObject).toNot(beAnInstanceOf(SomeClassConformingToProtocol.self))
-
-

Equivalence

-
// Swift
-
-// Passes if 'actual' is equivalent to 'expected':
-expect(actual).to(equal(expected))
-expect(actual) == expected
-
-// Passes if 'actual' is not equivalent to 'expected':
-expect(actual).toNot(equal(expected))
-expect(actual) != expected
-
-
// Objective-C
-
-// Passes if 'actual' is equivalent to 'expected':
-expect(actual).to(equal(expected))
-
-// Passes if 'actual' is not equivalent to 'expected':
-expect(actual).toNot(equal(expected))
-
- -

Values must be Equatable, Comparable, or subclasses of NSObject. -equal will always fail when used to compare one or more nil values.

-

Identity

-
// Swift
-
-// Passes if 'actual' has the same pointer address as 'expected':
-expect(actual).to(beIdenticalTo(expected))
-expect(actual) === expected
-
-// Passes if 'actual' does not have the same pointer address as 'expected':
-expect(actual).toNot(beIdenticalTo(expected))
-expect(actual) !== expected
-
- -

It is important to remember that beIdenticalTo only makes sense when comparing -types with reference semantics, which have a notion of identity. In Swift, -that means types that are defined as a class.

- -

This matcher will not work when comparing types with value semantics such as -those defined as a struct or enum. If you need to compare two value types, -consider what it means for instances of your type to be identical. This may mean -comparing individual properties or, if it makes sense to do so, conforming your type -to Equatable and using Nimble’s equivalence matchers instead.

-
// Objective-C
-
-// Passes if 'actual' has the same pointer address as 'expected':
-expect(actual).to(beIdenticalTo(expected));
-
-// Passes if 'actual' does not have the same pointer address as 'expected':
-expect(actual).toNot(beIdenticalTo(expected));
-
-

Comparisons

-
// Swift
-
-expect(actual).to(beLessThan(expected))
-expect(actual) < expected
-
-expect(actual).to(beLessThanOrEqualTo(expected))
-expect(actual) <= expected
-
-expect(actual).to(beGreaterThan(expected))
-expect(actual) > expected
-
-expect(actual).to(beGreaterThanOrEqualTo(expected))
-expect(actual) >= expected
-
-
// Objective-C
-
-expect(actual).to(beLessThan(expected));
-expect(actual).to(beLessThanOrEqualTo(expected));
-expect(actual).to(beGreaterThan(expected));
-expect(actual).to(beGreaterThanOrEqualTo(expected));
-
- -
-

Values given to the comparison matchers above must implement - Comparable.

-
- -

Because of how computers represent floating point numbers, assertions -that two floating point numbers be equal will sometimes fail. To express -that two numbers should be close to one another within a certain margin -of error, use beCloseTo:

-
// Swift
-
-expect(actual).to(beCloseTo(expected, within: delta))
-
-
// Objective-C
-
-expect(actual).to(beCloseTo(expected).within(delta));
-
- -

For example, to assert that 10.01 is close to 10, you can write:

-
// Swift
-
-expect(10.01).to(beCloseTo(10, within: 0.1))
-
-
// Objective-C
-
-expect(@(10.01)).to(beCloseTo(@10).within(0.1));
-
- -

There is also an operator shortcut available in Swift:

-
// Swift
-
-expect(actual)  expected
-expect(actual)  (expected, delta)
-
-
- -

(Type option+x to get on a U.S. keyboard)

- -

The former version uses the default delta of 0.0001. Here is yet another way to do this:

-
// Swift
-
-expect(actual)  expected ± delta
-expect(actual) == expected ± delta
-
-
- -

(Type option+shift+= to get ± on a U.S. keyboard)

- -

If you are comparing arrays of floating point numbers, you’ll find the following useful:

-
// Swift
-
-expect([0.0, 2.0])  [0.0001, 2.0001]
-expect([0.0, 2.0]).to(beCloseTo([0.1, 2.1], within: 0.1))
-
-
- -
-

Values given to the beCloseTo matcher must conform to FloatingPoint.

-
-

Types/Classes

-
// Swift
-
-// Passes if 'instance' is an instance of 'aClass':
-expect(instance).to(beAnInstanceOf(aClass))
-
-// Passes if 'instance' is an instance of 'aClass' or any of its subclasses:
-expect(instance).to(beAKindOf(aClass))
-
-
// Objective-C
-
-// Passes if 'instance' is an instance of 'aClass':
-expect(instance).to(beAnInstanceOf(aClass));
-
-// Passes if 'instance' is an instance of 'aClass' or any of its subclasses:
-expect(instance).to(beAKindOf(aClass));
-
- -
-

Instances must be Objective-C objects: subclasses of NSObject, - or Swift objects bridged to Objective-C with the @objc prefix.

-
- -

For example, to assert that dolphin is a kind of Mammal:

-
// Swift
-
-expect(dolphin).to(beAKindOf(Mammal))
-
-
// Objective-C
-
-expect(dolphin).to(beAKindOf([Mammal class]));
-
- -
-

beAnInstanceOf uses the -[NSObject isMemberOfClass:] method to - test membership. beAKindOf uses -[NSObject isKindOfClass:].

-
-

Truthiness

-
// Passes if 'actual' is not nil, true, or an object with a boolean value of true:
-expect(actual).to(beTruthy())
-
-// Passes if 'actual' is only true (not nil or an object conforming to Boolean true):
-expect(actual).to(beTrue())
-
-// Passes if 'actual' is nil, false, or an object with a boolean value of false:
-expect(actual).to(beFalsy())
-
-// Passes if 'actual' is only false (not nil or an object conforming to Boolean false):
-expect(actual).to(beFalse())
-
-// Passes if 'actual' is nil:
-expect(actual).to(beNil())
-
-
// Objective-C
-
-// Passes if 'actual' is not nil, true, or an object with a boolean value of true:
-expect(actual).to(beTruthy());
-
-// Passes if 'actual' is only true (not nil or an object conforming to Boolean true):
-expect(actual).to(beTrue());
-
-// Passes if 'actual' is nil, false, or an object with a boolean value of false:
-expect(actual).to(beFalsy());
-
-// Passes if 'actual' is only false (not nil or an object conforming to Boolean false):
-expect(actual).to(beFalse());
-
-// Passes if 'actual' is nil:
-expect(actual).to(beNil());
-
-

Swift Assertions

- -

If you’re using Swift, you can use the throwAssertion matcher to check if an assertion is thrown (e.g. fatalError()). This is made possible by @mattgallagher’s CwlPreconditionTesting library.

-
// Swift
-
-// Passes if 'somethingThatThrows()' throws an assertion, 
-// such as by calling 'fatalError()' or if a precondition fails:
-expect { try somethingThatThrows() }.to(throwAssertion())
-expect { () -> Void in fatalError() }.to(throwAssertion())
-expect { precondition(false) }.to(throwAssertion())
-
-// Passes if throwing an NSError is not equal to throwing an assertion:
-expect { throw NSError(domain: "test", code: 0, userInfo: nil) }.toNot(throwAssertion())
-
-// Passes if the code after the precondition check is not run:
-var reachedPoint1 = false
-var reachedPoint2 = false
-expect {
-    reachedPoint1 = true
-    precondition(false, "condition message")
-    reachedPoint2 = true
-}.to(throwAssertion())
-
-expect(reachedPoint1) == true
-expect(reachedPoint2) == false
-
- -

Notes:

- -
    -
  • This feature is only available in Swift.
  • -
  • The tvOS simulator is supported, but using a different mechanism, requiring you to turn off the Debug executable scheme setting for your tvOS scheme’s Test configuration.
  • -
-

Swift Error Handling

- -

You can use the throwError matcher to check if an error is thrown.

-
// Swift
-
-// Passes if 'somethingThatThrows()' throws an 'Error':
-expect { try somethingThatThrows() }.to(throwError())
-
-// Passes if 'somethingThatThrows()' throws an error within a particular domain:
-expect { try somethingThatThrows() }.to(throwError { (error: Error) in
-    expect(error._domain).to(equal(NSCocoaErrorDomain))
-})
-
-// Passes if 'somethingThatThrows()' throws a particular error enum case:
-expect { try somethingThatThrows() }.to(throwError(NSCocoaError.PropertyListReadCorruptError))
-
-// Passes if 'somethingThatThrows()' throws an error of a particular type:
-expect { try somethingThatThrows() }.to(throwError(errorType: NimbleError.self))
-
- -

When working directly with Error values, using the matchError matcher -allows you to perform certain checks on the error itself without having to -explicitly cast the error.

- -

The matchError matcher allows you to check whether or not the error:

- -
    -
  • is the same type of error you are expecting.
  • -
  • represents a particular error value that you are expecting.
  • -
- -

This can be useful when using Result or Promise types, for example.

-
// Swift
-
-let actual: Error = ...
-
-// Passes if 'actual' represents any error value from the NimbleErrorEnum type:
-expect(actual).to(matchError(NimbleErrorEnum.self))
-
-// Passes if 'actual' represents the case 'timeout' from the NimbleErrorEnum type:
-expect(actual).to(matchError(NimbleErrorEnum.timeout))
-
-// Passes if 'actual' contains an NSError equal to the one provided:
-expect(actual).to(matchError(NSError(domain: "err", code: 123, userInfo: nil)))
-
- -

Note: This feature is only available in Swift.

-

Exceptions

-
// Swift
-
-// Passes if 'actual', when evaluated, raises an exception:
-expect(actual).to(raiseException())
-
-// Passes if 'actual' raises an exception with the given name:
-expect(actual).to(raiseException(named: name))
-
-// Passes if 'actual' raises an exception with the given name and reason:
-expect(actual).to(raiseException(named: name, reason: reason))
-
-// Passes if 'actual' raises an exception which passes expectations defined in the given closure:
-// (in this case, if the exception's name begins with "a r")
-expect { exception.raise() }.to(raiseException { (exception: NSException) in
-    expect(exception.name).to(beginWith("a r"))
-})
-
-
// Objective-C
-
-// Passes if 'actual', when evaluated, raises an exception:
-expect(actual).to(raiseException())
-
-// Passes if 'actual' raises an exception with the given name
-expect(actual).to(raiseException().named(name))
-
-// Passes if 'actual' raises an exception with the given name and reason:
-expect(actual).to(raiseException().named(name).reason(reason))
-
-// Passes if 'actual' raises an exception and it passes expectations defined in the given block:
-// (in this case, if name begins with "a r")
-expect(actual).to(raiseException().satisfyingBlock(^(NSException *exception) {
-    expect(exception.name).to(beginWith(@"a r"));
-}));
-
- -

Note: Swift currently doesn’t have exceptions (see #220). -Only Objective-C code can raise exceptions that Nimble will catch.

-

Collection Membership

-
// Swift
-
-// Passes if all of the expected values are members of 'actual':
-expect(actual).to(contain(expected...))
-
-// Passes if 'actual' is empty (i.e. it contains no elements):
-expect(actual).to(beEmpty())
-
-
// Objective-C
-
-// Passes if expected is a member of 'actual':
-expect(actual).to(contain(expected));
-
-// Passes if 'actual' is empty (i.e. it contains no elements):
-expect(actual).to(beEmpty());
-
- -
-

In Swift contain takes any number of arguments. The expectation - passes if all of them are members of the collection. In Objective-C, - contain only takes one argument for now.

-
- -

For example, to assert that a list of sea creature names contains -“dolphin” and “starfish”:

-
// Swift
-
-expect(["whale", "dolphin", "starfish"]).to(contain("dolphin", "starfish"))
-
-
// Objective-C
-
-expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"dolphin"));
-expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"starfish"));
-
- -
-

contain and beEmpty expect collections to be instances of - NSArray, NSSet, or a Swift collection composed of Equatable elements.

-
- -

To test whether a set of elements is present at the beginning or end of -an ordered collection, use beginWith and endWith:

-
// Swift
-
-// Passes if the elements in expected appear at the beginning of 'actual':
-expect(actual).to(beginWith(expected...))
-
-// Passes if the the elements in expected come at the end of 'actual':
-expect(actual).to(endWith(expected...))
-
-
// Objective-C
-
-// Passes if the elements in expected appear at the beginning of 'actual':
-expect(actual).to(beginWith(expected));
-
-// Passes if the the elements in expected come at the end of 'actual':
-expect(actual).to(endWith(expected));
-
- -
-

beginWith and endWith expect collections to be instances of - NSArray, or ordered Swift collections composed of Equatable - elements.

-
- -

Like contain, in Objective-C beginWith and endWith only support - a single argument for now.

- -

For code that returns collections of complex objects without a strict -ordering, there is the containElementSatisfying matcher:

-
// Swift
-
-struct Turtle {
-    let color: String
-}
-
-let turtles: [Turtle] = functionThatReturnsSomeTurtlesInAnyOrder()
-
-// This set of matchers passes regardless of whether the array is 
-// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]:
-
-expect(turtles).to(containElementSatisfying({ turtle in
-    return turtle.color == "green"
-}))
-expect(turtles).to(containElementSatisfying({ turtle in
-    return turtle.color == "blue"
-}, "that is a turtle with color 'blue'"))
-
-// The second matcher will incorporate the provided string in the error message
-// should it fail
-
- -

Note: in Swift, containElementSatisfying also has a variant that takes in an -async function.

-
// Objective-C
-
-@interface Turtle : NSObject
-@property (nonatomic, readonly, nonnull) NSString *color;
-@end
-
-@implementation Turtle 
-@end
-
-NSArray<Turtle *> * __nonnull turtles = functionThatReturnsSomeTurtlesInAnyOrder();
-
-// This set of matchers passes regardless of whether the array is 
-// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]:
-
-expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) {
-    return [[turtle color] isEqualToString:@"green"];
-}));
-expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) {
-    return [[turtle color] isEqualToString:@"blue"];
-}));
-
- -

For asserting on if the given Comparable value is inside of a Range, use the beWithin matcher.

-
// Swift
-
-// Passes if 5 is within the range 1 through 10, inclusive
-expect(5).to(beWithin(1...10))
-
-// Passes if 5 is not within the range 2 through 4.
-expect(5).toNot(beWithin(2..<5))
-
-

Strings

-
// Swift
-
-// Passes if 'actual' contains 'substring':
-expect(actual).to(contain(substring))
-
-// Passes if 'actual' begins with 'prefix':
-expect(actual).to(beginWith(prefix))
-
-// Passes if 'actual' ends with 'suffix':
-expect(actual).to(endWith(suffix))
-
-// Passes if 'actual' represents the empty string, "":
-expect(actual).to(beEmpty())
-
-// Passes if 'actual' matches the regular expression defined in 'expected':
-expect(actual).to(match(expected))
-
-
// Objective-C
-
-// Passes if 'actual' contains 'substring':
-expect(actual).to(contain(expected));
-
-// Passes if 'actual' begins with 'prefix':
-expect(actual).to(beginWith(prefix));
-
-// Passes if 'actual' ends with 'suffix':
-expect(actual).to(endWith(suffix));
-
-// Passes if 'actual' represents the empty string, "":
-expect(actual).to(beEmpty());
-
-// Passes if 'actual' matches the regular expression defined in 'expected':
-expect(actual).to(match(expected))
-
-

Collection Elements

- -

Nimble provides a means to check that all elements of a collection pass a given expectation.

-

Swift

- -

In Swift, the collection must be an instance of a type conforming to -Sequence.

-
// Swift
-
-// Providing a custom function:
-expect([1, 2, 3, 4]).to(allPass { $0 < 5 })
-
-// Composing the expectation with another matcher:
-expect([1, 2, 3, 4]).to(allPass(beLessThan(5)))
-
- -

There are also variants of allPass that check against async matchers, and -that take in async functions:

-
// Swift
-
-// Providing a custom function:
-expect([1, 2, 3, 4]).to(allPass { await asyncFunctionReturningBool($0) })
-
-// Composing the expectation with another matcher:
-expect([1, 2, 3, 4]).to(allPass(someAsyncMatcher()))
-
-

Objective-C

- -

In Objective-C, the collection must be an instance of a type which implements -the NSFastEnumeration protocol, and whose elements are instances of a type -which subclasses NSObject.

- -

Additionally, unlike in Swift, there is no override to specify a custom -matcher function.

-
// Objective-C
-
-expect(@[@1, @2, @3, @4]).to(allPass(beLessThan(@5)));
-
-

Collection Count

-
// Swift
-
-// Passes if 'actual' contains the 'expected' number of elements:
-expect(actual).to(haveCount(expected))
-
-// Passes if 'actual' does _not_ contain the 'expected' number of elements:
-expect(actual).notTo(haveCount(expected))
-
-
// Objective-C
-
-// Passes if 'actual' contains the 'expected' number of elements:
-expect(actual).to(haveCount(expected))
-
-// Passes if 'actual' does _not_ contain the 'expected' number of elements:
-expect(actual).notTo(haveCount(expected))
-
- -

For Swift, the actual value must be an instance of a type conforming to Collection. -For example, instances of Array, Dictionary, or Set.

- -

For Objective-C, the actual value must be one of the following classes, or their subclasses:

- -
    -
  • NSArray,
  • -
  • NSDictionary,
  • -
  • NSSet, or
  • -
  • NSHashTable.
  • -
-

Notifications

-
// Swift
-let testNotification = Notification(name: Notification.Name("Foo"), object: nil)
-
-// Passes if the closure in expect { ... } posts a notification to the default
-// notification center.
-expect {
-    NotificationCenter.default.post(testNotification)
-}.to(postNotifications(equal([testNotification])))
-
-// Passes if the closure in expect { ... } posts a notification to a given
-// notification center
-let notificationCenter = NotificationCenter()
-expect {
-    notificationCenter.post(testNotification)
-}.to(postNotifications(equal([testNotification]), from: notificationCenter))
-
-// Passes if the closure in expect { ... } posts a notification with the provided names to a given
-// notification center. Make sure to use this when running tests on Catalina, 
-// using DistributedNotificationCenter as there is currently no way 
-// of observing notifications without providing specific names.
-let distributedNotificationCenter = DistributedNotificationCenter()
-expect {
-    distributedNotificationCenter.post(testNotification)
-}.toEventually(postDistributedNotifications(equal([testNotification]),
-                                  from: distributedNotificationCenter,
-                                  names: [testNotification.name]))
-
- -
-

This matcher is only available in Swift.

-
-

Result

-
// Swift
-let aResult: Result<String, Error> = .success("Hooray") 
-
-// passes if result is .success
-expect(aResult).to(beSuccess()) 
-
-// passes if result value is .success and validates Success value
-expect(aResult).to(beSuccess { value in
-    expect(value).to(equal("Hooray"))
-})
-
-
-enum AnError: Error {
-    case somethingHappened
-}
-let otherResult: Result<String, AnError> = .failure(.somethingHappened) 
-
-// passes if result is .failure
-expect(otherResult).to(beFailure()) 
-
-// passes if result value is .failure and validates error
-expect(otherResult).to(beFailure { error in
-    expect(error).to(matchError(AnError.somethingHappened))
-}) 
-
- -
-

This matcher is only available in Swift.

-
-

Matching a value to any of a group of matchers

-
// Swift
-
-// passes if actual is either less than 10 or greater than 20
-expect(actual).to(satisfyAnyOf(beLessThan(10), beGreaterThan(20)))
-
-// can include any number of matchers -- the following will pass
-// **be careful** -- too many matchers can be the sign of an unfocused test
-expect(6).to(satisfyAnyOf(equal(2), equal(3), equal(4), equal(5), equal(6), equal(7)))
-
-// in Swift you also have the option to use the || operator to achieve a similar function
-expect(82).to(beLessThan(50) || beGreaterThan(80))
-
- -

Note: In swift, you can mix and match synchronous and asynchronous matchers -using by satisfyAnyOf/||.

-
// Objective-C
-
-// passes if actual is either less than 10 or greater than 20
-expect(actual).to(satisfyAnyOf(beLessThan(@10), beGreaterThan(@20)))
-
-// can include any number of matchers -- the following will pass
-// **be careful** -- too many matchers can be the sign of an unfocused test
-expect(@6).to(satisfyAnyOf(equal(@2), equal(@3), equal(@4), equal(@5), equal(@6), equal(@7)))
-
- -

Note: This matcher allows you to chain any number of matchers together. This provides flexibility, - but if you find yourself chaining many matchers together in one test, consider whether you - could instead refactor that single test into multiple, more precisely focused tests for - better coverage.

-

Custom Validation

-
// Swift
-
-// passes if .succeeded is returned from the closure
-expect {
-    guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else {
-        return .failed(reason: "wrong enum case")
-    }
-
-    return .succeeded
-}.to(succeed())
-
-// passes if .failed is returned from the closure
-expect {
-    guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else {
-        return .failed(reason: "wrong enum case")
-    }
-
-    return .succeeded
-}.notTo(succeed())
-
- -

The String provided with .failed() is shown when the test fails.

- -

When using toEventually() be careful not to make state changes or run process intensive code since this closure will be ran many times.

-

Mapping a Value to Another Value

- -

Sometimes, you only want to match against a property or group of properties. -For example, if you wanted to check that only one or a few properties of a value -are equal to something else. For this, use the map matcher to convert a value -to another value and check it with a matcher.

-
// Swift
-
-expect(someValue).to(map(\.someProperty, equal(expectedProperty)))
-
-// or, for checking multiple different properties:
-
-expect(someValue).to(satisfyAllOf(
-    map(\.firstProperty, equal(expectedFirstProperty)),
-    map({ $0.secondProperty }, equal(expectedSecondProperty))
-))
-
- -

The map matcher takes in either a closure or a keypath literal, and a matcher -to compose with. It also works with async closures and async matchers.

- -

In most cases, it is simpler and easier to not use map (that is, prefer -expect(someValue.property).to(equal(1)) to -expect(someValue).to(map(\.property, equal(1)))). But map is incredibly -useful when combined with satisfyAllOf/satisfyAnyOf, especially for checking -a value that cannot conform to Equatable (or you don’t want to make it -conform to Equatable). However, if you find yourself reusing map many times -to do a fuzzy-equals of a given type, you will find writing a custom matcher to -be much easier to use and maintain.

-

Writing Your Own Matchers

- -

In Nimble, matchers are Swift functions that take an expected -value and return a Matcher closure. Take equal, for example:

-
// Swift
-
-public func equal<T: Equatable>(expectedValue: T?) -> Matcher<T> {
-    // Can be shortened to:
-    //   Matcher { actual in  ... }
-    //
-    // But shown with types here for clarity.
-    return Matcher { (actualExpression: Expression<T>) throws -> MatcherResult in
-        let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>")
-        if let actualValue = try actualExpression.evaluate() {
-            return MatcherResult(
-                bool: actualValue == expectedValue!,
-                message: msg
-            )
-        } else {
-            return MatcherResult(
-                status: .fail,
-                message: msg.appendedBeNilHint()
-            )
-        }
-    }
-}
-
- -

The return value of a Matcher closure is a MatcherResult that indicates -whether the actual value matches the expectation and what error message to -display on failure.

- -
-

The actual equal matcher function does not match when - expected are nil; the example above has been edited for brevity.

-
- -

Since matchers are just Swift functions, you can define them anywhere: -at the top of your test file, in a file shared by all of your tests, or -in an Xcode project you distribute to others.

- -
-

If you write a matcher you think everyone can use, consider adding it - to Nimble’s built-in set of matchers by sending a pull request! Or - distribute it yourself via GitHub.

-
- -

For examples of how to write your own matchers, just check out the -Matchers directory -to see how Nimble’s built-in set of matchers are implemented. You can -also check out the tips below.

-

MatcherResult

- -

MatcherResult is the return struct that Matcher return to indicate -success and failure. A MatcherResult is made up of two values: -MatcherStatus and ExpectationMessage.

- -

Instead of a boolean, MatcherStatus captures a trinary set of values:

-
// Swift
-
-public enum MatcherStatus {
-// The matcher "passes" with the given expression
-// eg - expect(1).to(equal(1))
-case matches
-
-// The matcher "fails" with the given expression
-// eg - expect(1).toNot(equal(1))
-case doesNotMatch
-
-// The matcher never "passes" with the given expression, even if negated
-// eg - expect(nil as Int?).toNot(equal(1))
-case fail
-
-// ...
-}
-
- -

Meanwhile, ExpectationMessage provides messaging semantics for error reporting.

-
// Swift
-
-public indirect enum ExpectationMessage {
-// Emits standard error message:
-// eg - "expected to <string>, got <actual>"
-case expectedActualValueTo(/* message: */ String)
-
-// Allows any free-form message
-// eg - "<string>"
-case fail(/* message: */ String)
-
-// ...
-}
-
- -

Matchers should usually depend on either .expectedActualValueTo(..) or -.fail(..) when reporting errors. Special cases can be used for the other enum -cases.

- -

Finally, if your Matcher utilizes other Matchers, you can utilize -.appended(details:) and .appended(message:) methods to annotate an existing -error with more details.

- -

A common message to append is failing on nils. For that, .appendedBeNilHint() -can be used.

-

Lazy Evaluation

- -

actualExpression is a lazy, memoized closure around the value provided to the -expect function. The expression can either be a closure or a value directly -passed to expect(...). In order to determine whether that value matches, -custom matchers should call actualExpression.evaluate():

-
// Swift
-
-public func beNil<T>() -> Matcher<T> {
-    // Matcher.simpleNilable(..) automatically generates ExpectationMessage for
-    // us based on the string we provide to it. Also, the 'Nilable' postfix indicates
-    // that this Matcher supports matching against nil actualExpressions, instead of
-    // always resulting in a MatcherStatus.fail result -- which is true for
-    // Matcher.simple(..)
-    return Matcher.simpleNilable("be nil") { actualExpression in
-        let actualValue = try actualExpression.evaluate()
-        return MatcherStatus(bool: actualValue == nil)
-    }
-}
-
- -

In the above example, actualExpression is not nil – it is a closure -that returns a value. The value it returns, which is accessed via the -evaluate() method, may be nil. If that value is nil, the beNil -matcher function returns true, indicating that the expectation passed.

-

Type Checking via Swift Generics

- -

Using Swift’s generics, matchers can constrain the type of the actual value -passed to the expect function by modifying the return type.

- -

For example, the following matcher, haveDescription, only accepts actual -values that implement the Printable protocol. It checks their description -against the one provided to the matcher function, and passes if they are the same:

-
// Swift
-
-public func haveDescription(description: String) -> Matcher<Printable?> {
-    return Matcher.simple("have description") { actual in
-        return MatcherStatus(bool: actual.evaluate().description == description)
-    }
-}
-
-

Customizing Failure Messages

- -

When using Matcher.simple(..) or Matcher.simpleNilable(..), Nimble -outputs the following failure message when an expectation fails:

-
// where `message` is the first string argument and
-// `actual` is the actual value received in `expect(..)`
-"expected to \(message), got <\(actual)>"
-
- -

You can customize this message by modifying the way you create a Matcher.

-

Basic Customization

- -

For slightly more complex error messaging, receive the created failure message -with Matcher.define(..):

-
// Swift
-
-public func equal<T: Equatable>(_ expectedValue: T?) -> Matcher<T> {
-    return Matcher.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in
-        let actualValue = try actualExpression.evaluate()
-        let matches = actualValue == expectedValue && expectedValue != nil
-        if expectedValue == nil || actualValue == nil {
-            if expectedValue == nil && actualValue != nil {
-                return MatcherResult(
-                    status: .fail,
-                    message: msg.appendedBeNilHint()
-                )
-            }
-            return MatcherResult(status: .fail, message: msg)
-        }
-        return MatcherResult(bool: matches, message: msg)
-    }
-}
-
- -

In the example above, msg is defined based on the string given to -Matcher.define. The code looks akin to:

-
// Swift
-
-let msg = ExpectationMessage.expectedActualValueTo("equal <\(stringify(expectedValue))>")
-
-

Full Customization

- -

To fully customize the behavior of the Matcher, use the overload that expects -a MatcherResult to be returned.

- -

Along with MatcherResult, there are other ExpectationMessage enum values you can use:

-
public indirect enum ExpectationMessage {
-// Emits standard error message:
-// eg - "expected to <message>, got <actual>"
-case expectedActualValueTo(/* message: */ String)
-
-// Allows any free-form message
-// eg - "<message>"
-case fail(/* message: */ String)
-
-// Emits standard error message with a custom actual value instead of the default.
-// eg - "expected to <message>, got <actual>"
-case expectedCustomValueTo(/* message: */ String, /* actual: */ String)
-
-// Emits standard error message without mentioning the actual value
-// eg - "expected to <message>"
-case expectedTo(/* message: */ String)
-
-// ...
-}
-
- -

For matchers that compose other matchers, there are a handful of helper -functions to annotate messages.

- -

appended(message: String) is used to append to the original failure message:

-
// produces "expected to be true, got <actual> (use beFalse() for inverse)"
-// appended message do show up inline in Xcode.
-.expectedActualValueTo("be true").appended(message: " (use beFalse() for inverse)")
-
- -

For a more comprehensive message that spans multiple lines, use -appended(details: String) instead:

-
// produces "expected to be true, got <actual>\n\nuse beFalse() for inverse\nor use beNil()"
-// details do not show inline in Xcode, but do show up in test logs.
-.expectedActualValueTo("be true").appended(details: "use beFalse() for inverse\nor use beNil()")
-
-

Asynchronous Matchers

- -

To write matchers against async expressions, return an instance of -AsyncMatcher. The closure passed to AsyncMatcher is async, and the -expression you evaluate is also asynchronous and needs to be awaited on.

-
// Swift
-
-actor CallRecorder<Arguments> {
-    private(set) var calls: [Arguments] = []
-
-    func record(call: Arguments) {
-        calls.append(call)
-    }
-}
-
-func beCalled<Argument: Equatable>(with arguments: Argument) -> AsyncMatcher<CallRecorder<Argument>> {
-    AsyncMatcher { (expression: AsyncExpression<CallRecorder<Argument>>) in
-        let message = ExpectationMessage.expectedActualValueTo("be called with \(arguments)")
-        guard let calls = try await expression.evaluate()?.calls else {
-            return MatcherResult(status: .fail, message: message.appendedBeNilHint())
-        }
-
-        return MatcherResult(bool: calls.contains(args), message: message.appended(details: "called with \(calls)"))
-    }
-}
-
- -

In this example, we created an actor to act as an object to record calls to an -async function. Then, we created the beCalled(with:) matcher to check if the -actor has received a call with the given arguments.

-

Supporting Objective-C

- -

To use a custom matcher written in Swift from Objective-C, you’ll have -to extend the NMBMatcher class, adding a new class method for your -custom matcher. The example below defines the class method -+[NMBMatcher beNilMatcher]:

-
// Swift
-
-extension NMBMatcher {
-    @objc public class func beNilMatcher() -> NMBMatcher {
-        return NMBMatcher { actualExpression in
-            return try beNil().satisfies(actualExpression).toObjectiveC()
-        }
-    }
-}
-
- -

The above allows you to use the matcher from Objective-C:

-
// Objective-C
-
-expect(actual).to([NMBMatcher beNilMatcher]());
-
- -

To make the syntax easier to use, define a C function that calls the -class method:

-
// Objective-C
-
-FOUNDATION_EXPORT NMBMatcher *beNil() {
-    return [NMBMatcher beNilMatcher];
-}
-
-

Properly Handling nil in Objective-C Matchers

- -

When supporting Objective-C, make sure you handle nil appropriately. -Like Cedar, -most matchers do not match with nil. This is to bring prevent test -writers from being surprised by nil values where they did not expect -them.

- -

Nimble provides the beNil matcher function for test writer that want -to make expectations on nil objects:

-
// Objective-C
-
-expect(nil).to(equal(nil)); // fails
-expect(nil).to(beNil());    // passes
-
- -

If your matcher does not want to match with nil, you use Matcher.define or Matcher.simple. -Using those factory methods will automatically generate expected value failure messages when they’re nil.

-
public func beginWith<S: Sequence>(_ startingElement: S.Element) -> Matcher<S> where S.Element: Equatable {
-    return Matcher.simple("begin with <\(startingElement)>") { actualExpression in
-        guard let actualValue = try actualExpression.evaluate() else { return .fail }
-
-        var actualGenerator = actualValue.makeIterator()
-        return MatcherStatus(bool: actualGenerator.next() == startingElement)
-    }
-}
-
-extension NMBMatcher {
-    @objc public class func beginWithMatcher(_ expected: Any) -> NMBMatcher {
-        return NMBMatcher { actualExpression in
-            let actual = try actualExpression.evaluate()
-            let expr = actualExpression.cast { $0 as? NMBOrderedCollection }
-            return try beginWith(expected).satisfies(expr).toObjectiveC()
-        }
-    }
-}
-
-

Installing Nimble

- -
-

Nimble can be used on its own, or in conjunction with its sister - project, Quick. To install both - Quick and Nimble, follow the installation instructions in the Quick - Documentation.

-
- -

Nimble can currently be installed in one of two ways: using CocoaPods, or with -git submodules.

-

Installing Nimble as a Submodule

- -

To use Nimble as a submodule to test your macOS, iOS or tvOS applications, follow -these 4 easy steps:

- -
    -
  1. Clone the Nimble repository
  2. -
  3. Add Nimble.xcodeproj to the Xcode workspace for your project
  4. -
  5. Link Nimble.framework to your test target
  6. -
  7. Start writing expectations!
  8. -
- -

For more detailed instructions on each of these steps, -read How to Install Quick. -Ignore the steps involving adding Quick to your project in order to -install just Nimble.

-

Installing Nimble via CocoaPods

- -

To use Nimble in CocoaPods to test your macOS, iOS, tvOS or watchOS applications, add -Nimble to your podfile and add the use_frameworks! line to enable Swift -support for CocoaPods.

-
platform :ios, '8.0'
-
-source 'https://github.com/CocoaPods/Specs.git'
-
-# Whatever pods you need for your app go here
-
-target 'YOUR_APP_NAME_HERE_Tests', :exclusive => true do
-  use_frameworks!
-  pod 'Nimble'
-end
-
- -

Finally run pod install.

-

Installing Nimble via Swift Package Manager

-

Xcode

- -

To install Nimble via Xcode’s Swift Package Manager Integration: -Select your project configuration, then the project tab, then the Package -Dependencies tab. Click on the “plus” button at the bottom of the list, -then follow the wizard to add Quick to your project. Specify -https://github.com/Quick/Nimble.git as the url, and be sure to add -Nimble as a dependency of your unit test target, not your app target.

-

Package.Swift

- -

To use Nimble with Swift Package Manager to test your applications, add Nimble -to your Package.Swift and link it with your test target:

-
// swift-tools-version:5.5
-
-import PackageDescription
-
-let package = Package(
-    name: "MyAwesomeLibrary",
-    products: [
-        // ...
-    ],
-    dependencies: [
-        // ...
-        .package(url:  "https://github.com/Quick/Nimble.git", from: "12.0.0"),
-    ],
-    targets: [
-        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
-        // Targets can depend on other targets in this package, and on products in packages this package depends on.
-        .target(
-            name: "MyAwesomeLibrary",
-            dependencies: ...),
-        .testTarget(
-            name: "MyAwesomeLibraryTests",
-            dependencies: ["MyAwesomeLibrary", "Nimble"]),
-    ]
-)
-
- -

Please note that if you install Nimble using Swift Package Manager, then raiseException is not available.

-

Using Nimble without XCTest

- -

Nimble is integrated with XCTest to allow it work well when used in Xcode test -bundles, however it can also be used in a standalone app. After installing -Nimble using one of the above methods, there are two additional steps required -to make this work.

- -
    -
  1. Create a custom assertion handler and assign an instance of it to the -global NimbleAssertionHandler variable. For example:
  2. -
-
class MyAssertionHandler : AssertionHandler {
-    func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) {
-        if (!assertion) {
-            print("Expectation failed: \(message.stringValue)")
-        }
-    }
-}
-
-
// Somewhere before you use any assertions
-NimbleAssertionHandler = MyAssertionHandler()
-
- -
    -
  1. Add a post-build action to fix an issue with the Swift XCTest support -library being unnecessarily copied into your app - -
      -
    • Edit your scheme in Xcode, and navigate to Build -> Post-actions
    • -
    • Click the “+” icon and select “New Run Script Action”
    • -
    • Open the “Provide build settings from” dropdown and select your target
    • -
    • Enter the following script contents: - -rm "${SWIFT_STDLIB_TOOL_DESTINATION_DIR}/libswiftXCTest.dylib" -
    • -
  2. -
- -

You can now use Nimble assertions in your code and handle failures as you see -fit.

-

Privacy Statement

- -

Nimble is a library that is only used for testing and should never be included -in the binary submitted to App Store Connect.

- -

Despite not being shipped to Apple, Nimble does not and will never collect any -kind of analytics or tracking.

- -
-
- -
-
- - diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jazzy.js deleted file mode 100755 index 198441660..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jazzy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -window.jazzy = {'docset': false} -if (typeof window.dash != 'undefined') { - document.documentElement.className += ' dash' - window.jazzy.docset = true -} -if (navigator.userAgent.match(/xcode/i)) { - document.documentElement.className += ' xcode' - window.jazzy.docset = true -} - -function toggleItem($link, $content) { - var animationDuration = 300; - $link.toggleClass('token-open'); - $content.slideToggle(animationDuration); -} - -function itemLinkToContent($link) { - return $link.parent().parent().next(); -} - -// On doc load + hash-change, open any targetted item -function openCurrentItemIfClosed() { - if (window.jazzy.docset) { - return; - } - var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); - $content = itemLinkToContent($link); - if ($content.is(':hidden')) { - toggleItem($link, $content); - } -} - -$(openCurrentItemIfClosed); -$(window).on('hashchange', openCurrentItemIfClosed); - -// On item link ('token') click, toggle its discussion -$('.token').on('click', function(event) { - if (window.jazzy.docset) { - return; - } - var $link = $(this); - toggleItem($link, itemLinkToContent($link)); - - // Keeps the document from jumping to the hash. - var href = $link.attr('href'); - if (history.pushState) { - history.pushState({}, '', href); - } else { - location.hash = href; - } - event.preventDefault(); -}); - -// Clicks on links to the current, closed, item need to open the item -$("a:not('.token')").on('click', function() { - if (location == this.href) { - openCurrentItemIfClosed(); - } -}); - -// KaTeX rendering -if ("katex" in window) { - $($('.math').each( (_, element) => { - katex.render(element.textContent, element, { - displayMode: $(element).hasClass('m-block'), - throwOnError: false, - trust: true - }); - })) -} diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jazzy.search.js b/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jazzy.search.js deleted file mode 100644 index 359cdbb8b..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jazzy.search.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -$(function(){ - var $typeahead = $('[data-typeahead]'); - var $form = $typeahead.parents('form'); - var searchURL = $form.attr('action'); - - function displayTemplate(result) { - return result.name; - } - - function suggestionTemplate(result) { - var t = '
'; - t += '' + result.name + ''; - if (result.parent_name) { - t += '' + result.parent_name + ''; - } - t += '
'; - return t; - } - - $typeahead.one('focus', function() { - $form.addClass('loading'); - - $.getJSON(searchURL).then(function(searchData) { - const searchIndex = lunr(function() { - this.ref('url'); - this.field('name'); - this.field('abstract'); - for (const [url, doc] of Object.entries(searchData)) { - this.add({url: url, name: doc.name, abstract: doc.abstract}); - } - }); - - $typeahead.typeahead( - { - highlight: true, - minLength: 3, - autoselect: true - }, - { - limit: 10, - display: displayTemplate, - templates: { suggestion: suggestionTemplate }, - source: function(query, sync) { - const lcSearch = query.toLowerCase(); - const results = searchIndex.query(function(q) { - q.term(lcSearch, { boost: 100 }); - q.term(lcSearch, { - boost: 10, - wildcard: lunr.Query.wildcard.TRAILING - }); - }).map(function(result) { - var doc = searchData[result.ref]; - doc.url = result.ref; - return doc; - }); - sync(results); - } - } - ); - $form.removeClass('loading'); - $typeahead.trigger('focus'); - }); - }); - - var baseURL = searchURL.slice(0, -"search.json".length); - - $typeahead.on('typeahead:select', function(e, result) { - window.location = baseURL + result.url; - }); -}); diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jquery.min.js deleted file mode 100644 index 7f37b5d99..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/typeahead.jquery.js deleted file mode 100644 index 3a2d2ab03..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/js/typeahead.jquery.js +++ /dev/null @@ -1,1694 +0,0 @@ -/*! - * typeahead.js 1.3.1 - * https://github.com/corejavascript/typeahead.js - * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT - */ - - -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], function(a0) { - return factory(a0); - }); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -})(this, function($) { - var _ = function() { - "use strict"; - return { - isMsie: function() { - return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; - }, - isBlankString: function(str) { - return !str || /^\s*$/.test(str); - }, - escapeRegExChars: function(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - isString: function(obj) { - return typeof obj === "string"; - }, - isNumber: function(obj) { - return typeof obj === "number"; - }, - isArray: $.isArray, - isFunction: $.isFunction, - isObject: $.isPlainObject, - isUndefined: function(obj) { - return typeof obj === "undefined"; - }, - isElement: function(obj) { - return !!(obj && obj.nodeType === 1); - }, - isJQuery: function(obj) { - return obj instanceof $; - }, - toStr: function toStr(s) { - return _.isUndefined(s) || s === null ? "" : s + ""; - }, - bind: $.proxy, - each: function(collection, cb) { - $.each(collection, reverseArgs); - function reverseArgs(index, value) { - return cb(value, index); - } - }, - map: $.map, - filter: $.grep, - every: function(obj, test) { - var result = true; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (!(result = test.call(null, val, key, obj))) { - return false; - } - }); - return !!result; - }, - some: function(obj, test) { - var result = false; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (result = test.call(null, val, key, obj)) { - return false; - } - }); - return !!result; - }, - mixin: $.extend, - identity: function(x) { - return x; - }, - clone: function(obj) { - return $.extend(true, {}, obj); - }, - getIdGenerator: function() { - var counter = 0; - return function() { - return counter++; - }; - }, - templatify: function templatify(obj) { - return $.isFunction(obj) ? obj : template; - function template() { - return String(obj); - } - }, - defer: function(fn) { - setTimeout(fn, 0); - }, - debounce: function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments, later, callNow; - later = function() { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - throttle: function(func, wait) { - var context, args, timeout, result, previous, later; - previous = 0; - later = function() { - previous = new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(), remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }, - stringify: function(val) { - return _.isString(val) ? val : JSON.stringify(val); - }, - guid: function() { - function _p8(s) { - var p = (Math.random().toString(16) + "000000000").substr(2, 8); - return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; - } - return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); - }, - noop: function() {} - }; - }(); - var WWW = function() { - "use strict"; - var defaultClassNames = { - wrapper: "twitter-typeahead", - input: "tt-input", - hint: "tt-hint", - menu: "tt-menu", - dataset: "tt-dataset", - suggestion: "tt-suggestion", - selectable: "tt-selectable", - empty: "tt-empty", - open: "tt-open", - cursor: "tt-cursor", - highlight: "tt-highlight" - }; - return build; - function build(o) { - var www, classes; - classes = _.mixin({}, defaultClassNames, o); - www = { - css: buildCss(), - classes: classes, - html: buildHtml(classes), - selectors: buildSelectors(classes) - }; - return { - css: www.css, - html: www.html, - classes: www.classes, - selectors: www.selectors, - mixin: function(o) { - _.mixin(o, www); - } - }; - } - function buildHtml(c) { - return { - wrapper: '', - menu: '
' - }; - } - function buildSelectors(classes) { - var selectors = {}; - _.each(classes, function(v, k) { - selectors[k] = "." + v; - }); - return selectors; - } - function buildCss() { - var css = { - wrapper: { - position: "relative", - display: "inline-block" - }, - hint: { - position: "absolute", - top: "0", - left: "0", - borderColor: "transparent", - boxShadow: "none", - opacity: "1" - }, - input: { - position: "relative", - verticalAlign: "top", - backgroundColor: "transparent" - }, - inputWithNoHint: { - position: "relative", - verticalAlign: "top" - }, - menu: { - position: "absolute", - top: "100%", - left: "0", - zIndex: "100", - display: "none" - }, - ltr: { - left: "0", - right: "auto" - }, - rtl: { - left: "auto", - right: " 0" - } - }; - if (_.isMsie()) { - _.mixin(css.input, { - backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" - }); - } - return css; - } - }(); - var EventBus = function() { - "use strict"; - var namespace, deprecationMap; - namespace = "typeahead:"; - deprecationMap = { - render: "rendered", - cursorchange: "cursorchanged", - select: "selected", - autocomplete: "autocompleted" - }; - function EventBus(o) { - if (!o || !o.el) { - $.error("EventBus initialized without el"); - } - this.$el = $(o.el); - } - _.mixin(EventBus.prototype, { - _trigger: function(type, args) { - var $e = $.Event(namespace + type); - this.$el.trigger.call(this.$el, $e, args || []); - return $e; - }, - before: function(type) { - var args, $e; - args = [].slice.call(arguments, 1); - $e = this._trigger("before" + type, args); - return $e.isDefaultPrevented(); - }, - trigger: function(type) { - var deprecatedType; - this._trigger(type, [].slice.call(arguments, 1)); - if (deprecatedType = deprecationMap[type]) { - this._trigger(deprecatedType, [].slice.call(arguments, 1)); - } - } - }); - return EventBus; - }(); - var EventEmitter = function() { - "use strict"; - var splitter = /\s+/, nextTick = getNextTick(); - return { - onSync: onSync, - onAsync: onAsync, - off: off, - trigger: trigger - }; - function on(method, types, cb, context) { - var type; - if (!cb) { - return this; - } - types = types.split(splitter); - cb = context ? bindContext(cb, context) : cb; - this._callbacks = this._callbacks || {}; - while (type = types.shift()) { - this._callbacks[type] = this._callbacks[type] || { - sync: [], - async: [] - }; - this._callbacks[type][method].push(cb); - } - return this; - } - function onAsync(types, cb, context) { - return on.call(this, "async", types, cb, context); - } - function onSync(types, cb, context) { - return on.call(this, "sync", types, cb, context); - } - function off(types) { - var type; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - while (type = types.shift()) { - delete this._callbacks[type]; - } - return this; - } - function trigger(types) { - var type, callbacks, args, syncFlush, asyncFlush; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - args = [].slice.call(arguments, 1); - while ((type = types.shift()) && (callbacks = this._callbacks[type])) { - syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); - asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); - syncFlush() && nextTick(asyncFlush); - } - return this; - } - function getFlush(callbacks, context, args) { - return flush; - function flush() { - var cancelled; - for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { - cancelled = callbacks[i].apply(context, args) === false; - } - return !cancelled; - } - } - function getNextTick() { - var nextTickFn; - if (window.setImmediate) { - nextTickFn = function nextTickSetImmediate(fn) { - setImmediate(function() { - fn(); - }); - }; - } else { - nextTickFn = function nextTickSetTimeout(fn) { - setTimeout(function() { - fn(); - }, 0); - }; - } - return nextTickFn; - } - function bindContext(fn, context) { - return fn.bind ? fn.bind(context) : function() { - fn.apply(context, [].slice.call(arguments, 0)); - }; - } - }(); - var highlight = function(doc) { - "use strict"; - var defaults = { - node: null, - pattern: null, - tagName: "strong", - className: null, - wordsOnly: false, - caseSensitive: false, - diacriticInsensitive: false - }; - var accented = { - A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", - B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", - C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", - D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", - E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", - F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", - G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", - H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", - I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", - J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", - K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", - L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", - M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", - N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", - O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", - P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", - Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", - R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", - S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", - T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", - U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", - V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", - W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", - X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", - Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", - Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" - }; - return function hightlight(o) { - var regex; - o = _.mixin({}, defaults, o); - if (!o.node || !o.pattern) { - return; - } - o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; - regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); - traverse(o.node, hightlightTextNode); - function hightlightTextNode(textNode) { - var match, patternNode, wrapperNode; - if (match = regex.exec(textNode.data)) { - wrapperNode = doc.createElement(o.tagName); - o.className && (wrapperNode.className = o.className); - patternNode = textNode.splitText(match.index); - patternNode.splitText(match[0].length); - wrapperNode.appendChild(patternNode.cloneNode(true)); - textNode.parentNode.replaceChild(wrapperNode, patternNode); - } - return !!match; - } - function traverse(el, hightlightTextNode) { - var childNode, TEXT_NODE_TYPE = 3; - for (var i = 0; i < el.childNodes.length; i++) { - childNode = el.childNodes[i]; - if (childNode.nodeType === TEXT_NODE_TYPE) { - i += hightlightTextNode(childNode) ? 1 : 0; - } else { - traverse(childNode, hightlightTextNode); - } - } - } - }; - function accent_replacer(chr) { - return accented[chr.toUpperCase()] || chr; - } - function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { - var escapedPatterns = [], regexStr; - for (var i = 0, len = patterns.length; i < len; i++) { - var escapedWord = _.escapeRegExChars(patterns[i]); - if (diacriticInsensitive) { - escapedWord = escapedWord.replace(/\S/g, accent_replacer); - } - escapedPatterns.push(escapedWord); - } - regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; - return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); - } - }(window.document); - var Input = function() { - "use strict"; - var specialKeyCodeMap; - specialKeyCodeMap = { - 9: "tab", - 27: "esc", - 37: "left", - 39: "right", - 13: "enter", - 38: "up", - 40: "down" - }; - function Input(o, www) { - var id; - o = o || {}; - if (!o.input) { - $.error("input is missing"); - } - www.mixin(this); - this.$hint = $(o.hint); - this.$input = $(o.input); - this.$menu = $(o.menu); - id = this.$input.attr("id") || _.guid(); - this.$menu.attr("id", id + "_listbox"); - this.$hint.attr({ - "aria-hidden": true - }); - this.$input.attr({ - "aria-owns": id + "_listbox", - role: "combobox", - "aria-autocomplete": "list", - "aria-expanded": false - }); - this.query = this.$input.val(); - this.queryWhenFocused = this.hasFocus() ? this.query : null; - this.$overflowHelper = buildOverflowHelper(this.$input); - this._checkLanguageDirection(); - if (this.$hint.length === 0) { - this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; - } - this.onSync("cursorchange", this._updateDescendent); - } - Input.normalizeQuery = function(str) { - return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); - }; - _.mixin(Input.prototype, EventEmitter, { - _onBlur: function onBlur() { - this.resetInputValue(); - this.trigger("blurred"); - }, - _onFocus: function onFocus() { - this.queryWhenFocused = this.query; - this.trigger("focused"); - }, - _onKeydown: function onKeydown($e) { - var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; - this._managePreventDefault(keyName, $e); - if (keyName && this._shouldTrigger(keyName, $e)) { - this.trigger(keyName + "Keyed", $e); - } - }, - _onInput: function onInput() { - this._setQuery(this.getInputValue()); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - _managePreventDefault: function managePreventDefault(keyName, $e) { - var preventDefault; - switch (keyName) { - case "up": - case "down": - preventDefault = !withModifier($e); - break; - - default: - preventDefault = false; - } - preventDefault && $e.preventDefault(); - }, - _shouldTrigger: function shouldTrigger(keyName, $e) { - var trigger; - switch (keyName) { - case "tab": - trigger = !withModifier($e); - break; - - default: - trigger = true; - } - return trigger; - }, - _checkLanguageDirection: function checkLanguageDirection() { - var dir = (this.$input.css("direction") || "ltr").toLowerCase(); - if (this.dir !== dir) { - this.dir = dir; - this.$hint.attr("dir", dir); - this.trigger("langDirChanged", dir); - } - }, - _setQuery: function setQuery(val, silent) { - var areEquivalent, hasDifferentWhitespace; - areEquivalent = areQueriesEquivalent(val, this.query); - hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; - this.query = val; - if (!silent && !areEquivalent) { - this.trigger("queryChanged", this.query); - } else if (!silent && hasDifferentWhitespace) { - this.trigger("whitespaceChanged", this.query); - } - }, - _updateDescendent: function updateDescendent(event, id) { - this.$input.attr("aria-activedescendant", id); - }, - bind: function() { - var that = this, onBlur, onFocus, onKeydown, onInput; - onBlur = _.bind(this._onBlur, this); - onFocus = _.bind(this._onFocus, this); - onKeydown = _.bind(this._onKeydown, this); - onInput = _.bind(this._onInput, this); - this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); - if (!_.isMsie() || _.isMsie() > 9) { - this.$input.on("input.tt", onInput); - } else { - this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { - if (specialKeyCodeMap[$e.which || $e.keyCode]) { - return; - } - _.defer(_.bind(that._onInput, that, $e)); - }); - } - return this; - }, - focus: function focus() { - this.$input.focus(); - }, - blur: function blur() { - this.$input.blur(); - }, - getLangDir: function getLangDir() { - return this.dir; - }, - getQuery: function getQuery() { - return this.query || ""; - }, - setQuery: function setQuery(val, silent) { - this.setInputValue(val); - this._setQuery(val, silent); - }, - hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { - return this.query !== this.queryWhenFocused; - }, - getInputValue: function getInputValue() { - return this.$input.val(); - }, - setInputValue: function setInputValue(value) { - this.$input.val(value); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - resetInputValue: function resetInputValue() { - this.setInputValue(this.query); - }, - getHint: function getHint() { - return this.$hint.val(); - }, - setHint: function setHint(value) { - this.$hint.val(value); - }, - clearHint: function clearHint() { - this.setHint(""); - }, - clearHintIfInvalid: function clearHintIfInvalid() { - var val, hint, valIsPrefixOfHint, isValid; - val = this.getInputValue(); - hint = this.getHint(); - valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; - isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); - !isValid && this.clearHint(); - }, - hasFocus: function hasFocus() { - return this.$input.is(":focus"); - }, - hasOverflow: function hasOverflow() { - var constraint = this.$input.width() - 2; - this.$overflowHelper.text(this.getInputValue()); - return this.$overflowHelper.width() >= constraint; - }, - isCursorAtEnd: function() { - var valueLength, selectionStart, range; - valueLength = this.$input.val().length; - selectionStart = this.$input[0].selectionStart; - if (_.isNumber(selectionStart)) { - return selectionStart === valueLength; - } else if (document.selection) { - range = document.selection.createRange(); - range.moveStart("character", -valueLength); - return valueLength === range.text.length; - } - return true; - }, - destroy: function destroy() { - this.$hint.off(".tt"); - this.$input.off(".tt"); - this.$overflowHelper.remove(); - this.$hint = this.$input = this.$overflowHelper = $("
"); - }, - setAriaExpanded: function setAriaExpanded(value) { - this.$input.attr("aria-expanded", value); - } - }); - return Input; - function buildOverflowHelper($input) { - return $('').css({ - position: "absolute", - visibility: "hidden", - whiteSpace: "pre", - fontFamily: $input.css("font-family"), - fontSize: $input.css("font-size"), - fontStyle: $input.css("font-style"), - fontVariant: $input.css("font-variant"), - fontWeight: $input.css("font-weight"), - wordSpacing: $input.css("word-spacing"), - letterSpacing: $input.css("letter-spacing"), - textIndent: $input.css("text-indent"), - textRendering: $input.css("text-rendering"), - textTransform: $input.css("text-transform") - }).insertAfter($input); - } - function areQueriesEquivalent(a, b) { - return Input.normalizeQuery(a) === Input.normalizeQuery(b); - } - function withModifier($e) { - return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; - } - }(); - var Dataset = function() { - "use strict"; - var keys, nameGenerator; - keys = { - dataset: "tt-selectable-dataset", - val: "tt-selectable-display", - obj: "tt-selectable-object" - }; - nameGenerator = _.getIdGenerator(); - function Dataset(o, www) { - o = o || {}; - o.templates = o.templates || {}; - o.templates.notFound = o.templates.notFound || o.templates.empty; - if (!o.source) { - $.error("missing source"); - } - if (!o.node) { - $.error("missing node"); - } - if (o.name && !isValidName(o.name)) { - $.error("invalid dataset name: " + o.name); - } - www.mixin(this); - this.highlight = !!o.highlight; - this.name = _.toStr(o.name || nameGenerator()); - this.limit = o.limit || 5; - this.displayFn = getDisplayFn(o.display || o.displayKey); - this.templates = getTemplates(o.templates, this.displayFn); - this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; - this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; - this._resetLastSuggestion(); - this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); - } - Dataset.extractData = function extractData(el) { - var $el = $(el); - if ($el.data(keys.obj)) { - return { - dataset: $el.data(keys.dataset) || "", - val: $el.data(keys.val) || "", - obj: $el.data(keys.obj) || null - }; - } - return null; - }; - _.mixin(Dataset.prototype, EventEmitter, { - _overwrite: function overwrite(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (this.async && this.templates.pending) { - this._renderPending(query); - } else if (!this.async && this.templates.notFound) { - this._renderNotFound(query); - } else { - this._empty(); - } - this.trigger("rendered", suggestions, false, this.name); - }, - _append: function append(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length && this.$lastSuggestion.length) { - this._appendSuggestions(query, suggestions); - } else if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (!this.$lastSuggestion.length && this.templates.notFound) { - this._renderNotFound(query); - } - this.trigger("rendered", suggestions, true, this.name); - }, - _renderSuggestions: function renderSuggestions(query, suggestions) { - var $fragment; - $fragment = this._getSuggestionsFragment(query, suggestions); - this.$lastSuggestion = $fragment.children().last(); - this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); - }, - _appendSuggestions: function appendSuggestions(query, suggestions) { - var $fragment, $lastSuggestion; - $fragment = this._getSuggestionsFragment(query, suggestions); - $lastSuggestion = $fragment.children().last(); - this.$lastSuggestion.after($fragment); - this.$lastSuggestion = $lastSuggestion; - }, - _renderPending: function renderPending(query) { - var template = this.templates.pending; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _renderNotFound: function renderNotFound(query) { - var template = this.templates.notFound; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _empty: function empty() { - this.$el.empty(); - this._resetLastSuggestion(); - }, - _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { - var that = this, fragment; - fragment = document.createDocumentFragment(); - _.each(suggestions, function getSuggestionNode(suggestion) { - var $el, context; - context = that._injectQuery(query, suggestion); - $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); - fragment.appendChild($el[0]); - }); - this.highlight && highlight({ - className: this.classes.highlight, - node: fragment, - pattern: query - }); - return $(fragment); - }, - _getFooter: function getFooter(query, suggestions) { - return this.templates.footer ? this.templates.footer({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _getHeader: function getHeader(query, suggestions) { - return this.templates.header ? this.templates.header({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _resetLastSuggestion: function resetLastSuggestion() { - this.$lastSuggestion = $(); - }, - _injectQuery: function injectQuery(query, obj) { - return _.isObject(obj) ? _.mixin({ - _query: query - }, obj) : obj; - }, - update: function update(query) { - var that = this, canceled = false, syncCalled = false, rendered = 0; - this.cancel(); - this.cancel = function cancel() { - canceled = true; - that.cancel = $.noop; - that.async && that.trigger("asyncCanceled", query, that.name); - }; - this.source(query, sync, async); - !syncCalled && sync([]); - function sync(suggestions) { - if (syncCalled) { - return; - } - syncCalled = true; - suggestions = (suggestions || []).slice(0, that.limit); - rendered = suggestions.length; - that._overwrite(query, suggestions); - if (rendered < that.limit && that.async) { - that.trigger("asyncRequested", query, that.name); - } - } - function async(suggestions) { - suggestions = suggestions || []; - if (!canceled && rendered < that.limit) { - that.cancel = $.noop; - var idx = Math.abs(rendered - that.limit); - rendered += idx; - that._append(query, suggestions.slice(0, idx)); - that.async && that.trigger("asyncReceived", query, that.name); - } - } - }, - cancel: $.noop, - clear: function clear() { - this._empty(); - this.cancel(); - this.trigger("cleared"); - }, - isEmpty: function isEmpty() { - return this.$el.is(":empty"); - }, - destroy: function destroy() { - this.$el = $("
"); - } - }); - return Dataset; - function getDisplayFn(display) { - display = display || _.stringify; - return _.isFunction(display) ? display : displayFn; - function displayFn(obj) { - return obj[display]; - } - } - function getTemplates(templates, displayFn) { - return { - notFound: templates.notFound && _.templatify(templates.notFound), - pending: templates.pending && _.templatify(templates.pending), - header: templates.header && _.templatify(templates.header), - footer: templates.footer && _.templatify(templates.footer), - suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate - }; - function userSuggestionTemplate(context) { - var template = templates.suggestion; - return $(template(context)).attr("id", _.guid()); - } - function suggestionTemplate(context) { - return $('
').attr("id", _.guid()).text(displayFn(context)); - } - } - function isValidName(str) { - return /^[_a-zA-Z0-9-]+$/.test(str); - } - }(); - var Menu = function() { - "use strict"; - function Menu(o, www) { - var that = this; - o = o || {}; - if (!o.node) { - $.error("node is required"); - } - www.mixin(this); - this.$node = $(o.node); - this.query = null; - this.datasets = _.map(o.datasets, initializeDataset); - function initializeDataset(oDataset) { - var node = that.$node.find(oDataset.node).first(); - oDataset.node = node.length ? node : $("
").appendTo(that.$node); - return new Dataset(oDataset, www); - } - } - _.mixin(Menu.prototype, EventEmitter, { - _onSelectableClick: function onSelectableClick($e) { - this.trigger("selectableClicked", $($e.currentTarget)); - }, - _onRendered: function onRendered(type, dataset, suggestions, async) { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetRendered", dataset, suggestions, async); - }, - _onCleared: function onCleared() { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetCleared"); - }, - _propagate: function propagate() { - this.trigger.apply(this, arguments); - }, - _allDatasetsEmpty: function allDatasetsEmpty() { - return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { - var isEmpty = dataset.isEmpty(); - this.$node.attr("aria-expanded", !isEmpty); - return isEmpty; - }, this)); - }, - _getSelectables: function getSelectables() { - return this.$node.find(this.selectors.selectable); - }, - _removeCursor: function _removeCursor() { - var $selectable = this.getActiveSelectable(); - $selectable && $selectable.removeClass(this.classes.cursor); - }, - _ensureVisible: function ensureVisible($el) { - var elTop, elBottom, nodeScrollTop, nodeHeight; - elTop = $el.position().top; - elBottom = elTop + $el.outerHeight(true); - nodeScrollTop = this.$node.scrollTop(); - nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); - if (elTop < 0) { - this.$node.scrollTop(nodeScrollTop + elTop); - } else if (nodeHeight < elBottom) { - this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); - } - }, - bind: function() { - var that = this, onSelectableClick; - onSelectableClick = _.bind(this._onSelectableClick, this); - this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); - this.$node.on("mouseover", this.selectors.selectable, function() { - that.setCursor($(this)); - }); - this.$node.on("mouseleave", function() { - that._removeCursor(); - }); - _.each(this.datasets, function(dataset) { - dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); - }); - return this; - }, - isOpen: function isOpen() { - return this.$node.hasClass(this.classes.open); - }, - open: function open() { - this.$node.scrollTop(0); - this.$node.addClass(this.classes.open); - }, - close: function close() { - this.$node.attr("aria-expanded", false); - this.$node.removeClass(this.classes.open); - this._removeCursor(); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.attr("dir", dir); - }, - selectableRelativeToCursor: function selectableRelativeToCursor(delta) { - var $selectables, $oldCursor, oldIndex, newIndex; - $oldCursor = this.getActiveSelectable(); - $selectables = this._getSelectables(); - oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; - newIndex = oldIndex + delta; - newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; - newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; - return newIndex === -1 ? null : $selectables.eq(newIndex); - }, - setCursor: function setCursor($selectable) { - this._removeCursor(); - if ($selectable = $selectable && $selectable.first()) { - $selectable.addClass(this.classes.cursor); - this._ensureVisible($selectable); - } - }, - getSelectableData: function getSelectableData($el) { - return $el && $el.length ? Dataset.extractData($el) : null; - }, - getActiveSelectable: function getActiveSelectable() { - var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); - return $selectable.length ? $selectable : null; - }, - getTopSelectable: function getTopSelectable() { - var $selectable = this._getSelectables().first(); - return $selectable.length ? $selectable : null; - }, - update: function update(query) { - var isValidUpdate = query !== this.query; - if (isValidUpdate) { - this.query = query; - _.each(this.datasets, updateDataset); - } - return isValidUpdate; - function updateDataset(dataset) { - dataset.update(query); - } - }, - empty: function empty() { - _.each(this.datasets, clearDataset); - this.query = null; - this.$node.addClass(this.classes.empty); - function clearDataset(dataset) { - dataset.clear(); - } - }, - destroy: function destroy() { - this.$node.off(".tt"); - this.$node = $("
"); - _.each(this.datasets, destroyDataset); - function destroyDataset(dataset) { - dataset.destroy(); - } - } - }); - return Menu; - }(); - var Status = function() { - "use strict"; - function Status(options) { - this.$el = $("", { - role: "status", - "aria-live": "polite" - }).css({ - position: "absolute", - padding: "0", - border: "0", - height: "1px", - width: "1px", - "margin-bottom": "-1px", - "margin-right": "-1px", - overflow: "hidden", - clip: "rect(0 0 0 0)", - "white-space": "nowrap" - }); - options.$input.after(this.$el); - _.each(options.menu.datasets, _.bind(function(dataset) { - if (dataset.onSync) { - dataset.onSync("rendered", _.bind(this.update, this)); - dataset.onSync("cleared", _.bind(this.cleared, this)); - } - }, this)); - } - _.mixin(Status.prototype, { - update: function update(event, suggestions) { - var length = suggestions.length; - var words; - if (length === 1) { - words = { - result: "result", - is: "is" - }; - } else { - words = { - result: "results", - is: "are" - }; - } - this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); - }, - cleared: function() { - this.$el.text(""); - } - }); - return Status; - }(); - var DefaultMenu = function() { - "use strict"; - var s = Menu.prototype; - function DefaultMenu() { - Menu.apply(this, [].slice.call(arguments, 0)); - } - _.mixin(DefaultMenu.prototype, Menu.prototype, { - open: function open() { - !this._allDatasetsEmpty() && this._show(); - return s.open.apply(this, [].slice.call(arguments, 0)); - }, - close: function close() { - this._hide(); - return s.close.apply(this, [].slice.call(arguments, 0)); - }, - _onRendered: function onRendered() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onRendered.apply(this, [].slice.call(arguments, 0)); - }, - _onCleared: function onCleared() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onCleared.apply(this, [].slice.call(arguments, 0)); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); - return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); - }, - _hide: function hide() { - this.$node.hide(); - }, - _show: function show() { - this.$node.css("display", "block"); - } - }); - return DefaultMenu; - }(); - var Typeahead = function() { - "use strict"; - function Typeahead(o, www) { - var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; - o = o || {}; - if (!o.input) { - $.error("missing input"); - } - if (!o.menu) { - $.error("missing menu"); - } - if (!o.eventBus) { - $.error("missing event bus"); - } - www.mixin(this); - this.eventBus = o.eventBus; - this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; - this.input = o.input; - this.menu = o.menu; - this.enabled = true; - this.autoselect = !!o.autoselect; - this.active = false; - this.input.hasFocus() && this.activate(); - this.dir = this.input.getLangDir(); - this._hacks(); - this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); - onFocused = c(this, "activate", "open", "_onFocused"); - onBlurred = c(this, "deactivate", "_onBlurred"); - onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); - onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); - onEscKeyed = c(this, "isActive", "_onEscKeyed"); - onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); - onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); - onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); - onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); - onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); - onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); - this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); - } - _.mixin(Typeahead.prototype, { - _hacks: function hacks() { - var $input, $menu; - $input = this.input.$input || $("
"); - $menu = this.menu.$node || $("
"); - $input.on("blur.tt", function($e) { - var active, isActive, hasActive; - active = document.activeElement; - isActive = $menu.is(active); - hasActive = $menu.has(active).length > 0; - if (_.isMsie() && (isActive || hasActive)) { - $e.preventDefault(); - $e.stopImmediatePropagation(); - _.defer(function() { - $input.focus(); - }); - } - }); - $menu.on("mousedown.tt", function($e) { - $e.preventDefault(); - }); - }, - _onSelectableClicked: function onSelectableClicked(type, $el) { - this.select($el); - }, - _onDatasetCleared: function onDatasetCleared() { - this._updateHint(); - }, - _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { - this._updateHint(); - if (this.autoselect) { - var cursorClass = this.selectors.cursor.substr(1); - this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); - } - this.eventBus.trigger("render", suggestions, async, dataset); - }, - _onAsyncRequested: function onAsyncRequested(type, dataset, query) { - this.eventBus.trigger("asyncrequest", query, dataset); - }, - _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { - this.eventBus.trigger("asynccancel", query, dataset); - }, - _onAsyncReceived: function onAsyncReceived(type, dataset, query) { - this.eventBus.trigger("asyncreceive", query, dataset); - }, - _onFocused: function onFocused() { - this._minLengthMet() && this.menu.update(this.input.getQuery()); - }, - _onBlurred: function onBlurred() { - if (this.input.hasQueryChangedSinceLastFocus()) { - this.eventBus.trigger("change", this.input.getQuery()); - } - }, - _onEnterKeyed: function onEnterKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - if (this.select($selectable)) { - $e.preventDefault(); - $e.stopPropagation(); - } - } else if (this.autoselect) { - if (this.select(this.menu.getTopSelectable())) { - $e.preventDefault(); - $e.stopPropagation(); - } - } - }, - _onTabKeyed: function onTabKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - this.select($selectable) && $e.preventDefault(); - } else if (this.autoselect) { - if ($selectable = this.menu.getTopSelectable()) { - this.autocomplete($selectable) && $e.preventDefault(); - } - } - }, - _onEscKeyed: function onEscKeyed() { - this.close(); - }, - _onUpKeyed: function onUpKeyed() { - this.moveCursor(-1); - }, - _onDownKeyed: function onDownKeyed() { - this.moveCursor(+1); - }, - _onLeftKeyed: function onLeftKeyed() { - if (this.dir === "rtl" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onRightKeyed: function onRightKeyed() { - if (this.dir === "ltr" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onQueryChanged: function onQueryChanged(e, query) { - this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); - }, - _onWhitespaceChanged: function onWhitespaceChanged() { - this._updateHint(); - }, - _onLangDirChanged: function onLangDirChanged(e, dir) { - if (this.dir !== dir) { - this.dir = dir; - this.menu.setLanguageDirection(dir); - } - }, - _openIfActive: function openIfActive() { - this.isActive() && this.open(); - }, - _minLengthMet: function minLengthMet(query) { - query = _.isString(query) ? query : this.input.getQuery() || ""; - return query.length >= this.minLength; - }, - _updateHint: function updateHint() { - var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; - $selectable = this.menu.getTopSelectable(); - data = this.menu.getSelectableData($selectable); - val = this.input.getInputValue(); - if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { - query = Input.normalizeQuery(val); - escapedQuery = _.escapeRegExChars(query); - frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); - match = frontMatchRegEx.exec(data.val); - match && this.input.setHint(val + match[1]); - } else { - this.input.clearHint(); - } - }, - isEnabled: function isEnabled() { - return this.enabled; - }, - enable: function enable() { - this.enabled = true; - }, - disable: function disable() { - this.enabled = false; - }, - isActive: function isActive() { - return this.active; - }, - activate: function activate() { - if (this.isActive()) { - return true; - } else if (!this.isEnabled() || this.eventBus.before("active")) { - return false; - } else { - this.active = true; - this.eventBus.trigger("active"); - return true; - } - }, - deactivate: function deactivate() { - if (!this.isActive()) { - return true; - } else if (this.eventBus.before("idle")) { - return false; - } else { - this.active = false; - this.close(); - this.eventBus.trigger("idle"); - return true; - } - }, - isOpen: function isOpen() { - return this.menu.isOpen(); - }, - open: function open() { - if (!this.isOpen() && !this.eventBus.before("open")) { - this.input.setAriaExpanded(true); - this.menu.open(); - this._updateHint(); - this.eventBus.trigger("open"); - } - return this.isOpen(); - }, - close: function close() { - if (this.isOpen() && !this.eventBus.before("close")) { - this.input.setAriaExpanded(false); - this.menu.close(); - this.input.clearHint(); - this.input.resetInputValue(); - this.eventBus.trigger("close"); - } - return !this.isOpen(); - }, - setVal: function setVal(val) { - this.input.setQuery(_.toStr(val)); - }, - getVal: function getVal() { - return this.input.getQuery(); - }, - select: function select($selectable) { - var data = this.menu.getSelectableData($selectable); - if (data && !this.eventBus.before("select", data.obj, data.dataset)) { - this.input.setQuery(data.val, true); - this.eventBus.trigger("select", data.obj, data.dataset); - this.close(); - return true; - } - return false; - }, - autocomplete: function autocomplete($selectable) { - var query, data, isValid; - query = this.input.getQuery(); - data = this.menu.getSelectableData($selectable); - isValid = data && query !== data.val; - if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { - this.input.setQuery(data.val); - this.eventBus.trigger("autocomplete", data.obj, data.dataset); - return true; - } - return false; - }, - moveCursor: function moveCursor(delta) { - var query, $candidate, data, suggestion, datasetName, cancelMove, id; - query = this.input.getQuery(); - $candidate = this.menu.selectableRelativeToCursor(delta); - data = this.menu.getSelectableData($candidate); - suggestion = data ? data.obj : null; - datasetName = data ? data.dataset : null; - id = $candidate ? $candidate.attr("id") : null; - this.input.trigger("cursorchange", id); - cancelMove = this._minLengthMet() && this.menu.update(query); - if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { - this.menu.setCursor($candidate); - if (data) { - if (typeof data.val === "string") { - this.input.setInputValue(data.val); - } - } else { - this.input.resetInputValue(); - this._updateHint(); - } - this.eventBus.trigger("cursorchange", suggestion, datasetName); - return true; - } - return false; - }, - destroy: function destroy() { - this.input.destroy(); - this.menu.destroy(); - } - }); - return Typeahead; - function c(ctx) { - var methods = [].slice.call(arguments, 1); - return function() { - var args = [].slice.call(arguments); - _.each(methods, function(method) { - return ctx[method].apply(ctx, args); - }); - }; - } - }(); - (function() { - "use strict"; - var old, keys, methods; - old = $.fn.typeahead; - keys = { - www: "tt-www", - attrs: "tt-attrs", - typeahead: "tt-typeahead" - }; - methods = { - initialize: function initialize(o, datasets) { - var www; - datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); - o = o || {}; - www = WWW(o.classNames); - return this.each(attach); - function attach() { - var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; - _.each(datasets, function(d) { - d.highlight = !!o.highlight; - }); - $input = $(this); - $wrapper = $(www.html.wrapper); - $hint = $elOrNull(o.hint); - $menu = $elOrNull(o.menu); - defaultHint = o.hint !== false && !$hint; - defaultMenu = o.menu !== false && !$menu; - defaultHint && ($hint = buildHintFromInput($input, www)); - defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); - $hint && $hint.val(""); - $input = prepInput($input, www); - if (defaultHint || defaultMenu) { - $wrapper.css(www.css.wrapper); - $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); - $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); - } - MenuConstructor = defaultMenu ? DefaultMenu : Menu; - eventBus = new EventBus({ - el: $input - }); - input = new Input({ - hint: $hint, - input: $input, - menu: $menu - }, www); - menu = new MenuConstructor({ - node: $menu, - datasets: datasets - }, www); - status = new Status({ - $input: $input, - menu: menu - }); - typeahead = new Typeahead({ - input: input, - menu: menu, - eventBus: eventBus, - minLength: o.minLength, - autoselect: o.autoselect - }, www); - $input.data(keys.www, www); - $input.data(keys.typeahead, typeahead); - } - }, - isEnabled: function isEnabled() { - var enabled; - ttEach(this.first(), function(t) { - enabled = t.isEnabled(); - }); - return enabled; - }, - enable: function enable() { - ttEach(this, function(t) { - t.enable(); - }); - return this; - }, - disable: function disable() { - ttEach(this, function(t) { - t.disable(); - }); - return this; - }, - isActive: function isActive() { - var active; - ttEach(this.first(), function(t) { - active = t.isActive(); - }); - return active; - }, - activate: function activate() { - ttEach(this, function(t) { - t.activate(); - }); - return this; - }, - deactivate: function deactivate() { - ttEach(this, function(t) { - t.deactivate(); - }); - return this; - }, - isOpen: function isOpen() { - var open; - ttEach(this.first(), function(t) { - open = t.isOpen(); - }); - return open; - }, - open: function open() { - ttEach(this, function(t) { - t.open(); - }); - return this; - }, - close: function close() { - ttEach(this, function(t) { - t.close(); - }); - return this; - }, - select: function select(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.select($el); - }); - return success; - }, - autocomplete: function autocomplete(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.autocomplete($el); - }); - return success; - }, - moveCursor: function moveCursoe(delta) { - var success = false; - ttEach(this.first(), function(t) { - success = t.moveCursor(delta); - }); - return success; - }, - val: function val(newVal) { - var query; - if (!arguments.length) { - ttEach(this.first(), function(t) { - query = t.getVal(); - }); - return query; - } else { - ttEach(this, function(t) { - t.setVal(_.toStr(newVal)); - }); - return this; - } - }, - destroy: function destroy() { - ttEach(this, function(typeahead, $input) { - revert($input); - typeahead.destroy(); - }); - return this; - } - }; - $.fn.typeahead = function(method) { - if (methods[method]) { - return methods[method].apply(this, [].slice.call(arguments, 1)); - } else { - return methods.initialize.apply(this, arguments); - } - }; - $.fn.typeahead.noConflict = function noConflict() { - $.fn.typeahead = old; - return this; - }; - function ttEach($els, fn) { - $els.each(function() { - var $input = $(this), typeahead; - (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); - }); - } - function buildHintFromInput($input, www) { - return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ - readonly: true, - required: false - }).removeAttr("id name placeholder").removeClass("required").attr({ - spellcheck: "false", - tabindex: -1 - }); - } - function prepInput($input, www) { - $input.data(keys.attrs, { - dir: $input.attr("dir"), - autocomplete: $input.attr("autocomplete"), - spellcheck: $input.attr("spellcheck"), - style: $input.attr("style") - }); - $input.addClass(www.classes.input).attr({ - spellcheck: false - }); - try { - !$input.attr("dir") && $input.attr("dir", "auto"); - } catch (e) {} - return $input; - } - function getBackgroundStyles($el) { - return { - backgroundAttachment: $el.css("background-attachment"), - backgroundClip: $el.css("background-clip"), - backgroundColor: $el.css("background-color"), - backgroundImage: $el.css("background-image"), - backgroundOrigin: $el.css("background-origin"), - backgroundPosition: $el.css("background-position"), - backgroundRepeat: $el.css("background-repeat"), - backgroundSize: $el.css("background-size") - }; - } - function revert($input) { - var www, $wrapper; - www = $input.data(keys.www); - $wrapper = $input.parent().filter(www.selectors.wrapper); - _.each($input.data(keys.attrs), function(val, key) { - _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); - }); - $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); - if ($wrapper.length) { - $input.detach().insertAfter($wrapper); - $wrapper.remove(); - } - } - function $elOrNull(obj) { - var isValid, $el; - isValid = _.isJQuery(obj) || _.isElement(obj); - $el = isValid ? $(obj).first() : []; - return $el.length ? $el : null; - } - })(); -}); \ No newline at end of file diff --git a/docs/docsets/Nimble.docset/Contents/Resources/Documents/search.json b/docs/docsets/Nimble.docset/Contents/Resources/Documents/search.json deleted file mode 100644 index 1d2ba21a7..000000000 --- a/docs/docsets/Nimble.docset/Contents/Resources/Documents/search.json +++ /dev/null @@ -1 +0,0 @@ -{"Typealiases.html#/s:6Nimble14AsyncPredicatea":{"name":"AsyncPredicate","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Typealiases.html#/s:6Nimble9Predicatea":{"name":"Predicate","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble15PredicateResulta":{"name":"PredicateResult","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble15PredicateStatusa":{"name":"PredicateStatus","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble12MatcherBlocka":{"name":"MatcherBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Typealiases.html#/s:6Nimble14PredicateBlocka":{"name":"PredicateBlock","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble12NMBPredicatea":{"name":"NMBPredicate","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble18NMBPredicateResulta":{"name":"NMBPredicateResult","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble18NMBPredicateStatusa":{"name":"NMBPredicateStatus","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/FileString":{"name":"FileString"},"Typealiases.html#/s:6Nimble10FileStringa":{"name":"FileString","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/RequireError.html#/s:10Foundation13CustomNSErrorP13errorUserInfoSDySSypGvp":{"name":"errorUserInfo","parent_name":"RequireError"},"Structs/PollingDefaults.html#/s:6Nimble15PollingDefaultsV7timeoutAA0A12TimeIntervalOvpZ":{"name":"timeout","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"PollingDefaults"},"Structs/PollingDefaults.html#/s:6Nimble15PollingDefaultsV12pollIntervalAA0a4TimeE0OvpZ":{"name":"pollInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"PollingDefaults"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV10expressionAA0B10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV11customErrors0E0_pSgvp":{"name":"customError","abstract":"\u003cp\u003eA custom error to throw.","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV10expression11customErrorACyxGAA0B10ExpressionVyxG_s0F0_pSgtcfc":{"name":"init(expression:customError:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV6verifyyxSb_AA14FailureMessageCxSgtKF":{"name":"verify(_:_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV2to_11descriptionxAA7MatcherVyxG_SSSgtYaKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5toNot_11descriptionxAA7MatcherVyxG_SSSgtYaKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5notTo_11descriptionxAA7MatcherVyxG_SSSgtYaKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV2to_11descriptionxAA0B7MatcherVyxG_SSSgtYaKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5toNot_11descriptionxAA0B7MatcherVyxG_SSSgtYaKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5notTo_11descriptionxAA0B7MatcherVyxG_SSSgtYaKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7toNever_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7neverTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8toAlways_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7toNever_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7neverTo_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8toAlways_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV10expressionAA10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV11customErrors0E0_pSgvp":{"name":"customError","abstract":"\u003cp\u003eA custom error to throw.","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV10expression11customErrorACyxGAA10ExpressionVyxG_s0F0_pSgtcfc":{"name":"init(expression:customError:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV6verifyyxSb_AA14FailureMessageCxSgtKF":{"name":"verify(_:_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV2to_11descriptionxAA7MatcherVyxG_SSSgtKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5toNot_11descriptionxAA7MatcherVyxG_SSSgtKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5notTo_11descriptionxAA7MatcherVyxG_SSSgtKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV2to_11descriptionxAA12AsyncMatcherVyxG_SSSgtYaKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5toNot_11descriptionxAA12AsyncMatcherVyxG_SSSgtYaKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5notTo_11descriptionxAA12AsyncMatcherVyxG_SSSgtYaKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eRequire the actual value using a matcher to match by checking continuously","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7toNever_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7neverTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8toAlways_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7toNever_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7neverTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8toAlways_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7toNever_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7neverTo_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8toAlways_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV6statusAA0B6StatusOvp":{"name":"status","abstract":"\u003cp\u003eStatus indicates if the matcher matches, does not match, or fails.\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV7messageAA18ExpectationMessageOvp":{"name":"message","abstract":"\u003cp\u003eThe error message that can be displayed if it does not match\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV6status7messageAcA0B6StatusO_AA18ExpectationMessageOtcfc":{"name":"init(status:message:)","abstract":"\u003cp\u003eConstructs a new MatcherResult with a given status and error message\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV4bool7messageACSb_AA18ExpectationMessageOtcfc":{"name":"init(bool:message:)","abstract":"\u003cp\u003eShorthand to MatcherResult(status: MatcherStatus(bool: bool), message: message)\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV9toBoolean11expectationSbAA16ExpectationStyleO_tF":{"name":"toBoolean(expectation:)","abstract":"\u003cp\u003eConverts the result to a boolean based on what the expectation intended\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV12toObjectiveCAA010NMBMatcherC0CyF":{"name":"toObjectiveC()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/ExpectationNil.html#/s:s23ExpressibleByNilLiteralP03nilD0xyt_tcfc":{"name":"init(nilLiteral:)","parent_name":"ExpectationNil"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherVyACyxGAA0C6ResultVAA0B10ExpressionVyxGYaKccfc":{"name":"init(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV9satisfiesyAA0C6ResultVAA0B10ExpressionVyxGYaKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUses a matcher on a given value to see if it passes the matcher.\u003c/p\u003e","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV6define7matcherACyxGAA0C6ResultVAA0B10ExpressionVyxGYaKc_tFZ":{"name":"define(matcher:)","abstract":"\u003cp\u003eLike Matcher() constructor, but automatically guard against nil (actual) values\u003c/p\u003e","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV6define_7matcherACyxGSS_AA0C6ResultVAA0B10ExpressionVyxG_AA18ExpectationMessageOtYaKctFZ":{"name":"define(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV13defineNilable_7matcherACyxGSS_AA0C6ResultVAA0B10ExpressionVyxG_AA18ExpectationMessageOtYaKctFZ":{"name":"defineNilable(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV6simple_7matcherACyxGSS_AA0C6StatusOAA0B10ExpressionVyxGYaKctFZ":{"name":"simple(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV13simpleNilable_7matcherACyxGSS_AA0C6StatusOAA0B10ExpressionVyxGYaKctFZ":{"name":"simpleNilable(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV13requireNonNilACyxGvp":{"name":"requireNonNil","abstract":"\u003cp\u003eReturns a new Matcher based on the current one that always fails if nil is given as","parent_name":"AsyncMatcher"},"Structs/Matcher.html#/s:6Nimble7MatcherVyACyxGAA0B6ResultVAA10ExpressionVyxGKccfc":{"name":"init(_:)","abstract":"\u003cp\u003eConstructs a matcher that knows how take a given value\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV9satisfiesyAA0B6ResultVAA10ExpressionVyxGKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUses a matcher on a given value to see if it passes the matcher.\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV9satisfiesyAA0B6ResultVAA15AsyncExpressionVyxGYaKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV6define7matcherACyxGAA0B6ResultVAA10ExpressionVyxGKc_tFZ":{"name":"define(matcher:)","abstract":"\u003cp\u003eLike Matcher() constructor, but automatically guard against nil (actual) values\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV6define_7matcherACyxGSS_AA0B6ResultVAA10ExpressionVyxG_AA18ExpectationMessageOtKctFZ":{"name":"define(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV13defineNilable_7matcherACyxGSS_AA0B6ResultVAA10ExpressionVyxG_AA18ExpectationMessageOtKctFZ":{"name":"defineNilable(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV6simple_7matcherACyxGSS_AA0B6StatusOAA10ExpressionVyxGKctFZ":{"name":"simple(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV13simpleNilable_7matcherACyxGSS_AA0B6StatusOAA10ExpressionVyxGKctFZ":{"name":"simpleNilable(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV13requireNonNilACyxGvp":{"name":"requireNonNil","abstract":"\u003cp\u003eReturns a new Matcher based on the current one that always fails if nil is given as","parent_name":"Matcher"},"Structs/Expression.html#/s:6Nimble10ExpressionV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV9isClosureSbvp":{"name":"isClosure","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV10expression8location9isClosureACyxGxSgyKc_AA14SourceLocationCSbtcfc":{"name":"init(expression:location:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV08memoizedB08location14withoutCaching9isClosureACyxGxSgSbKc_AA14SourceLocationCS2btcfc":{"name":"init(memoizedExpression:location:withoutCaching:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV4castyACyqd__Gqd__SgxSgKclF":{"name":"cast(_:)","abstract":"\u003cp\u003eReturns a new Expression from the given expression. Identical to a map()","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV8evaluatexSgyKF":{"name":"evaluate()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV14withoutCachingACyxGyF":{"name":"withoutCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV11withCachingACyxGyF":{"name":"withCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV07toAsyncB0AA0dB0VyxGyF":{"name":"toAsyncExpression()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV10expressionAA0B10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV6statusAA0C6StatusOvp":{"name":"status","abstract":"\u003cp\u003eThe status of the test after matchers have been evaluated.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV10expressionACyxGAA0B10ExpressionVyxG_tcfc":{"name":"init(expression:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV6verifyyACyxGSb_AA14FailureMessageCtF":{"name":"verify(_:_:)","abstract":"\u003cp\u003eTakes the result of a test and passes it to the assertion handler.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2to_11descriptionACyxGAA7MatcherVyxG_SSSgtYaF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5toNot_11descriptionACyxGAA7MatcherVyxG_SSSgtYaF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5notTo_11descriptionACyxGAA7MatcherVyxG_SSSgtYaF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2to_11descriptionACyxGAA0B7MatcherVyxG_SSSgtYaF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5toNot_11descriptionACyxGAA0B7MatcherVyxG_SSSgtYaF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5notTo_11descriptionACyxGAA0B7MatcherVyxG_SSSgtYaF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2eeoiyyACyxG_AA0C3NilVtYaFZ":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2neoiyyACyxG_AA0C3NilVtYaFZ":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV10expressionAA10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV6statusAA0C6StatusOvp":{"name":"status","abstract":"\u003cp\u003eThe status of the test after matchers have been evaluated.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV10expressionACyxGAA10ExpressionVyxG_tcfc":{"name":"init(expression:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV6verifyyACyxGSb_AA14FailureMessageCtF":{"name":"verify(_:_:)","abstract":"\u003cp\u003eTakes the result of a test and passes it to the assertion handler.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2to_11descriptionACyxGAA7MatcherVyxG_SSSgtF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5toNot_11descriptionACyxGAA7MatcherVyxG_SSSgtF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5notTo_11descriptionACyxGAA7MatcherVyxG_SSSgtF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2to_11descriptionACyxGAA12AsyncMatcherVyxG_SSSgtYaF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5toNot_11descriptionACyxGAA12AsyncMatcherVyxG_SSSgtYaF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5notTo_11descriptionACyxGAA12AsyncMatcherVyxG_SSSgtYaF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2eeoiyyACyxG_AA0C3NilVtFZ":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2neoiyyACyxG_AA0C3NilVtFZ":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV9isClosureSbvp":{"name":"isClosure","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV10expression8location9isClosureACyxGxSgyYaKc_AA14SourceLocationCSbtcfc":{"name":"init(expression:location:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV08memoizedC08location14withoutCaching9isClosureACyxGxSgSbYaKc_AA14SourceLocationCS2btcfc":{"name":"init(memoizedExpression:location:withoutCaching:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV013toSynchronousC0AA0C0VyxGyYaF":{"name":"toSynchronousExpression()","abstract":"\u003cp\u003eCreates a new synchronous expression, for use in Matchers.\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV4castyACyqd__Gqd__SgxSgKclF":{"name":"cast(_:)","abstract":"\u003cp\u003eReturns a new Expression from the given expression. Identical to a map()","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV4castyACyqd__Gqd__SgxSgYaKclF":{"name":"cast(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV8evaluatexSgyYaKF":{"name":"evaluate()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV14withoutCachingACyxGyF":{"name":"withoutCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV11withCachingACyxGyF":{"name":"withCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AssertionRecord.html#/s:6Nimble15AssertionRecordV7successSbvp":{"name":"success","abstract":"\u003cp\u003eWhether the assertion succeeded or failed\u003c/p\u003e","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html#/s:6Nimble15AssertionRecordV7messageAA14FailureMessageCvp":{"name":"message","abstract":"\u003cp\u003eThe failure message the assertion would display on failure.\u003c/p\u003e","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html#/s:6Nimble15AssertionRecordV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eThe source location the expectation occurred on.\u003c/p\u003e","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html":{"name":"AssertionRecord","abstract":"\u003cp\u003eA data structure that stores information about an assertion when"},"Structs/AsyncExpression.html":{"name":"AsyncExpression","abstract":"\u003cp\u003eExpression represents the closure of the value inside expect(\u0026hellip;)."},"Structs/SyncExpectation.html":{"name":"SyncExpectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/AsyncExpectation.html":{"name":"AsyncExpectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/Expression.html":{"name":"Expression","abstract":"\u003cp\u003eExpression represents the closure of the value inside expect(\u0026hellip;)."},"Structs/Matcher.html":{"name":"Matcher","abstract":"\u003cp\u003eA Matcher is part of the new matcher API that provides assertions to expectations.\u003c/p\u003e"},"Structs/AsyncMatcher.html":{"name":"AsyncMatcher","abstract":"\u003cp\u003eAn AsyncMatcher is part of the new matcher API that provides assertions to expectations.\u003c/p\u003e"},"Structs/ExpectationNil.html":{"name":"ExpectationNil","abstract":"\u003cp\u003eRepresents \u003ccode\u003enil\u003c/code\u003e value to be used with the operator overloads for \u003ccode\u003ebeNil\u003c/code\u003e.\u003c/p\u003e"},"Structs/MatcherResult.html":{"name":"MatcherResult","abstract":"\u003cp\u003eThe value that a Matcher returns to describe if the given (actual) value matches the"},"Structs/SyncRequirement.html":{"name":"SyncRequirement","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/AsyncRequirement.html":{"name":"AsyncRequirement","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/PollingDefaults.html":{"name":"PollingDefaults","abstract":"\u003cp\u003eIf you are running on a slower machine, it could be useful to increase the default timeout value"},"Structs/RequireError.html":{"name":"RequireError","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/TestOutputStringConvertible.html#/s:6Nimble27TestOutputStringConvertibleP15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"TestOutputStringConvertible"},"Protocols/NMBComparable.html#/c:@M@Nimble@objc(pl)NMBComparable(im)NMB_compare:":{"name":"NMB_compare(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBComparable"},"Protocols/NMBDoubleConvertible.html#/s:6Nimble20NMBDoubleConvertibleP11doubleValueSdvp":{"name":"doubleValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBDoubleConvertible"},"Protocols/NMBOrderedCollection.html#/s:6Nimble20NMBOrderedCollectionP6object2atypSi_tF":{"name":"object(at:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBOrderedCollection"},"Protocols/NMBCollection.html#/s:6Nimble13NMBCollectionP5countSivp":{"name":"count","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBCollection"},"Protocols/NMBContainer.html#/s:6Nimble12NMBContainerP8containsySbypF":{"name":"contains(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBContainer"},"Protocols/AsyncableMatcher.html#/s:6Nimble16AsyncableMatcherP5ValueQa":{"name":"Value","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncableMatcher"},"Protocols/AsyncableMatcher.html#/s:6Nimble16AsyncableMatcherP9satisfiesyAA0C6ResultVAA15AsyncExpressionVy5ValueQzGYaKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncableMatcher"},"Protocols/Expectation.html#/s:6Nimble11ExpectationP8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expectation"},"Protocols/Expectation.html#/s:6Nimble11ExpectationP6statusAA0B6StatusOvp":{"name":"status","abstract":"\u003cp\u003eThe status of the test after matchers have been evaluated.\u003c/p\u003e","parent_name":"Expectation"},"Protocols/Expectation.html#/s:6Nimble11ExpectationP6verifyyxSb_AA14FailureMessageCtF":{"name":"verify(_:_:)","abstract":"\u003cp\u003eTakes the result of a test and passes it to the assertion handler.\u003c/p\u003e","parent_name":"Expectation"},"Protocols/Expectation.html#/s:6Nimble11ExpectationPAAE9onFailure5throwys5Error_p_tKF":{"name":"onFailure(throw:)","abstract":"\u003cp\u003eThrows the supplied error if the expectation has previously failed.\u003c/p\u003e","parent_name":"Expectation"},"Protocols/AssertionHandler.html#/s:6Nimble16AssertionHandlerP6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionHandler"},"Protocols/AssertionHandler.html":{"name":"AssertionHandler","abstract":"\u003cp\u003eProtocol for the assertion handler that Nimble uses for all expectations.\u003c/p\u003e"},"Protocols/Expectation.html":{"name":"Expectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/AsyncableMatcher.html":{"name":"AsyncableMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/NMBContainer.html":{"name":"NMBContainer","abstract":"\u003cp\u003eProtocol for types that support contain() matcher.\u003c/p\u003e"},"Protocols/NMBCollection.html":{"name":"NMBCollection","abstract":"\u003cp\u003eProtocol for types that support only beEmpty(), haveCount() matchers\u003c/p\u003e"},"Protocols/NMBOrderedCollection.html":{"name":"NMBOrderedCollection","abstract":"\u003cp\u003eProtocol for types that support beginWith(), endWith(), beEmpty() matchers\u003c/p\u003e"},"Protocols/NMBDoubleConvertible.html":{"name":"NMBDoubleConvertible","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/NMBComparable.html":{"name":"NMBComparable","abstract":"\u003cp\u003eProtocol for types to support beLessThan(), beLessThanOrEqualTo(),"},"Protocols/TestOutputStringConvertible.html":{"name":"TestOutputStringConvertible","abstract":"\u003cp\u003eA type with a customized test output text representation.\u003c/p\u003e"},"Functions.html#/s:6Nimble20withAssertionHandler_4file4line7closureyAA0cD0_p_SSSuyyYaKXEtYaF":{"name":"withAssertionHandler(_:file:line:closure:)","abstract":"\u003cp\u003eAllows you to temporarily replace the current Nimble assertion handler with"},"Functions.html#/s:6Nimble18gatherExpectations8silently7closureSayAA15AssertionRecordVGSb_yyYaXEtYaF":{"name":"gatherExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble25gatherFailingExpectations8silently7closureSayAA15AssertionRecordVGSb_yyYaXEtYaF":{"name":"gatherFailingExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures failed expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble20withAssertionHandler_4file4line7closureyAA0cD0_p_SSSuyyKXEtF":{"name":"withAssertionHandler(_:file:line:closure:)","abstract":"\u003cp\u003eAllows you to temporarily replace the current Nimble assertion handler with"},"Functions.html#/s:6Nimble18gatherExpectations8silently7closureSayAA15AssertionRecordVGSb_yyXEtF":{"name":"gatherExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble25gatherFailingExpectations8silently7closureSayAA15AssertionRecordVGSb_yyXEtF":{"name":"gatherFailingExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures failed expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble13recordFailure_8locationySS_AA14SourceLocationCtF":{"name":"recordFailure(_:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKctlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyxGSS_SuxyYaKcyXEtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKcyXEtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyytGSS_SuyyYaKcyXEtF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKXAtYalF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated."},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyxGSS_SuxyYaKcyXKtYalF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKcyXKtYalF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyytGSS_SuyyYaKcyXKtYaF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble9waitUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycYactYaF":{"name":"waitUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eWait asynchronously until the done closure is called or the timeout has been reached.\u003c/p\u003e"},"Functions.html#/s:6Nimble9waitUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycctYaF":{"name":"waitUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eWait asynchronously until the done closure is called or the timeout has been reached.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKXAtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxyKcyXKtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKcyXKtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyytGSS_Sus0F0_pSgyyKcyXKtF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKXAtlF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxyKcyXKtlF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKcyXKtlF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyytGSS_Sus0F0_pSgyyKcyXKtF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKctlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxyYaKcyXEtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKcyXEtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requirea4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKXAtYalF":{"name":"requirea(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requirea4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxyYaKcyXKtYalF":{"name":"requirea(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requirea4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKcyXKtYalF":{"name":"requirea(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyKXAtKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyKcyXKtKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwraps4file4line11customError_xSS_Sus0F0_pSgxSgyKXAtKlF":{"name":"unwraps(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwraps4file4line11customError_xSS_Sus0F0_pSgxSgyKcyXKtKlF":{"name":"unwraps(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyYaKctYaKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyYaKcyXEtYaKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwrapa4file4line11customError_xSS_Sus0F0_pSgxSgyYaKXAtYaKlF":{"name":"unwrapa(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwrapa4file4line11customError_xSS_Sus0F0_pSgxSgyYaKcyXKtYaKlF":{"name":"unwrapa(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble9waitUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycctF":{"name":"waitUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eWait asynchronously until the done closure is called or the timeout has been reached.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyxGSS_SuxSgyKXAtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyxGSS_SuxyKcyXKtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyxGSS_SuxSgyKcyXKtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyytGSS_SuyyKcyXKtF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyxGSS_SuxSgyKXAtlF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated."},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyxGSS_SuxyKcyXKtlF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyxGSS_SuxSgyKcyXKtlF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyytGSS_SuyyKcyXKtF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble4fail_8locationySS_AA14SourceLocationCtF":{"name":"fail(_:location:)","abstract":"\u003cp\u003eAlways fails the test with a message and a specified location.\u003c/p\u003e"},"Functions.html#/s:6Nimble4fail_4file4lineySS_SSSutF":{"name":"fail(_:file:line:)","abstract":"\u003cp\u003eAlways fails the test with a message.\u003c/p\u003e"},"Functions.html#/s:6Nimble4fail_4lineySS_SutF":{"name":"fail(_:line:)","abstract":"\u003cp\u003eAlways fails the test.\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA7MatcherVyxGSb7ElementQzKcSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA7MatcherVyxGSS_Sb7ElementQzKctSTRzlF":{"name":"allPass(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA7MatcherVyxGADy7ElementQzGSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA12AsyncMatcherVyxGSb7ElementQzYaKcSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA12AsyncMatcherVyxGSS_Sb7ElementQzYaKctSTRzlF":{"name":"allPass(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA12AsyncMatcherVyxGADy7ElementQzGSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble9beAKindOfyAA7MatcherVyypGxmlF":{"name":"beAKindOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an instance of the given class.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beAKindOfyAA7MatcherVySo8NSObjectCGyXlXpF":{"name":"beAKindOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an instance of the given class."},"Functions.html#/s:6Nimble14beAnInstanceOfyAA7MatcherVyypGxmlF":{"name":"beAnInstanceOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an \u003cem\u003eexact\u003c/em\u003e instance of the given class.\u003c/p\u003e"},"Functions.html#/s:6Nimble14beAnInstanceOfyAA7MatcherVySo8NSObjectCGyXlXpF":{"name":"beAnInstanceOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an instance of the given class."},"Functions.html#/s:6Nimble12defaultDeltaxySFRzlF":{"name":"defaultDelta()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble9beCloseTo_6withinAA7MatcherVyxGx_xtSFRzlF":{"name":"beCloseTo(_:within:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is close to another. This is used for floating"},"Functions.html#/s:6Nimble9beCloseTo_6withinAA7MatcherVyxGx_SdtAA20NMBDoubleConvertibleRzlF":{"name":"beCloseTo(_:within:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is close to another. This is used for floating"},"Functions.html#/s:6Nimble9beCloseTo_6withinAA7MatcherVyq_Gq__xtSFRz7ElementQy_RszSlR_r0_lF":{"name":"beCloseTo(_:within:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_xtSlRzSF7ElementRpzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_xtYaSlRzSF7ElementRpzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_xtSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_xtYaSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_x8expected_x5deltattSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_x8expected_x5deltattYaSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_x8expected_x5deltattSFRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_x8expected_x5deltattYaSFRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_xtAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_xtYaAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_x8expected_Sd5deltattAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_x8expected_Sd5deltattYaAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_x8expected_Sd5deltattAA20NMBDoubleConvertibleRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_x8expected_Sd5deltattYaAA20NMBDoubleConvertibleRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003obaoiyx8expected_x5deltatx_xtSFRzlF":{"name":"±(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003obaoiyx8expected_Sd5deltatx_SdtAA20NMBDoubleConvertibleRzlF":{"name":"±(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyxGySTRzlF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyxGys10SetAlgebraRzlF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyxGySTRzs10SetAlgebraRzlF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySSGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySo8NSStringCGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySo12NSDictionaryCGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySo7NSArrayCGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyAA13NMBCollection_pGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble13beGreaterThanyAA7MatcherVyxGxSgSLRzlF":{"name":"beGreaterThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble13beGreaterThanyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beGreaterThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA15SyncExpectationVyxG_xSgtAA13NMBComparableRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA16AsyncExpectationVyxG_xSgtYaAA13NMBComparableRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble22beGreaterThanOrEqualToyAA7MatcherVyxGxSgSLRzlF":{"name":"beGreaterThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than"},"Functions.html#/s:6Nimble2geoiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2geoiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble22beGreaterThanOrEqualToyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beGreaterThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than"},"Functions.html#/s:6Nimble2geoiyyAA15SyncExpectationVyxG_xtAA13NMBComparableRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2geoiyyAA16AsyncExpectationVyxG_xtYaAA13NMBComparableRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble13beIdenticalToyAA7MatcherVyyXlGyXlSgF":{"name":"beIdenticalTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is the same instance"},"Functions.html#/s:6Nimble3eeeoiyyAA15SyncExpectationVyyXlG_yXlSgtF":{"name":"===(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble3eeeoiyyAA16AsyncExpectationVyyXlG_yXlSgtYaF":{"name":"===(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble3neeoiyyAA15SyncExpectationVyyXlG_yXlSgtF":{"name":"!==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble3neeoiyyAA16AsyncExpectationVyyXlG_yXlSgtYaF":{"name":"!==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2beyAA7MatcherVyyXlGyXlSgF":{"name":"be(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is the same instance"},"Functions.html#/s:6Nimble10beLessThanyAA7MatcherVyxGxSgSLRzlF":{"name":"beLessThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble10beLessThanyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beLessThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA15SyncExpectationVyxG_xSgtAA13NMBComparableRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA16AsyncExpectationVyxG_xSgtYaAA13NMBComparableRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble19beLessThanOrEqualToyAA7MatcherVyxGxSgSLRzlF":{"name":"beLessThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than"},"Functions.html#/s:6Nimble2leoiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2leoiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble19beLessThanOrEqualToyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beLessThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than"},"Functions.html#/s:6Nimble2leoiyyAA15SyncExpectationVyxG_xtAA13NMBComparableRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2leoiyyAA16AsyncExpectationVyxG_xtYaAA13NMBComparableRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble6beTrueAA7MatcherVySbGyF":{"name":"beTrue()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is exactly true."},"Functions.html#/s:6Nimble7beFalseAA7MatcherVySbGyF":{"name":"beFalse()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is exactly false."},"Functions.html#/s:6Nimble8beTruthyAA7MatcherVyxGySQRzs27ExpressibleByBooleanLiteralRzlF":{"name":"beTruthy()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is not logically false.\u003c/p\u003e"},"Functions.html#/s:6Nimble7beFalsyAA7MatcherVyxGySQRzs27ExpressibleByBooleanLiteralRzlF":{"name":"beFalsy()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is logically false."},"Functions.html#/s:6Nimble5beNilAA7MatcherVyxGylF":{"name":"beNil()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is nil.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beSuccess4testAA7MatcherVys6ResultOyxq_GGyxcSg_ts5ErrorR_r0_lF":{"name":"beSuccess(test:)","abstract":"\u003cp\u003eA Nimble matcher for Result that succeeds when the actual value is success.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beFailure4testAA7MatcherVys6ResultOyxq_GGyq_cSg_ts5ErrorR_r0_lF":{"name":"beFailure(test:)","abstract":"\u003cp\u003eA Nimble matcher for Result that succeeds when the actual value is failure.\u003c/p\u003e"},"Functions.html#/s:6Nimble6beVoidAA7MatcherVyytGyF":{"name":"beVoid()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is Void.\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyytG_yttF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyytG_yttYaF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyytG_yttF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyytG_yttYaF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble8beWithinyAA7MatcherVyxGSnyxGSLRzlF":{"name":"beWithin(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is within given range.\u003c/p\u003e"},"Functions.html#/s:6Nimble8beWithinyAA7MatcherVyxGSNyxGSLRzlF":{"name":"beWithin(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is within given range.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beginWithyAA7MatcherVyxG7ElementQzSTRzSQAGRQlF":{"name":"beginWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence\u0026rsquo;s first element"},"Functions.html#/s:6Nimble9beginWithyAA7MatcherVyAA20NMBOrderedCollection_pGypF":{"name":"beginWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection\u0026rsquo;s first element"},"Functions.html#/s:6Nimble9beginWithyAA7MatcherVySSGSSF":{"name":"beginWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains expected substring"},"Functions.html#/s:6Nimble9beginWith6prefixAA7MatcherVyxGq_Sg_tSTRzSTR_SQ7ElementRpzAHQy_AIRSr0_lF":{"name":"beginWith(prefix:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the exepected sequence is a prefix of the actual sequence.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beginWith6prefix2byAA7MatcherVyxGq_Sg_Sb7ElementQz_AIQy_tctSTRzSTR_r0_lF":{"name":"beginWith(prefix:by:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the expected sequence is the prefix of the actual sequence, using the given matcher as the equivalence test.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxG7ElementQzd_tSTRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxGSay7ElementQzGSTRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxG7ElementQzd_ts10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxGSay7ElementQzGs10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxG7ElementSTQzd_tSTRzs10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxGSay7ElementSTQzGSTRzs10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySSGSSd_tF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains the expected substring.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySSGSaySSGF":{"name":"contain(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySo8NSStringCGAFd_tF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains the expected substring.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySo8NSStringCGSayAFGF":{"name":"contain(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyAA12NMBContainer_pGypSgd_tF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection contains the expected object.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyAA12NMBContainer_pGSayypSgGF":{"name":"contain(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble24containElementSatisfyingyAA7MatcherVyxGSb0C0Qzc_SStSTRzlF":{"name":"containElementSatisfying(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble24containElementSatisfyingyAA12AsyncMatcherVyxGSb0C0QzYac_SStSTRzlF":{"name":"containElementSatisfying(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble13elementsEqualyAA7MatcherVyxGq_SgSTRzSTR_SQ7ElementRpzAGQy_AHRSr0_lF":{"name":"elementsEqual(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence and the exepected sequence contain the same elements in"},"Functions.html#/s:6Nimble13elementsEqual_2byAA7MatcherVyxGq_Sg_Sb7ElementQz_AHQy_tctSTRzSTR_r0_lF":{"name":"elementsEqual(_:by:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence and the exepected sequence contain equivalent elements in"},"Functions.html#/s:6Nimble7endWithyAA7MatcherVyxG7ElementQzSTRzSQAGRQlF":{"name":"endWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence\u0026rsquo;s last element"},"Functions.html#/s:6Nimble7endWithyAA7MatcherVyAA20NMBOrderedCollection_pGypF":{"name":"endWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection\u0026rsquo;s last element"},"Functions.html#/s:6Nimble7endWithyAA7MatcherVySSGSSF":{"name":"endWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains the expected substring"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_tGx_q_tSgSQRzSQR_r0_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_tG_x_q_tSgtSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_tG_x_q_tSgtYaSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_tG_x_q_tSgtSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_tG_x_q_tSgtYaSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_tGx_q_q0_tSgSQRzSQR_SQR0_r1_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_tG_x_q_q0_tSgtSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_tG_x_q_q0_tSgtYaSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_tG_x_q_q0_tSgtSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_tG_x_q_q0_tSgtYaSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_q1_tGx_q_q0_q1_tSgSQRzSQR_SQR0_SQR1_r2_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_q1_q2_tGx_q_q0_q1_q2_tSgSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_q1_q2_q3_tGx_q_q0_q1_q2_q3_tSgSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_tGGAESgSQRzSQR_r0_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_tGG_AESgtSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_tGG_AESgtYaSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_tGG_AESgtSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_tGG_AESgtYaSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_tGGAESgSQRzSQR_SQR0_r1_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_tGG_AESgtSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_tGG_AESgtYaSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_tGG_AESgtSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_tGG_AESgtYaSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_q1_tGGAESgSQRzSQR_SQR0_SQR1_r2_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_q1_tGG_AESgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_q1_tGG_AESgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_q1_tGG_AESgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_q1_tGG_AESgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_q1_q2_tGGAESgSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_q1_q2_q3_tGGAESgSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyxGxSQRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is equal to the expected value."},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayxSgGGAFSQRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher allowing comparison of collection with optional type\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyxGxSgSQRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is equal to the expected value."},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESgSHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESLRzSHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESgSLRzSHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySDyxq_GGSDyxq_SgGSHRzSQR_r0_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual dictionary is equal to the expected dictionary\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_xtSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_xSgtSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyxG_xtSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyxG_xSgtSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayxGG_AESgtSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayxGG_AESgtSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AEtSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AESgtSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AEtSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AESgtSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AEtSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AESgtSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AEtSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AESgtSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySDyxq_GG_AESgtSHRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySDyxq_GG_AESgtSHRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_xtYaSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_xSgtYaSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyxG_xtYaSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyxG_xSgtYaSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayxGG_AESgtYaSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayxGG_AESgtYaSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AEtYaSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AEtYaSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AEtYaSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AEtYaSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySDyxq_GG_AESgtYaSHRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySDyxq_GG_AESgtYaSHRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble9haveCountyAA7MatcherVyxGSiSlRzlF":{"name":"haveCount(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual Collection\u0026rsquo;s count equals"},"Functions.html#/s:6Nimble9haveCountyAA7MatcherVyAA13NMBCollection_pGSiF":{"name":"haveCount(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection\u0026rsquo;s count equals"},"Functions.html#/s:6Nimble3mapyAA7MatcherVyxGq_xKc_ADyq_Gtr0_lF":{"name":"map(_:_:)","abstract":"\u003cp\u003e\u003ccode\u003emap\u003c/code\u003e works by transforming the expression to a value that the given matcher uses.\u003c/p\u003e"},"Functions.html#/s:6Nimble3mapyAA12AsyncMatcherVyxGq_xYaKc_q0_t5ValueQy0_Rs_AA09AsyncableD0R0_r1_lF":{"name":"map(_:_:)","abstract":"\u003cp\u003e\u003ccode\u003emap\u003c/code\u003e works by transforming the expression to a value that the given matcher uses.\u003c/p\u003e"},"Functions.html#/s:6Nimble5matchyAA7MatcherVySSGSSSgF":{"name":"match(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string satisfies the regular expression"},"Functions.html#/s:6Nimble10matchErroryAA7MatcherVys0C0_pGxsAERzlF":{"name":"matchError(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression evaluates to an"},"Functions.html#/s:6Nimble10matchErroryAA7MatcherVys0C0_pGxSQRzsAERzlF":{"name":"matchError(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression evaluates to an"},"Functions.html#/s:6Nimble10matchErroryAA7MatcherVys0C0_pGxmsAERzlF":{"name":"matchError(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression evaluates to an"},"Functions.html#/s:6Nimble17postNotifications_4fromAA7MatcherVyxGAEySay10Foundation12NotificationVGG_So20NSNotificationCenterCtlF":{"name":"postNotifications(_:from:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble28postDistributedNotifications_4from5namesAA7MatcherVyxGAFySay10Foundation12NotificationVGG_So013NSDistributedI6CenterCShySo18NSNotificationNameaGtlF":{"name":"postDistributedNotifications(_:from:names:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble14raiseException5named6reason8userInfo7closureAA7MatcherVyxGSo15NSExceptionNameaSg_SSSgSo12NSDictionaryCSgySo0J0CcSgtlF":{"name":"raiseException(named:reason:userInfo:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression raises an"},"Functions.html#/s:6Nimble14raiseException5named6reason8userInfo7closureAA7MatcherVyxGSSSg_AJSo12NSDictionaryCSgySo11NSExceptionCcSgtlF":{"name":"raiseException(named:reason:userInfo:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression raises an"},"Functions.html#/s:6Nimble12satisfyAllOfyAA7MatcherVyxGAEd_tlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble12satisfyAllOfyAA7MatcherVyxGSayAEGlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble2aaoiyAA7MatcherVyxGAE_AEtlF":{"name":"\u0026\u0026(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble12satisfyAllOfyAA12AsyncMatcherVyxGAA09AsyncableF0_px5ValueRts_XPd_tlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble12satisfyAllOfyAA12AsyncMatcherVyxGSayAA09AsyncableF0_px5ValueRts_XPGlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble2aaoiyAA12AsyncMatcherVyxGq__q0_t5ValueQy_RszAA09AsyncableD0R_AaHR0_AFQy0_AGRSr1_lF":{"name":"\u0026\u0026(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA7MatcherVyxGAEd_tlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA7MatcherVyxGSayAEGlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble2oooiyAA7MatcherVyxGAE_AEtlF":{"name":"||(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA12AsyncMatcherVyxGAA09AsyncableF0_px5ValueRts_XPd_tlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA12AsyncMatcherVyxGSayAA09AsyncableF0_px5ValueRts_XPGlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble2oooiyAA12AsyncMatcherVyxGq__q0_t5ValueQy_RszAA09AsyncableD0R_AaHR0_AFQy0_AGRSr1_lF":{"name":"||(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/catchBadInstruction(block:)":{"name":"catchBadInstruction(block:)","abstract":"\u003cp\u003eRun the provided block. If a POSIX SIGILL is received, handle it and return a BadInstructionException (which is just an empty object in this POSIX signal version). Otherwise return nil."},"Functions.html#/s:6Nimble14throwAssertionAA7MatcherVyxGylF":{"name":"throwAssertion()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble10throwErrorAA7MatcherVyxGylF":{"name":"throwError()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError_7closureAA7MatcherVyq_Gx_ys0C0_pcSgtsAGRzr0_lF":{"name":"throwError(_:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError_7closureAA7MatcherVyq_Gx_yxcSgtSQRzs0C0Rzr0_lF":{"name":"throwError(_:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError9errorType7closureAA7MatcherVyq_Gxm_yxcSgts0C0Rzr0_lF":{"name":"throwError(errorType:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError7closureAA7MatcherVyxGys0C0_pc_tlF":{"name":"throwError(closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws any"},"Functions.html#/s:6Nimble10throwError7closureAA7MatcherVyq_Gyxc_ts0C0Rzr0_lF":{"name":"throwError(closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws any"},"Functions.html#/s:6Nimble7succeedAA7MatcherVyAA15ToSucceedResultOGyF":{"name":"succeed()","abstract":"\u003cp\u003eA Nimble matcher that takes in a closure for validation.\u003c/p\u003e"},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyKXAtKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyKcyXKtKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwraps4file4line_xSS_SuxSgyKXAtKlF":{"name":"pollUnwraps(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwraps4file4line_xSS_SuxSgyKcyXKtKlF":{"name":"pollUnwraps(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyYaKctYaKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyYaKcyXEtYaKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwrapa4file4line_xSS_SuxSgyYaKXAtYaKlF":{"name":"pollUnwrapa(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwrapa4file4line_xSS_SuxSgyYaKcyXKtYaKlF":{"name":"pollUnwrapa(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble9stringifyySSxSglF":{"name":"stringify(_:)","abstract":"\u003cp\u003eReturns a string appropriate for displaying in test output"},"Functions.html#/s:6Nimble20prettyCollectionTypeySSxlF":{"name":"prettyCollectionType(_:)","abstract":"\u003cp\u003eAttempts to generate a pretty type string for a given value. If the value is of a Objective-C"},"Functions.html#/s:6Nimble20prettyCollectionTypeySSxSlRzlF":{"name":"prettyCollectionType(_:)","abstract":"\u003cp\u003eReturns the type name for a given collection type. This overload is used by Swift"},"Extensions/Data.html#/s:10Foundation4DataV6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Data"},"Extensions/String.html#/s:SS6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"String"},"Extensions/AnySequence.html#/s:s11AnySequenceV6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AnySequence"},"Extensions/Array.html#/s:Sa6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Array"},"Extensions/TimeInterval.html#/s:Sd6NimbleE14nimbleIntervalAA0a4TimeC0Ovp":{"name":"nimbleInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"TimeInterval"},"Extensions/NSString.html#/c:@CM@Nimble@@objc(cs)NSString(im)NMB_compare:":{"name":"NMB_compare(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSString"},"Extensions/NSDate.html#/s:So6NSDateC6NimbleE11doubleValueSdvp":{"name":"doubleValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSDate"},"Extensions/NSDate.html#/s:So6NSDateC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSDate"},"Extensions/Date.html#/s:10Foundation4DateV6NimbleE11doubleValueSdvp":{"name":"doubleValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Date"},"Extensions/Date.html#/s:10Foundation4DateV6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Date"},"Extensions/Date.html#/s:10Foundation4DateV6NimbleE8advanced2byAcD0C12TimeIntervalO_tF":{"name":"advanced(by:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Date"},"Extensions/NSNumber.html#/c:@CM@Nimble@@objc(cs)NSNumber(im)NMB_compare:":{"name":"NMB_compare(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSNumber"},"Extensions/NSNumber.html#/s:So8NSNumberC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSNumber"},"Extensions/NSIndexSet.html#/s:So10NSIndexSetC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSIndexSet"},"Extensions/NSArray.html#/s:So7NSArrayC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSArray"},"Extensions/UInt.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt"},"Extensions/Int.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int"},"Extensions/Double.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Double"},"Extensions/Double.html#/s:Sd6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Double"},"Extensions/Float.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Float"},"Extensions/Float.html#/s:Sf6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Float"},"Extensions/UInt64.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt64"},"Extensions/Int64.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int64"},"Extensions/UInt32.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt32"},"Extensions/Int32.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int32"},"Extensions/UInt16.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt16"},"Extensions/Int16.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int16"},"Extensions/UInt8.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt8"},"Extensions/Int8.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int8"},"Extensions/Int8.html":{"name":"Int8"},"Extensions/UInt8.html":{"name":"UInt8"},"Extensions/Int16.html":{"name":"Int16"},"Extensions/UInt16.html":{"name":"UInt16"},"Extensions/Int32.html":{"name":"Int32"},"Extensions/UInt32.html":{"name":"UInt32"},"Extensions/Int64.html":{"name":"Int64"},"Extensions/UInt64.html":{"name":"UInt64"},"Extensions/Float.html":{"name":"Float"},"Extensions/Double.html":{"name":"Double"},"Extensions/Int.html":{"name":"Int"},"Extensions/UInt.html":{"name":"UInt"},"Extensions/NSArray.html":{"name":"NSArray"},"Extensions.html#/c:objc(cs)NSSet":{"name":"NSSet"},"Extensions.html#/c:objc(cs)NSHashTable":{"name":"NSHashTable"},"Extensions.html#/c:objc(cs)NSMapTable":{"name":"NSMapTable"},"Extensions/NSIndexSet.html":{"name":"NSIndexSet"},"Extensions.html#/c:objc(cs)NSDictionary":{"name":"NSDictionary"},"Extensions/NSNumber.html":{"name":"NSNumber"},"Extensions/Date.html":{"name":"Date"},"Extensions/NSDate.html":{"name":"NSDate"},"Extensions/NSString.html":{"name":"NSString"},"Extensions/TimeInterval.html":{"name":"TimeInterval"},"Extensions/Array.html":{"name":"Array"},"Extensions/AnySequence.html":{"name":"AnySequence"},"Extensions/String.html":{"name":"String"},"Extensions/Data.html":{"name":"Data"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO7secondsyACSicACmF":{"name":"seconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO12millisecondsyACSicACmF":{"name":"milliseconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO12microsecondsyACSicACmF":{"name":"microseconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO11nanosecondsyACSicACmF":{"name":"nanoseconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:SL1loiySbx_xtFZ":{"name":"\u003c(_:_:)","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO08dispatchbC08Dispatch0ebC0Ovp":{"name":"dispatchTimeInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO11nanosecondss6UInt64Vvp":{"name":"nanoseconds","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO04timeC0Sdvp":{"name":"timeInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/ToSucceedResult.html#/s:6Nimble15ToSucceedResultO9succeededyA2CmF":{"name":"succeeded","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ToSucceedResult"},"Enums/ToSucceedResult.html#/s:6Nimble15ToSucceedResultO6failedyACSS_tcACmF":{"name":"failed(reason:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ToSucceedResult"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO7matchesyA2CmF":{"name":"matches","abstract":"\u003cp\u003eMatches indicates if the matcher / matcher passes with the given value\u003c/p\u003e","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO12doesNotMatchyA2CmF":{"name":"doesNotMatch","abstract":"\u003cp\u003eDoesNotMatch indicates if the matcher fails with the given value, but \u003cem\u003ewould\u003c/em\u003e","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO4failyA2CmF":{"name":"fail","abstract":"\u003cp\u003eFail indicates the matcher will never satisfy with the given value in any case.","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO4boolACSb_tcfc":{"name":"init(bool:)","abstract":"\u003cp\u003eConverts a boolean to either .matches (if true) or .doesNotMatch (if false).\u003c/p\u003e","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO12toObjectiveCAA010NMBMatcherC0CyF":{"name":"toObjectiveC()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MatcherStatus"},"Enums/ExpectationStyle.html#/s:6Nimble16ExpectationStyleO7toMatchyA2CmF":{"name":"toMatch","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ExpectationStyle"},"Enums/ExpectationStyle.html#/s:6Nimble16ExpectationStyleO10toNotMatchyA2CmF":{"name":"toNotMatch","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ExpectationStyle"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO21expectedActualValueToyACSScACmF":{"name":"expectedActualValueTo(_:)","abstract":"\u003cp\u003eincludes actual value in output (\u0026ldquo;expected to \u003cmessage\u003e, got \u003cactual\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO21expectedCustomValueToyACSS_SStcACmF":{"name":"expectedCustomValueTo(_:actual:)","abstract":"\u003cp\u003euses a custom actual value string in output (\u0026ldquo;expected to \u003cmessage\u003e, got \u003cactual\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO10expectedToyACSScACmF":{"name":"expectedTo(_:)","abstract":"\u003cp\u003eexcludes actual value in output (\u0026ldquo;expected to \u003cmessage\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO4failyACSScACmF":{"name":"fail(_:)","abstract":"\u003cp\u003eallows any free-form message (\u0026ldquo;\u003cmessage\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8prependsyACSS_ACtcACmF":{"name":"prepends(_:_:)","abstract":"\u003cp\u003eNot Fully Implemented Yet.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO7appendsyA2C_SStcACmF":{"name":"appends(_:_:)","abstract":"\u003cp\u003eappends after an existing message (\u0026ldquo;\u003cexpectation\u003e (use beNil() to match nils)\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO7detailsyA2C_SStcACmF":{"name":"details(_:_:)","abstract":"\u003cp\u003eprovides long-form multi-line explainations (\u0026ldquo;\u003cexpectation\u003e\\n\\n\u003cstring\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO08expectedC0SSvp":{"name":"expectedMessage","abstract":"\u003cp\u003eReturns the smallest message after the \u0026ldquo;expected to\u0026rdquo; string that summarizes the error.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8appended7messageACSS_tF":{"name":"appended(message:)","abstract":"\u003cp\u003eAppends a message after the primary expectation message\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO17appendedBeNilHintACyF":{"name":"appendedBeNilHint()","abstract":"\u003cp\u003eAppends a message hinting to use beNil() for when the actual value given was nil.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8appended7detailsACSS_tF":{"name":"appended(details:)","abstract":"\u003cp\u003eAppends a detailed (aka - multiline) message after the primary expectation message","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO08replacedB0yA3CcF":{"name":"replacedExpectation(_:)","abstract":"\u003cp\u003eReplaces a primary expectation with one returned by f. Preserves all composite expectations","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO07wrappedB06before5afterACSS_SStF":{"name":"wrappedExpectation(before:after:)","abstract":"\u003cp\u003eWraps a primary expectation with text before and after it.","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO9prepended11expectationACSS_tF":{"name":"prepended(expectation:)","abstract":"\u003cp\u003ePrepends a message by modifying the primary expectation\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8toString6actual8expected0D0S2S_S2StF":{"name":"toString(actual:expected:to:)","abstract":"\u003cp\u003eConverts the tree of ExpectationMessages into a final built string.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO7pendingyA2CmF":{"name":"pending","abstract":"\u003cp\u003eNo matchers have been performed.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO6passedyA2CmF":{"name":"passed","abstract":"\u003cp\u003eAll matchers have passed.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO6failedyA2CmF":{"name":"failed","abstract":"\u003cp\u003eAll matchers have failed.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO5mixedyA2CmF":{"name":"mixed","abstract":"\u003cp\u003eMultiple matchers have been peformed, with at least one passing and one failing.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html":{"name":"ExpectationStatus","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/ExpectationMessage.html":{"name":"ExpectationMessage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/ExpectationStyle.html":{"name":"ExpectationStyle","abstract":"\u003cp\u003eThe Expectation style intended for comparison to a MatcherStatus.\u003c/p\u003e"},"Enums/MatcherStatus.html":{"name":"MatcherStatus","abstract":"\u003cp\u003eMatcherStatus is a trinary that indicates if a Matcher matches a given value or not\u003c/p\u003e"},"Enums/ToSucceedResult.html":{"name":"ToSucceedResult","abstract":"\u003cp\u003eUsed by the \u003ccode\u003esucceed\u003c/code\u003e matcher.\u003c/p\u003e"},"Enums/NimbleTimeInterval.html":{"name":"NimbleTimeInterval","abstract":"\u003cp\u003eA reimplementation of \u003ccode\u003eDispatchTimeInterval\u003c/code\u003e without the \u003ccode\u003enever\u003c/code\u003e case, and conforming to \u003ccode\u003eSendable\u003c/code\u003e.\u003c/p\u003e"},"Global%20Variables.html#/s:6Nimble0A16AssertionHandlerAA0bC0_pvp":{"name":"NimbleAssertionHandler","abstract":"\u003cp\u003eGlobal backing interface for assertions that Nimble creates."},"Global%20Variables.html#/s:6Nimble12DefaultDeltaSdvp":{"name":"DefaultDelta","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBStringer.html#/c:@M@Nimble@objc(cs)NMBStringer(cm)stringify:":{"name":"stringify(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBStringer"},"Classes/SourceLocation.html#/s:6Nimble14SourceLocationC4fileSSvp":{"name":"file","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SourceLocation"},"Classes/SourceLocation.html#/s:6Nimble14SourceLocationC4lineSuvp":{"name":"line","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SourceLocation"},"Classes/SourceLocation.html#/c:@M@Nimble@objc(cs)SourceLocation(py)description":{"name":"description","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SourceLocation"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)named":{"name":"named","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)reason":{"name":"reason","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)userInfo":{"name":"userInfo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)satisfyingBlock":{"name":"satisfyingBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC7matchesACvpZ":{"name":"matches","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC12doesNotMatchACvpZ":{"name":"doesNotMatch","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC4failACvpZ":{"name":"fail","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/c:@M@Nimble@objc(cs)NMBMatcherStatus(py)hash":{"name":"hash","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/c:@M@Nimble@objc(cs)NMBMatcherStatus(im)isEqual:":{"name":"isEqual(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC4from6statusAcA07MatcherC0O_tFZ":{"name":"from(status:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC4from4boolACSb_tFZ":{"name":"from(bool:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC7toSwiftAA07MatcherC0OyF":{"name":"toSwift()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC6statusAA0B6StatusCvp":{"name":"status","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC7messageAA21NMBExpectationMessageCvp":{"name":"message","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC6status7messageAcA0B6StatusC_AA21NMBExpectationMessageCtcfc":{"name":"init(status:message:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC4bool7messageACSb_AA21NMBExpectationMessageCtcfc":{"name":"init(bool:message:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC7toSwiftAA07MatcherC0VyF":{"name":"toSwift()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBObjCBeCloseToMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCBeCloseToMatcher(py)within":{"name":"within","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCBeCloseToMatcher"},"Classes/NMBMatcher.html#/s:6Nimble10NMBMatcherC7matcherAcA0B6ResultCAA10ExpressionVySo8NSObjectCGKc_tcfc":{"name":"init(matcher:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/s:6Nimble10NMBMatcherC9predicateAcA0B6ResultCAA10ExpressionVySo8NSObjectCGKc_tcfc":{"name":"init(predicate:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)allPassMatcher:":{"name":"allPassMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beAKindOfMatcher:":{"name":"beAKindOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beAnInstanceOfMatcher:":{"name":"beAnInstanceOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beCloseToMatcher:within:":{"name":"beCloseToMatcher(_:within:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beEmptyMatcher":{"name":"beEmptyMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beGreaterThanMatcher:":{"name":"beGreaterThanMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beGreaterThanOrEqualToMatcher:":{"name":"beGreaterThanOrEqualToMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beIdenticalToMatcher:":{"name":"beIdenticalToMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beLessThanMatcher:":{"name":"beLessThanMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beLessThanOrEqualToMatcher:":{"name":"beLessThanOrEqualToMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beTruthyMatcher":{"name":"beTruthyMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beFalsyMatcher":{"name":"beFalsyMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beTrueMatcher":{"name":"beTrueMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beFalseMatcher":{"name":"beFalseMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beNilMatcher":{"name":"beNilMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beginWithMatcher:":{"name":"beginWithMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)containMatcher:":{"name":"containMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)containElementSatisfyingMatcher:":{"name":"containElementSatisfyingMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)endWithMatcher:":{"name":"endWithMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)equalMatcher:":{"name":"equalMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)haveCountMatcher:":{"name":"haveCountMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)matchMatcher:":{"name":"matchMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)raiseExceptionMatcher":{"name":"raiseExceptionMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)satisfyAllOfMatcher:":{"name":"satisfyAllOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)satisfyAnyOfMatcher:":{"name":"satisfyAnyOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC8expectedSSvp":{"name":"expected","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC11actualValueSSSgvp":{"name":"actualValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC2toSSvp":{"name":"to","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC07postfixC0SSvp":{"name":"postfixMessage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC13postfixActualSSvp":{"name":"postfixActual","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC08extendedC0SSSgvp":{"name":"extendedMessage","abstract":"\u003cp\u003eAn optional message that will be appended as a new line and provides additional details","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC15userDescriptionSSSgvp":{"name":"userDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC11stringValueSSvp":{"name":"stringValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/c:@M@Nimble@objc(cs)FailureMessage(im)init":{"name":"init()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC11stringValueACSS_tcfc":{"name":"init(stringValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC10expectedToACSS_tcfc":{"name":"init(expectedTo:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC21expectedActualValueToACSS_tcfc":{"name":"init(expectedActualValueTo:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC21expectedActualValueTo06customeF0ACSS_SStcfc":{"name":"init(expectedActualValueTo:customActualValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC4failACSS_tcfc":{"name":"init(fail:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC7prepend5childACSS_ACtcfc":{"name":"init(prepend:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC08appendedC05childACSS_ACtcfc":{"name":"init(appendedMessage:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC09prependedC05childACSS_ACtcfc":{"name":"init(prependedMessage:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC7details5childACSS_ACtcfc":{"name":"init(details:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC17appendedBeNilHintACyF":{"name":"appendedBeNilHint()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC7toSwiftAA011ExpectationC0OyF":{"name":"toSwift()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBWait.html#/c:@M@Nimble@objc(cs)NMBWait(cm)untilTimeout:file:line:action:":{"name":"until(timeout:file:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/s:6Nimble7NMBWaitC5until7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycctFZ":{"name":"until(timeout:file:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/s:6Nimble7NMBWaitC14throwableUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycKctFZ":{"name":"throwableUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/c:@M@Nimble@objc(cs)NMBWait(cm)untilFile:line:action:":{"name":"until(_:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/until(_:line:action:)":{"name":"until(_:line:action:)","parent_name":"NMBWait"},"Classes/CurrentTestCaseTracker.html#/c:@M@Nimble@objc(cs)CurrentTestCaseTracker(cpy)sharedInstance":{"name":"sharedInstance","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"CurrentTestCaseTracker"},"Classes/CurrentTestCaseTracker.html#/c:@M@Nimble@objc(cs)CurrentTestCaseTracker(im)testCaseWillStart:":{"name":"testCaseWillStart(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"CurrentTestCaseTracker"},"Classes/CurrentTestCaseTracker.html#/c:@M@Nimble@objc(cs)CurrentTestCaseTracker(im)testCaseDidFinish:":{"name":"testCaseDidFinish(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"CurrentTestCaseTracker"},"Classes/NimbleShortXCTestHandler.html#/s:6Nimble0A18ShortXCTestHandlerC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleShortXCTestHandler"},"Classes/NimbleXCTestHandler.html#/s:6Nimble0A13XCTestHandlerC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleXCTestHandler"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(im)initWithActualBlock:negative:file:line:":{"name":"init(actualBlock:negative:file:line:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)withTimeout":{"name":"withTimeout","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)to":{"name":"to","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toWithDescription":{"name":"toWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNot":{"name":"toNot","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNotWithDescription":{"name":"toNotWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)notTo":{"name":"notTo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)notToWithDescription":{"name":"notToWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventually":{"name":"toEventually","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventuallyWithDescription":{"name":"toEventuallyWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventuallyNot":{"name":"toEventuallyNot","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventuallyNotWithDescription":{"name":"toEventuallyNotWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNotEventually":{"name":"toNotEventually","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNotEventuallyWithDescription":{"name":"toNotEventuallyWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNever":{"name":"toNever","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNeverWithDescription":{"name":"toNeverWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)neverTo":{"name":"neverTo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)neverToWithDescription":{"name":"neverToWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toAlways":{"name":"toAlways","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toAlwaysWithDescription":{"name":"toAlwaysWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)alwaysTo":{"name":"alwaysTo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)alwaysToWithDescription":{"name":"alwaysToWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(cm)failWithMessage:file:line:":{"name":"failWithMessage(_:file:line:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/AssertionRecorder.html#/s:6Nimble17AssertionRecorderC10assertionsSayAA0B6RecordVGvp":{"name":"assertions","abstract":"\u003cp\u003eAll the assertions that were captured by this recorder\u003c/p\u003e","parent_name":"AssertionRecorder"},"Classes/AssertionRecorder.html#/s:6Nimble17AssertionRecorderCACycfc":{"name":"init()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionRecorder"},"Classes/AssertionRecorder.html#/s:6Nimble17AssertionRecorderC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionRecorder"},"Classes/AssertionDispatcher.html#/s:6Nimble19AssertionDispatcherC8handlersACSayAA0B7Handler_pG_tcfc":{"name":"init(handlers:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionDispatcher"},"Classes/AssertionDispatcher.html#/s:6Nimble19AssertionDispatcherC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionDispatcher"},"Classes/AssertionDispatcher.html":{"name":"AssertionDispatcher","abstract":"\u003cp\u003eAssertionDispatcher allows multiple AssertionHandlers to receive"},"Classes/AssertionRecorder.html":{"name":"AssertionRecorder","abstract":"\u003cp\u003eAn AssertionHandler that silently records assertions that Nimble makes."},"Classes/NMBExpectation.html":{"name":"NMBExpectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NimbleXCTestHandler.html":{"name":"NimbleXCTestHandler","abstract":"\u003cp\u003eDefault handler for Nimble. This assertion handler passes failures along to"},"Classes/NimbleShortXCTestHandler.html":{"name":"NimbleShortXCTestHandler","abstract":"\u003cp\u003eAlternative handler for Nimble. This assertion handler passes failures along"},"Classes/CurrentTestCaseTracker.html":{"name":"CurrentTestCaseTracker","abstract":"\u003cp\u003eHelper class providing access to the currently executing XCTestCase instance, if any\u003c/p\u003e"},"Classes/NMBWait.html":{"name":"NMBWait","abstract":"\u003cp\u003eOnly classes, protocols, methods, properties, and subscript declarations can be"},"Classes/NMBExpectationMessage.html":{"name":"NMBExpectationMessage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/FailureMessage.html":{"name":"FailureMessage","abstract":"\u003cp\u003eEncapsulates the failure message that matchers can report to the end user.\u003c/p\u003e"},"Classes/NMBMatcher.html":{"name":"NMBMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBObjCBeCloseToMatcher.html":{"name":"NMBObjCBeCloseToMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBMatcherResult.html":{"name":"NMBMatcherResult","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBMatcherStatus.html":{"name":"NMBMatcherStatus","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBObjCRaiseExceptionMatcher.html":{"name":"NMBObjCRaiseExceptionMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes.html#/BadInstructionException":{"name":"BadInstructionException","abstract":"\u003cp\u003eWithout Mach exceptions or the Objective-C runtime, there\u0026rsquo;s nothing to put in the exception object. It\u0026rsquo;s really just a boolean – either a SIGILL was caught or not.\u003c/p\u003e"},"Classes/SourceLocation.html":{"name":"SourceLocation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBStringer.html":{"name":"NMBStringer","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes.html":{"name":"Classes","abstract":"\u003cp\u003eThe following classes are available globally.\u003c/p\u003e"},"Global%20Variables.html":{"name":"Global Variables","abstract":"\u003cp\u003eThe following global variables are available globally.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Extensions.html":{"name":"Extensions","abstract":"\u003cp\u003eThe following extensions are available globally.\u003c/p\u003e"},"Functions.html":{"name":"Functions","abstract":"\u003cp\u003eThe following functions are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Structs.html":{"name":"Structures","abstract":"\u003cp\u003eThe following structures are available globally.\u003c/p\u003e"},"Typealiases.html":{"name":"Type Aliases","abstract":"\u003cp\u003eThe following type aliases are available globally.\u003c/p\u003e"}} \ No newline at end of file diff --git a/docs/docsets/Nimble.docset/Contents/Resources/docSet.dsidx b/docs/docsets/Nimble.docset/Contents/Resources/docSet.dsidx deleted file mode 100644 index b04a8d446..000000000 Binary files a/docs/docsets/Nimble.docset/Contents/Resources/docSet.dsidx and /dev/null differ diff --git a/docs/docsets/Nimble.tgz b/docs/docsets/Nimble.tgz deleted file mode 100644 index cde2ca3fa..000000000 Binary files a/docs/docsets/Nimble.tgz and /dev/null differ diff --git a/docs/img/carat.png b/docs/img/carat.png deleted file mode 100755 index 29d2f7fd4..000000000 Binary files a/docs/img/carat.png and /dev/null differ diff --git a/docs/img/dash.png b/docs/img/dash.png deleted file mode 100755 index 6f694c7a0..000000000 Binary files a/docs/img/dash.png and /dev/null differ diff --git a/docs/img/gh.png b/docs/img/gh.png deleted file mode 100755 index 628da97c7..000000000 Binary files a/docs/img/gh.png and /dev/null differ diff --git a/docs/img/spinner.gif b/docs/img/spinner.gif deleted file mode 100644 index e3038d0a4..000000000 Binary files a/docs/img/spinner.gif and /dev/null differ diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 937b39709..000000000 --- a/docs/index.html +++ /dev/null @@ -1,3146 +0,0 @@ - - - - Nimble Reference - - - - - - - - - - - - -
-
-

Nimble 13.2.1 Docs (52% documented)

-

GitHubView on GitHub

-
-
- -
-
-
-
-
- -
-
- -
-
-
- -

Nimble

- -

Build Status -CocoaPods -Carthage Compatible -Platforms

- -

Use Nimble to express the expected outcomes of Swift -or Objective-C expressions. Inspired by -Cedar.

-
// Swift
-expect(1 + 1).to(equal(2))
-expect(1.2).to(beCloseTo(1.1, within: 0.1))
-expect(3) > 2
-expect("seahorse").to(contain("sea"))
-expect(["Atlantic", "Pacific"]).toNot(contain("Mississippi"))
-expect(ocean.isClean).toEventually(beTruthy())
-
-

How to Use Nimble

- - - - - -

Table of Contents generated with DocToc

- - - - -

Some Background: Expressing Outcomes Using Assertions in XCTest

- -

Apple’s Xcode includes the XCTest framework, which provides -assertion macros to test whether code behaves properly. -For example, to assert that 1 + 1 = 2, XCTest has you write:

-
// Swift
-
-XCTAssertEqual(1 + 1, 2, "expected one plus one to equal two")
-
- -

Or, in Objective-C:

-
// Objective-C
-
-XCTAssertEqual(1 + 1, 2, @"expected one plus one to equal two");
-
- -

XCTest assertions have a couple of drawbacks:

- -
    -
  1. Not enough macros. There’s no easy way to assert that a string -contains a particular substring, or that a number is less than or -equal to another.
  2. -
  3. It’s hard to write asynchronous tests. XCTest forces you to write -a lot of boilerplate code.
  4. -
- -

Nimble addresses these concerns.

-

Nimble: Expectations Using expect(...).to

- -

Nimble allows you to express expectations using a natural, -easily understood language:

-
// Swift
-
-import Nimble
-
-expect(seagull.squawk).to(equal("Squee!"))
-
-
// Objective-C
-
-@import Nimble;
-
-expect(seagull.squawk).to(equal(@"Squee!"));
-
- -
-

The expect function autocompletes to include file: and line:, - but these parameters are optional. Use the default values to have - Xcode highlight the correct line when an expectation is not met.

-
- -

To perform the opposite expectation–to assert something is not -equal–use toNot or notTo:

-
// Swift
-
-import Nimble
-
-expect(seagull.squawk).toNot(equal("Oh, hello there!"))
-expect(seagull.squawk).notTo(equal("Oh, hello there!"))
-
-
// Objective-C
-
-@import Nimble;
-
-expect(seagull.squawk).toNot(equal(@"Oh, hello there!"));
-expect(seagull.squawk).notTo(equal(@"Oh, hello there!"));
-
-

Custom Failure Messages

- -

Would you like to add more information to the test’s failure messages? Use the description optional argument to add your own text:

-
// Swift
-
-expect(1 + 1).to(equal(3))
-// failed - expected to equal <3>, got <2>
-
-expect(1 + 1).to(equal(3), description: "Make sure libKindergartenMath is loaded")
-// failed - Make sure libKindergartenMath is loaded
-// expected to equal <3>, got <2>
-
- -

Or the *WithDescription version in Objective-C:

-
// Objective-C
-
-@import Nimble;
-
-expect(@(1+1)).to(equal(@3));
-// failed - expected to equal <3.0000>, got <2.0000>
-
-expect(@(1+1)).toWithDescription(equal(@3), @"Make sure libKindergartenMath is loaded");
-// failed - Make sure libKindergartenMath is loaded
-// expected to equal <3.0000>, got <2.0000>
-
-

Type Safety

- -

Nimble makes sure you don’t compare two types that don’t match:

-
// Swift
-
-// Does not compile:
-expect(1 + 1).to(equal("Squee!"))
-
- -
-

Nimble uses generics–only available in Swift–to ensure - type correctness. That means type checking is - not available when using Nimble in Objective-C. :sob:

-
-

Operator Overloads

- -

Tired of so much typing? With Nimble, you can use overloaded operators -like == for equivalence, or > for comparisons:

-
// Swift
-
-// Passes if squawk does not equal "Hi!":
-expect(seagull.squawk) != "Hi!"
-
-// Passes if 10 is greater than 2:
-expect(10) > 2
-
- -
-

Operator overloads are only available in Swift, so you won’t be able - to use this syntax in Objective-C. :broken_heart:

-
-

Lazily Computed Values

- -

The expect function doesn’t evaluate the value it’s given until it’s -time to match. So Nimble can test whether an expression raises an -exception once evaluated:

-
// Swift
-
-// Note: Swift currently doesn't have exceptions.
-//       Only Objective-C code can raise exceptions
-//       that Nimble will catch.
-//       (see https://github.com/Quick/Nimble/issues/220#issuecomment-172667064)
-let exception = NSException(
-    name: NSInternalInconsistencyException,
-    reason: "Not enough fish in the sea.",
-    userInfo: ["something": "is fishy"])
-expect { exception.raise() }.to(raiseException())
-
-// Also, you can customize raiseException to be more specific
-expect { exception.raise() }.to(raiseException(named: NSInternalInconsistencyException))
-expect { exception.raise() }.to(raiseException(
-    named: NSInternalInconsistencyException,
-    reason: "Not enough fish in the sea"))
-expect { exception.raise() }.to(raiseException(
-    named: NSInternalInconsistencyException,
-    reason: "Not enough fish in the sea",
-    userInfo: ["something": "is fishy"]))
-
- -

Objective-C works the same way, but you must use the expectAction -macro when making an expectation on an expression that has no return -value:

-
// Objective-C
-
-NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException
-                                                 reason:@"Not enough fish in the sea."
-                                               userInfo:nil];
-expectAction(^{ [exception raise]; }).to(raiseException());
-
-// Use the property-block syntax to be more specific.
-expectAction(^{ [exception raise]; }).to(raiseException().named(NSInternalInconsistencyException));
-expectAction(^{ [exception raise]; }).to(raiseException().
-    named(NSInternalInconsistencyException).
-    reason("Not enough fish in the sea"));
-expectAction(^{ [exception raise]; }).to(raiseException().
-    named(NSInternalInconsistencyException).
-    reason("Not enough fish in the sea").
-    userInfo(@{@"something": @"is fishy"}));
-
-// You can also pass a block for custom matching of the raised exception
-expectAction(exception.raise()).to(raiseException().satisfyingBlock(^(NSException *exception) {
-    expect(exception.name).to(beginWith(NSInternalInconsistencyException));
-}));
-
-

C Primitives

- -

Some testing frameworks make it hard to test primitive C values. -In Nimble, it just works:

-
// Swift
-
-let actual: CInt = 1
-let expectedValue: CInt = 1
-expect(actual).to(equal(expectedValue))
-
- -

In fact, Nimble uses type inference, so you can write the above -without explicitly specifying both types:

-
// Swift
-
-expect(1 as CInt).to(equal(1))
-
- -
-

In Objective-C, Nimble only supports Objective-C objects. To - make expectations on primitive C values, wrap then in an object - literal:

-
-
expect(@(1 + 1)).to(equal(@2));
-
-

Async/Await Support

- -

Nimble makes it easy to await for an async function to complete. Simply pass -the async function in to expect:

-
// Swift
-await expect { await aFunctionReturning1() }.to(equal(1))
-
- -

The async function is awaited on first, before passing it to the matcher. This -enables the matcher to run synchronous code like before, without caring about -whether the value it’s processing was abtained async or not.

- -

Async support is Swift-only, and it requires that you execute the test in an -async context. For XCTest, this is as simple as marking your test function with -async. If you use Quick, all tests in Quick 6 are executed in an async context. -In Quick 7 and later, only tests that are in an AsyncSpec subclass will be -executed in an async context.

- -

To avoid a compiler errors when using synchronous expect in asynchronous contexts, -expect with async expressions does not support autoclosures. However, the expecta -(expect async) function is provided as an alternative, which does support autoclosures.

-
// Swift
-await expecta(await aFunctionReturning1()).to(equal(1)))
-
- -

Similarly, if you’re ever in a situation where you want to force the compiler to -produce a SyncExpectation, you can use the expects (expect sync) function to -produce a SyncExpectation. Like so:

-
// Swift
-expects(someNonAsyncFunction()).to(equal(1)))
-
-expects(await someAsyncFunction()).to(equal(1)) // Compiler error: 'async' call in an autoclosure that does not support concurrency
-
-

Async Matchers

- -

In addition to asserting on async functions prior to passing them to a -synchronous matcher, you can also write matchers that directly take in an -async value. These are called AsyncMatchers. This is most obviously useful -when directly asserting against an actor. In addition to writing your own -async matchers, Nimble currently ships with async versions of the following -matchers:

- -
    -
  • allPass
  • -
  • containElementSatisfying
  • -
  • satisfyAllOf and the && operator overload accept both AsyncMatcher and -synchronous Matchers.
  • -
  • satisfyAnyOf and the || operator overload accept both AsyncMatcher and -synchronous Matchers.
  • -
- -

Note: Async/Await support is different than the toEventually/toEventuallyNot -feature described below.

-

Polling Expectations

- -

In Nimble, it’s easy to make expectations on values that are updated -asynchronously. Just use toEventually or toEventuallyNot:

-
// Swift
-DispatchQueue.main.async {
-    ocean.add("dolphins")
-    ocean.add("whales")
-}
-expect(ocean).toEventually(contain("dolphins", "whales"))
-
-
// Objective-C
-
-dispatch_async(dispatch_get_main_queue(), ^{
-    [ocean add:@"dolphins"];
-    [ocean add:@"whales"];
-});
-expect(ocean).toEventually(contain(@"dolphins", @"whales"));
-
- -

Note: toEventually triggers its polls on the main thread. Blocking the main -thread will cause Nimble to stop the run loop. This can cause test pollution -for whatever incomplete code that was running on the main thread. Blocking the -main thread can be caused by blocking IO, calls to sleep(), deadlocks, and -synchronous IPC.

- -

In the above example, ocean is constantly re-evaluated. If it ever -contains dolphins and whales, the expectation passes. If ocean still -doesn’t contain them, even after being continuously re-evaluated for one -whole second, the expectation fails.

-

Using Polling Expectations in Async Tests

- -

You can easily use toEventually or toEventuallyNot in async contexts as -well. You only need to add an await statement to the beginning of the line:

-
// Swift
-DispatchQueue.main.async {
-    ocean.add("dolphins")
-    ocean.add("whales")
-}
-await expect(ocean).toEventually(contain("dolphens", "whiles"))
-
- -

Starting in Nimble 12, toEventually et. al. now also supports async -expectations. For example, the following test is now supported:

-
actor MyActor {
-    private var counter = 0
-
-    func access() -> Int {
-        counter += 1
-        return counter
-    }
-}
-
-let subject = MyActor()
-await expect { await subject.access() }.toEventually(equal(2))
-
-

Verifying a Matcher will Never or Always Match

- -

You can also test that a value always or never matches throughout the length of the timeout. Use toNever and toAlways for this:

-
// Swift
-ocean.add("dolphins")
-expect(ocean).toAlways(contain("dolphins"))
-expect(ocean).toNever(contain("hares"))
-
-
// Objective-C
-[ocean add:@"dolphins"]
-expect(ocean).toAlways(contain(@"dolphins"))
-expect(ocean).toNever(contain(@"hares"))
-
-

Waiting for a Callback to be Called

- -

You can also provide a callback by using the waitUntil function:

-
// Swift
-
-waitUntil { done in
-    ocean.goFish { success in
-        expect(success).to(beTrue())
-        done()
-    }
-}
-
-
// Objective-C
-
-waitUntil(^(void (^done)(void)){
-    [ocean goFishWithHandler:^(BOOL success){
-        expect(success).to(beTrue());
-        done();
-    }];
-});
-
- -

waitUntil also optionally takes a timeout parameter:

-
// Swift
-
-waitUntil(timeout: .seconds(10)) { done in
-    ocean.goFish { success in
-        expect(success).to(beTrue())
-        done()
-    }
-}
-
-
// Objective-C
-
-waitUntilTimeout(10, ^(void (^done)(void)){
-    [ocean goFishWithHandler:^(BOOL success){
-        expect(success).to(beTrue());
-        done();
-    }];
-});
-
- -

Note: waitUntil triggers its timeout code on the main thread. Blocking the main -thread will cause Nimble to stop the run loop to continue. This can cause test -pollution for whatever incomplete code that was running on the main thread. -Blocking the main thread can be caused by blocking IO, calls to sleep(), -deadlocks, and synchronous IPC.

-

Changing the Timeout and Polling Intervals

- -

Sometimes it takes more than a second for a value to update. In those -cases, use the timeout parameter:

-
// Swift
-
-// Waits three seconds for ocean to contain "starfish":
-expect(ocean).toEventually(contain("starfish"), timeout: .seconds(3))
-
-// Evaluate someValue every 0.2 seconds repeatedly until it equals 100, or fails if it timeouts after 5.5 seconds.
-expect(someValue).toEventually(equal(100), timeout: .milliseconds(5500), pollInterval: .milliseconds(200))
-
-
// Objective-C
-
-// Waits three seconds for ocean to contain "starfish":
-expect(ocean).withTimeout(3).toEventually(contain(@"starfish"));
-
-

Changing default Timeout and Poll Intervals

- -

In some cases (e.g. when running on slower machines) it can be useful to modify -the default timeout and poll interval values. This can be done as follows:

-
// Swift
-
-// Increase the global timeout to 5 seconds:
-Nimble.PollingDefaults.timeout = .seconds(5)
-
-// Slow the polling interval to 0.1 seconds:
-Nimble.PollingDefaults.pollInterval = .milliseconds(100)
-
- -

You can set these globally at test startup in two ways:

-

Quick

- -

If you use Quick, add a QuickConfiguration subclass which sets your desired PollingDefaults.

-
import Quick
-import Nimble
-
-class PollingConfiguration: QuickConfiguration {
-    override class func configure(_ configuration: QCKConfiguration) {
-        Nimble.PollingDefaults.timeout = .seconds(5)
-        Nimble.PollingDefaults.pollInterval = .milliseconds(100)
-    }
-}
-
-

XCTest

- -

If you use XCTest, add an object that conforms to XCTestObservation and implement testBundleWillStart(_:).

- -

Additionally, you will need to register this observer with the XCTestObservationCenter at test startup. To do this, set the NSPrincipalClass key in your test bundle’s Info.plist and implement a class with that same name.

- -

For example

-
<!-- Info.plist -->
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-    <!-- ... -->
-    <key>NSPrincipalClass</key>
-    <string>MyTests.TestSetup</string>
-</dict>
-</plist>
-
-
// TestSetup.swift
-import XCTest
-import Nimble
-
-@objc
-class TestSetup: NSObject {
-    override init() {
-        XCTestObservationCenter.shared.register(PollingConfigurationTestObserver())
-    }
-}
-
-class PollingConfigurationTestObserver: NSObject, XCTestObserver {
-    func testBundleWillStart(_ testBundle: Bundle) {
-        Nimble.PollingDefaults.timeout = .seconds(5)
-        Nimble.PollingDefaults.pollInterval = .milliseconds(100)
-    }
-}
-
- -

In Linux, you can implement LinuxMain to set the PollingDefaults before calling XCTMain.

-

Objective-C Support

- -

Nimble has full support for Objective-C. However, there are two things -to keep in mind when using Nimble in Objective-C:

- -
    -
  1. All parameters passed to the expect function, as well as matcher -functions like equal, must be Objective-C objects or can be converted into -an NSObject equivalent:
  2. -
-
   // Objective-C
-
-   @import Nimble;
-
-   expect(@(1 + 1)).to(equal(@2));
-   expect(@"Hello world").to(contain(@"world"));
-
-   // Boxed as NSNumber *
-   expect(2).to(equal(2));
-   expect(1.2).to(beLessThan(2.0));
-   expect(true).to(beTruthy());
-
-   // Boxed as NSString *
-   expect("Hello world").to(equal("Hello world"));
-
-   // Boxed as NSRange
-   expect(NSMakeRange(1, 10)).to(equal(NSMakeRange(1, 10)));
-
- -
    -
  1. To make an expectation on an expression that does not return a value, -such as -[NSException raise], use expectAction instead of -expect:
  2. -
-
   // Objective-C
-
-   expectAction(^{ [exception raise]; }).to(raiseException());
-
- -

The following types are currently converted to an NSObject type:

- -
    -
  • C Numeric types are converted to NSNumber *
  • -
  • NSRange is converted to NSValue *
  • -
  • char * is converted to NSString *
  • -
- -

For the following matchers:

- -
    -
  • equal
  • -
  • beGreaterThan
  • -
  • beGreaterThanOrEqual
  • -
  • beLessThan
  • -
  • beLessThanOrEqual
  • -
  • beCloseTo
  • -
  • beTrue
  • -
  • beFalse
  • -
  • beTruthy
  • -
  • beFalsy
  • -
  • haveCount
  • -
- -

If you would like to see more, file an issue.

-

Disabling Objective-C Shorthand

- -

Nimble provides a shorthand for expressing expectations using the -expect function. To disable this shorthand in Objective-C, define the -NIMBLE_DISABLE_SHORT_SYNTAX macro somewhere in your code before -importing Nimble:

-
#define NIMBLE_DISABLE_SHORT_SYNTAX 1
-
-@import Nimble;
-
-NMB_expect(^{ return seagull.squawk; }, __FILE__, __LINE__).to(NMB_equal(@"Squee!"));
-
- -
-

Disabling the shorthand is useful if you’re testing functions with - names that conflict with Nimble functions, such as expect or - equal. If that’s not the case, there’s no point in disabling the - shorthand.

-
-

Using require to demand that a matcher pass before continuing

- -

Nimble 13.1 added the require dsl to complement expect. require -looks similar to expect and works with matchers just like expect does. The -difference is that require requires that the matcher passes - if the matcher -doesn’t pass, then require will throw an error. Additionally, if require -does pass, then it’ll return the result of running the expression.

- -

For example, in testing a function that returns an array, you might need to -first guarantee that there are exactly 3 items in the array before continuing -to assert on it. Instead of writing code that needlessly duplicates an assertion -and a conditional like so:

-
let collection = myFunction()
-expect(collection).to(haveCount(3))
-guard collection.count == 3 else { return }
-// ...
-
- -

You can replace that with:

-
let collection = try require(myFunction()).to(haveCount(3))
-// ...
-
-

Polling with require.

- -

Because require does everything you can do with expect, you can also use -require to poll matchers using toEventually, -eventuallyTo, toEventuallyNot, toNotEventually, toNever, neverTo, -toAlways, and alwaysTo. These work exactly the same as they do when using -expect, except that they throw if they fail, and they return the value of the -expression when they pass.

-

Using require with Async expressions and Async matchers

- -

require also works with both async expressions -(require { await someExpression() }.to(...)), and async matchers -(require().to(someAsyncMatcher())).

- -

Note that to prevent compiler confusion, -you cannot use require with async autoclosures. That is, -require(await someExpression()) will not compile. You can instead either -make the closure explicit (require { await someExpression() }), or use the -requirea function, which does accept autoclosures. -Similarly, if you ever wish to use the sync version of require when the -compiler is trying to force you to use the async version, you can use the -requires function, which only allows synchronous expressions.

-

Using unwrap to replace require(...).toNot(beNil())

- -

It’s very common to require that a value not be nil. Instead of writing -try require(...).toNot(beNil()), Nimble provides the unwrap function. This -expression throws an error if the expression evaluates to nil, or returns the -non-nil result when it passes. For example:

-
let value = try unwrap(nil as Int?) // throws
-let value = try unwrap(1 as Int?) // returns 1
-
- -

Additionally, there is also the pollUnwrap function, which aliases to -require(...).toEventuallyNot(beNil()). This is extremely useful for verifying -that a value that is updated on a background thread was eventually set to a -non-nil value.

- -

Note: As with require, there are unwraps, unwrapa, pollUnwraps, and -pollUnwrapa variants for allowing you to use autoclosures specifically with -synchronous or asynchronous code.

-

Throwing a Custom Error from Require

- -

By default, if the matcher fails in a require, then a RequireError will be -thrown. You can override this behavior and throw a custom error by passing a -non-nil Error value to the customError parameter:

-
try require(1).to(equal(2)) // throws a `RequireError`
-try require(customError: MyCustomError(), 1).to(equal(2)) // throws a `MyCustomError`
-
-

Built-in Matcher Functions

- -

Nimble includes a wide variety of matcher functions.

-

Type Checking

- -

Nimble supports checking the type membership of any kind of object, whether -Objective-C conformant or not:

-
// Swift
-
-protocol SomeProtocol{}
-class SomeClassConformingToProtocol: SomeProtocol{}
-struct SomeStructConformingToProtocol: SomeProtocol{}
-
-// The following tests pass
-expect(1).to(beAKindOf(Int.self))
-expect("turtle").to(beAKindOf(String.self))
-
-let classObject = SomeClassConformingToProtocol()
-expect(classObject).to(beAKindOf(SomeProtocol.self))
-expect(classObject).to(beAKindOf(SomeClassConformingToProtocol.self))
-expect(classObject).toNot(beAKindOf(SomeStructConformingToProtocol.self))
-
-let structObject = SomeStructConformingToProtocol()
-expect(structObject).to(beAKindOf(SomeProtocol.self))
-expect(structObject).to(beAKindOf(SomeStructConformingToProtocol.self))
-expect(structObject).toNot(beAKindOf(SomeClassConformingToProtocol.self))
-
-
// Objective-C
-
-// The following tests pass
-NSMutableArray *array = [NSMutableArray array];
-expect(array).to(beAKindOf([NSArray class]));
-expect(@1).toNot(beAKindOf([NSNull class]));
-
- -

Objects can be tested for their exact types using the beAnInstanceOf matcher:

-
// Swift
-
-protocol SomeProtocol{}
-class SomeClassConformingToProtocol: SomeProtocol{}
-struct SomeStructConformingToProtocol: SomeProtocol{}
-
-// Unlike the 'beKindOf' matcher, the 'beAnInstanceOf' matcher only
-// passes if the object is the EXACT type requested. The following
-// tests pass -- note its behavior when working in an inheritance hierarchy.
-expect(1).to(beAnInstanceOf(Int.self))
-expect("turtle").to(beAnInstanceOf(String.self))
-
-let classObject = SomeClassConformingToProtocol()
-expect(classObject).toNot(beAnInstanceOf(SomeProtocol.self))
-expect(classObject).to(beAnInstanceOf(SomeClassConformingToProtocol.self))
-expect(classObject).toNot(beAnInstanceOf(SomeStructConformingToProtocol.self))
-
-let structObject = SomeStructConformingToProtocol()
-expect(structObject).toNot(beAnInstanceOf(SomeProtocol.self))
-expect(structObject).to(beAnInstanceOf(SomeStructConformingToProtocol.self))
-expect(structObject).toNot(beAnInstanceOf(SomeClassConformingToProtocol.self))
-
-

Equivalence

-
// Swift
-
-// Passes if 'actual' is equivalent to 'expected':
-expect(actual).to(equal(expected))
-expect(actual) == expected
-
-// Passes if 'actual' is not equivalent to 'expected':
-expect(actual).toNot(equal(expected))
-expect(actual) != expected
-
-
// Objective-C
-
-// Passes if 'actual' is equivalent to 'expected':
-expect(actual).to(equal(expected))
-
-// Passes if 'actual' is not equivalent to 'expected':
-expect(actual).toNot(equal(expected))
-
- -

Values must be Equatable, Comparable, or subclasses of NSObject. -equal will always fail when used to compare one or more nil values.

-

Identity

-
// Swift
-
-// Passes if 'actual' has the same pointer address as 'expected':
-expect(actual).to(beIdenticalTo(expected))
-expect(actual) === expected
-
-// Passes if 'actual' does not have the same pointer address as 'expected':
-expect(actual).toNot(beIdenticalTo(expected))
-expect(actual) !== expected
-
- -

It is important to remember that beIdenticalTo only makes sense when comparing -types with reference semantics, which have a notion of identity. In Swift, -that means types that are defined as a class.

- -

This matcher will not work when comparing types with value semantics such as -those defined as a struct or enum. If you need to compare two value types, -consider what it means for instances of your type to be identical. This may mean -comparing individual properties or, if it makes sense to do so, conforming your type -to Equatable and using Nimble’s equivalence matchers instead.

-
// Objective-C
-
-// Passes if 'actual' has the same pointer address as 'expected':
-expect(actual).to(beIdenticalTo(expected));
-
-// Passes if 'actual' does not have the same pointer address as 'expected':
-expect(actual).toNot(beIdenticalTo(expected));
-
-

Comparisons

-
// Swift
-
-expect(actual).to(beLessThan(expected))
-expect(actual) < expected
-
-expect(actual).to(beLessThanOrEqualTo(expected))
-expect(actual) <= expected
-
-expect(actual).to(beGreaterThan(expected))
-expect(actual) > expected
-
-expect(actual).to(beGreaterThanOrEqualTo(expected))
-expect(actual) >= expected
-
-
// Objective-C
-
-expect(actual).to(beLessThan(expected));
-expect(actual).to(beLessThanOrEqualTo(expected));
-expect(actual).to(beGreaterThan(expected));
-expect(actual).to(beGreaterThanOrEqualTo(expected));
-
- -
-

Values given to the comparison matchers above must implement - Comparable.

-
- -

Because of how computers represent floating point numbers, assertions -that two floating point numbers be equal will sometimes fail. To express -that two numbers should be close to one another within a certain margin -of error, use beCloseTo:

-
// Swift
-
-expect(actual).to(beCloseTo(expected, within: delta))
-
-
// Objective-C
-
-expect(actual).to(beCloseTo(expected).within(delta));
-
- -

For example, to assert that 10.01 is close to 10, you can write:

-
// Swift
-
-expect(10.01).to(beCloseTo(10, within: 0.1))
-
-
// Objective-C
-
-expect(@(10.01)).to(beCloseTo(@10).within(0.1));
-
- -

There is also an operator shortcut available in Swift:

-
// Swift
-
-expect(actual)  expected
-expect(actual)  (expected, delta)
-
-
- -

(Type option+x to get on a U.S. keyboard)

- -

The former version uses the default delta of 0.0001. Here is yet another way to do this:

-
// Swift
-
-expect(actual)  expected ± delta
-expect(actual) == expected ± delta
-
-
- -

(Type option+shift+= to get ± on a U.S. keyboard)

- -

If you are comparing arrays of floating point numbers, you’ll find the following useful:

-
// Swift
-
-expect([0.0, 2.0])  [0.0001, 2.0001]
-expect([0.0, 2.0]).to(beCloseTo([0.1, 2.1], within: 0.1))
-
-
- -
-

Values given to the beCloseTo matcher must conform to FloatingPoint.

-
-

Types/Classes

-
// Swift
-
-// Passes if 'instance' is an instance of 'aClass':
-expect(instance).to(beAnInstanceOf(aClass))
-
-// Passes if 'instance' is an instance of 'aClass' or any of its subclasses:
-expect(instance).to(beAKindOf(aClass))
-
-
// Objective-C
-
-// Passes if 'instance' is an instance of 'aClass':
-expect(instance).to(beAnInstanceOf(aClass));
-
-// Passes if 'instance' is an instance of 'aClass' or any of its subclasses:
-expect(instance).to(beAKindOf(aClass));
-
- -
-

Instances must be Objective-C objects: subclasses of NSObject, - or Swift objects bridged to Objective-C with the @objc prefix.

-
- -

For example, to assert that dolphin is a kind of Mammal:

-
// Swift
-
-expect(dolphin).to(beAKindOf(Mammal))
-
-
// Objective-C
-
-expect(dolphin).to(beAKindOf([Mammal class]));
-
- -
-

beAnInstanceOf uses the -[NSObject isMemberOfClass:] method to - test membership. beAKindOf uses -[NSObject isKindOfClass:].

-
-

Truthiness

-
// Passes if 'actual' is not nil, true, or an object with a boolean value of true:
-expect(actual).to(beTruthy())
-
-// Passes if 'actual' is only true (not nil or an object conforming to Boolean true):
-expect(actual).to(beTrue())
-
-// Passes if 'actual' is nil, false, or an object with a boolean value of false:
-expect(actual).to(beFalsy())
-
-// Passes if 'actual' is only false (not nil or an object conforming to Boolean false):
-expect(actual).to(beFalse())
-
-// Passes if 'actual' is nil:
-expect(actual).to(beNil())
-
-
// Objective-C
-
-// Passes if 'actual' is not nil, true, or an object with a boolean value of true:
-expect(actual).to(beTruthy());
-
-// Passes if 'actual' is only true (not nil or an object conforming to Boolean true):
-expect(actual).to(beTrue());
-
-// Passes if 'actual' is nil, false, or an object with a boolean value of false:
-expect(actual).to(beFalsy());
-
-// Passes if 'actual' is only false (not nil or an object conforming to Boolean false):
-expect(actual).to(beFalse());
-
-// Passes if 'actual' is nil:
-expect(actual).to(beNil());
-
-

Swift Assertions

- -

If you’re using Swift, you can use the throwAssertion matcher to check if an assertion is thrown (e.g. fatalError()). This is made possible by @mattgallagher’s CwlPreconditionTesting library.

-
// Swift
-
-// Passes if 'somethingThatThrows()' throws an assertion, 
-// such as by calling 'fatalError()' or if a precondition fails:
-expect { try somethingThatThrows() }.to(throwAssertion())
-expect { () -> Void in fatalError() }.to(throwAssertion())
-expect { precondition(false) }.to(throwAssertion())
-
-// Passes if throwing an NSError is not equal to throwing an assertion:
-expect { throw NSError(domain: "test", code: 0, userInfo: nil) }.toNot(throwAssertion())
-
-// Passes if the code after the precondition check is not run:
-var reachedPoint1 = false
-var reachedPoint2 = false
-expect {
-    reachedPoint1 = true
-    precondition(false, "condition message")
-    reachedPoint2 = true
-}.to(throwAssertion())
-
-expect(reachedPoint1) == true
-expect(reachedPoint2) == false
-
- -

Notes:

- -
    -
  • This feature is only available in Swift.
  • -
  • The tvOS simulator is supported, but using a different mechanism, requiring you to turn off the Debug executable scheme setting for your tvOS scheme’s Test configuration.
  • -
-

Swift Error Handling

- -

You can use the throwError matcher to check if an error is thrown.

-
// Swift
-
-// Passes if 'somethingThatThrows()' throws an 'Error':
-expect { try somethingThatThrows() }.to(throwError())
-
-// Passes if 'somethingThatThrows()' throws an error within a particular domain:
-expect { try somethingThatThrows() }.to(throwError { (error: Error) in
-    expect(error._domain).to(equal(NSCocoaErrorDomain))
-})
-
-// Passes if 'somethingThatThrows()' throws a particular error enum case:
-expect { try somethingThatThrows() }.to(throwError(NSCocoaError.PropertyListReadCorruptError))
-
-// Passes if 'somethingThatThrows()' throws an error of a particular type:
-expect { try somethingThatThrows() }.to(throwError(errorType: NimbleError.self))
-
- -

When working directly with Error values, using the matchError matcher -allows you to perform certain checks on the error itself without having to -explicitly cast the error.

- -

The matchError matcher allows you to check whether or not the error:

- -
    -
  • is the same type of error you are expecting.
  • -
  • represents a particular error value that you are expecting.
  • -
- -

This can be useful when using Result or Promise types, for example.

-
// Swift
-
-let actual: Error = ...
-
-// Passes if 'actual' represents any error value from the NimbleErrorEnum type:
-expect(actual).to(matchError(NimbleErrorEnum.self))
-
-// Passes if 'actual' represents the case 'timeout' from the NimbleErrorEnum type:
-expect(actual).to(matchError(NimbleErrorEnum.timeout))
-
-// Passes if 'actual' contains an NSError equal to the one provided:
-expect(actual).to(matchError(NSError(domain: "err", code: 123, userInfo: nil)))
-
- -

Note: This feature is only available in Swift.

-

Exceptions

-
// Swift
-
-// Passes if 'actual', when evaluated, raises an exception:
-expect(actual).to(raiseException())
-
-// Passes if 'actual' raises an exception with the given name:
-expect(actual).to(raiseException(named: name))
-
-// Passes if 'actual' raises an exception with the given name and reason:
-expect(actual).to(raiseException(named: name, reason: reason))
-
-// Passes if 'actual' raises an exception which passes expectations defined in the given closure:
-// (in this case, if the exception's name begins with "a r")
-expect { exception.raise() }.to(raiseException { (exception: NSException) in
-    expect(exception.name).to(beginWith("a r"))
-})
-
-
// Objective-C
-
-// Passes if 'actual', when evaluated, raises an exception:
-expect(actual).to(raiseException())
-
-// Passes if 'actual' raises an exception with the given name
-expect(actual).to(raiseException().named(name))
-
-// Passes if 'actual' raises an exception with the given name and reason:
-expect(actual).to(raiseException().named(name).reason(reason))
-
-// Passes if 'actual' raises an exception and it passes expectations defined in the given block:
-// (in this case, if name begins with "a r")
-expect(actual).to(raiseException().satisfyingBlock(^(NSException *exception) {
-    expect(exception.name).to(beginWith(@"a r"));
-}));
-
- -

Note: Swift currently doesn’t have exceptions (see #220). -Only Objective-C code can raise exceptions that Nimble will catch.

-

Collection Membership

-
// Swift
-
-// Passes if all of the expected values are members of 'actual':
-expect(actual).to(contain(expected...))
-
-// Passes if 'actual' is empty (i.e. it contains no elements):
-expect(actual).to(beEmpty())
-
-
// Objective-C
-
-// Passes if expected is a member of 'actual':
-expect(actual).to(contain(expected));
-
-// Passes if 'actual' is empty (i.e. it contains no elements):
-expect(actual).to(beEmpty());
-
- -
-

In Swift contain takes any number of arguments. The expectation - passes if all of them are members of the collection. In Objective-C, - contain only takes one argument for now.

-
- -

For example, to assert that a list of sea creature names contains -“dolphin” and “starfish”:

-
// Swift
-
-expect(["whale", "dolphin", "starfish"]).to(contain("dolphin", "starfish"))
-
-
// Objective-C
-
-expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"dolphin"));
-expect(@[@"whale", @"dolphin", @"starfish"]).to(contain(@"starfish"));
-
- -
-

contain and beEmpty expect collections to be instances of - NSArray, NSSet, or a Swift collection composed of Equatable elements.

-
- -

To test whether a set of elements is present at the beginning or end of -an ordered collection, use beginWith and endWith:

-
// Swift
-
-// Passes if the elements in expected appear at the beginning of 'actual':
-expect(actual).to(beginWith(expected...))
-
-// Passes if the the elements in expected come at the end of 'actual':
-expect(actual).to(endWith(expected...))
-
-
// Objective-C
-
-// Passes if the elements in expected appear at the beginning of 'actual':
-expect(actual).to(beginWith(expected));
-
-// Passes if the the elements in expected come at the end of 'actual':
-expect(actual).to(endWith(expected));
-
- -
-

beginWith and endWith expect collections to be instances of - NSArray, or ordered Swift collections composed of Equatable - elements.

-
- -

Like contain, in Objective-C beginWith and endWith only support - a single argument for now.

- -

For code that returns collections of complex objects without a strict -ordering, there is the containElementSatisfying matcher:

-
// Swift
-
-struct Turtle {
-    let color: String
-}
-
-let turtles: [Turtle] = functionThatReturnsSomeTurtlesInAnyOrder()
-
-// This set of matchers passes regardless of whether the array is 
-// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]:
-
-expect(turtles).to(containElementSatisfying({ turtle in
-    return turtle.color == "green"
-}))
-expect(turtles).to(containElementSatisfying({ turtle in
-    return turtle.color == "blue"
-}, "that is a turtle with color 'blue'"))
-
-// The second matcher will incorporate the provided string in the error message
-// should it fail
-
- -

Note: in Swift, containElementSatisfying also has a variant that takes in an -async function.

-
// Objective-C
-
-@interface Turtle : NSObject
-@property (nonatomic, readonly, nonnull) NSString *color;
-@end
-
-@implementation Turtle 
-@end
-
-NSArray<Turtle *> * __nonnull turtles = functionThatReturnsSomeTurtlesInAnyOrder();
-
-// This set of matchers passes regardless of whether the array is 
-// [{color: "blue"}, {color: "green"}] or [{color: "green"}, {color: "blue"}]:
-
-expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) {
-    return [[turtle color] isEqualToString:@"green"];
-}));
-expect(turtles).to(containElementSatisfying(^BOOL(id __nonnull object) {
-    return [[turtle color] isEqualToString:@"blue"];
-}));
-
- -

For asserting on if the given Comparable value is inside of a Range, use the beWithin matcher.

-
// Swift
-
-// Passes if 5 is within the range 1 through 10, inclusive
-expect(5).to(beWithin(1...10))
-
-// Passes if 5 is not within the range 2 through 4.
-expect(5).toNot(beWithin(2..<5))
-
-

Strings

-
// Swift
-
-// Passes if 'actual' contains 'substring':
-expect(actual).to(contain(substring))
-
-// Passes if 'actual' begins with 'prefix':
-expect(actual).to(beginWith(prefix))
-
-// Passes if 'actual' ends with 'suffix':
-expect(actual).to(endWith(suffix))
-
-// Passes if 'actual' represents the empty string, "":
-expect(actual).to(beEmpty())
-
-// Passes if 'actual' matches the regular expression defined in 'expected':
-expect(actual).to(match(expected))
-
-
// Objective-C
-
-// Passes if 'actual' contains 'substring':
-expect(actual).to(contain(expected));
-
-// Passes if 'actual' begins with 'prefix':
-expect(actual).to(beginWith(prefix));
-
-// Passes if 'actual' ends with 'suffix':
-expect(actual).to(endWith(suffix));
-
-// Passes if 'actual' represents the empty string, "":
-expect(actual).to(beEmpty());
-
-// Passes if 'actual' matches the regular expression defined in 'expected':
-expect(actual).to(match(expected))
-
-

Collection Elements

- -

Nimble provides a means to check that all elements of a collection pass a given expectation.

-

Swift

- -

In Swift, the collection must be an instance of a type conforming to -Sequence.

-
// Swift
-
-// Providing a custom function:
-expect([1, 2, 3, 4]).to(allPass { $0 < 5 })
-
-// Composing the expectation with another matcher:
-expect([1, 2, 3, 4]).to(allPass(beLessThan(5)))
-
- -

There are also variants of allPass that check against async matchers, and -that take in async functions:

-
// Swift
-
-// Providing a custom function:
-expect([1, 2, 3, 4]).to(allPass { await asyncFunctionReturningBool($0) })
-
-// Composing the expectation with another matcher:
-expect([1, 2, 3, 4]).to(allPass(someAsyncMatcher()))
-
-

Objective-C

- -

In Objective-C, the collection must be an instance of a type which implements -the NSFastEnumeration protocol, and whose elements are instances of a type -which subclasses NSObject.

- -

Additionally, unlike in Swift, there is no override to specify a custom -matcher function.

-
// Objective-C
-
-expect(@[@1, @2, @3, @4]).to(allPass(beLessThan(@5)));
-
-

Collection Count

-
// Swift
-
-// Passes if 'actual' contains the 'expected' number of elements:
-expect(actual).to(haveCount(expected))
-
-// Passes if 'actual' does _not_ contain the 'expected' number of elements:
-expect(actual).notTo(haveCount(expected))
-
-
// Objective-C
-
-// Passes if 'actual' contains the 'expected' number of elements:
-expect(actual).to(haveCount(expected))
-
-// Passes if 'actual' does _not_ contain the 'expected' number of elements:
-expect(actual).notTo(haveCount(expected))
-
- -

For Swift, the actual value must be an instance of a type conforming to Collection. -For example, instances of Array, Dictionary, or Set.

- -

For Objective-C, the actual value must be one of the following classes, or their subclasses:

- -
    -
  • NSArray,
  • -
  • NSDictionary,
  • -
  • NSSet, or
  • -
  • NSHashTable.
  • -
-

Notifications

-
// Swift
-let testNotification = Notification(name: Notification.Name("Foo"), object: nil)
-
-// Passes if the closure in expect { ... } posts a notification to the default
-// notification center.
-expect {
-    NotificationCenter.default.post(testNotification)
-}.to(postNotifications(equal([testNotification])))
-
-// Passes if the closure in expect { ... } posts a notification to a given
-// notification center
-let notificationCenter = NotificationCenter()
-expect {
-    notificationCenter.post(testNotification)
-}.to(postNotifications(equal([testNotification]), from: notificationCenter))
-
-// Passes if the closure in expect { ... } posts a notification with the provided names to a given
-// notification center. Make sure to use this when running tests on Catalina, 
-// using DistributedNotificationCenter as there is currently no way 
-// of observing notifications without providing specific names.
-let distributedNotificationCenter = DistributedNotificationCenter()
-expect {
-    distributedNotificationCenter.post(testNotification)
-}.toEventually(postDistributedNotifications(equal([testNotification]),
-                                  from: distributedNotificationCenter,
-                                  names: [testNotification.name]))
-
- -
-

This matcher is only available in Swift.

-
-

Result

-
// Swift
-let aResult: Result<String, Error> = .success("Hooray") 
-
-// passes if result is .success
-expect(aResult).to(beSuccess()) 
-
-// passes if result value is .success and validates Success value
-expect(aResult).to(beSuccess { value in
-    expect(value).to(equal("Hooray"))
-})
-
-
-enum AnError: Error {
-    case somethingHappened
-}
-let otherResult: Result<String, AnError> = .failure(.somethingHappened) 
-
-// passes if result is .failure
-expect(otherResult).to(beFailure()) 
-
-// passes if result value is .failure and validates error
-expect(otherResult).to(beFailure { error in
-    expect(error).to(matchError(AnError.somethingHappened))
-}) 
-
- -
-

This matcher is only available in Swift.

-
-

Matching a value to any of a group of matchers

-
// Swift
-
-// passes if actual is either less than 10 or greater than 20
-expect(actual).to(satisfyAnyOf(beLessThan(10), beGreaterThan(20)))
-
-// can include any number of matchers -- the following will pass
-// **be careful** -- too many matchers can be the sign of an unfocused test
-expect(6).to(satisfyAnyOf(equal(2), equal(3), equal(4), equal(5), equal(6), equal(7)))
-
-// in Swift you also have the option to use the || operator to achieve a similar function
-expect(82).to(beLessThan(50) || beGreaterThan(80))
-
- -

Note: In swift, you can mix and match synchronous and asynchronous matchers -using by satisfyAnyOf/||.

-
// Objective-C
-
-// passes if actual is either less than 10 or greater than 20
-expect(actual).to(satisfyAnyOf(beLessThan(@10), beGreaterThan(@20)))
-
-// can include any number of matchers -- the following will pass
-// **be careful** -- too many matchers can be the sign of an unfocused test
-expect(@6).to(satisfyAnyOf(equal(@2), equal(@3), equal(@4), equal(@5), equal(@6), equal(@7)))
-
- -

Note: This matcher allows you to chain any number of matchers together. This provides flexibility, - but if you find yourself chaining many matchers together in one test, consider whether you - could instead refactor that single test into multiple, more precisely focused tests for - better coverage.

-

Custom Validation

-
// Swift
-
-// passes if .succeeded is returned from the closure
-expect {
-    guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else {
-        return .failed(reason: "wrong enum case")
-    }
-
-    return .succeeded
-}.to(succeed())
-
-// passes if .failed is returned from the closure
-expect {
-    guard case .enumCaseWithAssociatedValueThatIDontCareAbout = actual else {
-        return .failed(reason: "wrong enum case")
-    }
-
-    return .succeeded
-}.notTo(succeed())
-
- -

The String provided with .failed() is shown when the test fails.

- -

When using toEventually() be careful not to make state changes or run process intensive code since this closure will be ran many times.

-

Mapping a Value to Another Value

- -

Sometimes, you only want to match against a property or group of properties. -For example, if you wanted to check that only one or a few properties of a value -are equal to something else. For this, use the map matcher to convert a value -to another value and check it with a matcher.

-
// Swift
-
-expect(someValue).to(map(\.someProperty, equal(expectedProperty)))
-
-// or, for checking multiple different properties:
-
-expect(someValue).to(satisfyAllOf(
-    map(\.firstProperty, equal(expectedFirstProperty)),
-    map({ $0.secondProperty }, equal(expectedSecondProperty))
-))
-
- -

The map matcher takes in either a closure or a keypath literal, and a matcher -to compose with. It also works with async closures and async matchers.

- -

In most cases, it is simpler and easier to not use map (that is, prefer -expect(someValue.property).to(equal(1)) to -expect(someValue).to(map(\.property, equal(1)))). But map is incredibly -useful when combined with satisfyAllOf/satisfyAnyOf, especially for checking -a value that cannot conform to Equatable (or you don’t want to make it -conform to Equatable). However, if you find yourself reusing map many times -to do a fuzzy-equals of a given type, you will find writing a custom matcher to -be much easier to use and maintain.

-

Writing Your Own Matchers

- -

In Nimble, matchers are Swift functions that take an expected -value and return a Matcher closure. Take equal, for example:

-
// Swift
-
-public func equal<T: Equatable>(expectedValue: T?) -> Matcher<T> {
-    // Can be shortened to:
-    //   Matcher { actual in  ... }
-    //
-    // But shown with types here for clarity.
-    return Matcher { (actualExpression: Expression<T>) throws -> MatcherResult in
-        let msg = ExpectationMessage.expectedActualValueTo("equal <\(expectedValue)>")
-        if let actualValue = try actualExpression.evaluate() {
-            return MatcherResult(
-                bool: actualValue == expectedValue!,
-                message: msg
-            )
-        } else {
-            return MatcherResult(
-                status: .fail,
-                message: msg.appendedBeNilHint()
-            )
-        }
-    }
-}
-
- -

The return value of a Matcher closure is a MatcherResult that indicates -whether the actual value matches the expectation and what error message to -display on failure.

- -
-

The actual equal matcher function does not match when - expected are nil; the example above has been edited for brevity.

-
- -

Since matchers are just Swift functions, you can define them anywhere: -at the top of your test file, in a file shared by all of your tests, or -in an Xcode project you distribute to others.

- -
-

If you write a matcher you think everyone can use, consider adding it - to Nimble’s built-in set of matchers by sending a pull request! Or - distribute it yourself via GitHub.

-
- -

For examples of how to write your own matchers, just check out the -Matchers directory -to see how Nimble’s built-in set of matchers are implemented. You can -also check out the tips below.

-

MatcherResult

- -

MatcherResult is the return struct that Matcher return to indicate -success and failure. A MatcherResult is made up of two values: -MatcherStatus and ExpectationMessage.

- -

Instead of a boolean, MatcherStatus captures a trinary set of values:

-
// Swift
-
-public enum MatcherStatus {
-// The matcher "passes" with the given expression
-// eg - expect(1).to(equal(1))
-case matches
-
-// The matcher "fails" with the given expression
-// eg - expect(1).toNot(equal(1))
-case doesNotMatch
-
-// The matcher never "passes" with the given expression, even if negated
-// eg - expect(nil as Int?).toNot(equal(1))
-case fail
-
-// ...
-}
-
- -

Meanwhile, ExpectationMessage provides messaging semantics for error reporting.

-
// Swift
-
-public indirect enum ExpectationMessage {
-// Emits standard error message:
-// eg - "expected to <string>, got <actual>"
-case expectedActualValueTo(/* message: */ String)
-
-// Allows any free-form message
-// eg - "<string>"
-case fail(/* message: */ String)
-
-// ...
-}
-
- -

Matchers should usually depend on either .expectedActualValueTo(..) or -.fail(..) when reporting errors. Special cases can be used for the other enum -cases.

- -

Finally, if your Matcher utilizes other Matchers, you can utilize -.appended(details:) and .appended(message:) methods to annotate an existing -error with more details.

- -

A common message to append is failing on nils. For that, .appendedBeNilHint() -can be used.

-

Lazy Evaluation

- -

actualExpression is a lazy, memoized closure around the value provided to the -expect function. The expression can either be a closure or a value directly -passed to expect(...). In order to determine whether that value matches, -custom matchers should call actualExpression.evaluate():

-
// Swift
-
-public func beNil<T>() -> Matcher<T> {
-    // Matcher.simpleNilable(..) automatically generates ExpectationMessage for
-    // us based on the string we provide to it. Also, the 'Nilable' postfix indicates
-    // that this Matcher supports matching against nil actualExpressions, instead of
-    // always resulting in a MatcherStatus.fail result -- which is true for
-    // Matcher.simple(..)
-    return Matcher.simpleNilable("be nil") { actualExpression in
-        let actualValue = try actualExpression.evaluate()
-        return MatcherStatus(bool: actualValue == nil)
-    }
-}
-
- -

In the above example, actualExpression is not nil – it is a closure -that returns a value. The value it returns, which is accessed via the -evaluate() method, may be nil. If that value is nil, the beNil -matcher function returns true, indicating that the expectation passed.

-

Type Checking via Swift Generics

- -

Using Swift’s generics, matchers can constrain the type of the actual value -passed to the expect function by modifying the return type.

- -

For example, the following matcher, haveDescription, only accepts actual -values that implement the Printable protocol. It checks their description -against the one provided to the matcher function, and passes if they are the same:

-
// Swift
-
-public func haveDescription(description: String) -> Matcher<Printable?> {
-    return Matcher.simple("have description") { actual in
-        return MatcherStatus(bool: actual.evaluate().description == description)
-    }
-}
-
-

Customizing Failure Messages

- -

When using Matcher.simple(..) or Matcher.simpleNilable(..), Nimble -outputs the following failure message when an expectation fails:

-
// where `message` is the first string argument and
-// `actual` is the actual value received in `expect(..)`
-"expected to \(message), got <\(actual)>"
-
- -

You can customize this message by modifying the way you create a Matcher.

-

Basic Customization

- -

For slightly more complex error messaging, receive the created failure message -with Matcher.define(..):

-
// Swift
-
-public func equal<T: Equatable>(_ expectedValue: T?) -> Matcher<T> {
-    return Matcher.define("equal <\(stringify(expectedValue))>") { actualExpression, msg in
-        let actualValue = try actualExpression.evaluate()
-        let matches = actualValue == expectedValue && expectedValue != nil
-        if expectedValue == nil || actualValue == nil {
-            if expectedValue == nil && actualValue != nil {
-                return MatcherResult(
-                    status: .fail,
-                    message: msg.appendedBeNilHint()
-                )
-            }
-            return MatcherResult(status: .fail, message: msg)
-        }
-        return MatcherResult(bool: matches, message: msg)
-    }
-}
-
- -

In the example above, msg is defined based on the string given to -Matcher.define. The code looks akin to:

-
// Swift
-
-let msg = ExpectationMessage.expectedActualValueTo("equal <\(stringify(expectedValue))>")
-
-

Full Customization

- -

To fully customize the behavior of the Matcher, use the overload that expects -a MatcherResult to be returned.

- -

Along with MatcherResult, there are other ExpectationMessage enum values you can use:

-
public indirect enum ExpectationMessage {
-// Emits standard error message:
-// eg - "expected to <message>, got <actual>"
-case expectedActualValueTo(/* message: */ String)
-
-// Allows any free-form message
-// eg - "<message>"
-case fail(/* message: */ String)
-
-// Emits standard error message with a custom actual value instead of the default.
-// eg - "expected to <message>, got <actual>"
-case expectedCustomValueTo(/* message: */ String, /* actual: */ String)
-
-// Emits standard error message without mentioning the actual value
-// eg - "expected to <message>"
-case expectedTo(/* message: */ String)
-
-// ...
-}
-
- -

For matchers that compose other matchers, there are a handful of helper -functions to annotate messages.

- -

appended(message: String) is used to append to the original failure message:

-
// produces "expected to be true, got <actual> (use beFalse() for inverse)"
-// appended message do show up inline in Xcode.
-.expectedActualValueTo("be true").appended(message: " (use beFalse() for inverse)")
-
- -

For a more comprehensive message that spans multiple lines, use -appended(details: String) instead:

-
// produces "expected to be true, got <actual>\n\nuse beFalse() for inverse\nor use beNil()"
-// details do not show inline in Xcode, but do show up in test logs.
-.expectedActualValueTo("be true").appended(details: "use beFalse() for inverse\nor use beNil()")
-
-

Asynchronous Matchers

- -

To write matchers against async expressions, return an instance of -AsyncMatcher. The closure passed to AsyncMatcher is async, and the -expression you evaluate is also asynchronous and needs to be awaited on.

-
// Swift
-
-actor CallRecorder<Arguments> {
-    private(set) var calls: [Arguments] = []
-
-    func record(call: Arguments) {
-        calls.append(call)
-    }
-}
-
-func beCalled<Argument: Equatable>(with arguments: Argument) -> AsyncMatcher<CallRecorder<Argument>> {
-    AsyncMatcher { (expression: AsyncExpression<CallRecorder<Argument>>) in
-        let message = ExpectationMessage.expectedActualValueTo("be called with \(arguments)")
-        guard let calls = try await expression.evaluate()?.calls else {
-            return MatcherResult(status: .fail, message: message.appendedBeNilHint())
-        }
-
-        return MatcherResult(bool: calls.contains(args), message: message.appended(details: "called with \(calls)"))
-    }
-}
-
- -

In this example, we created an actor to act as an object to record calls to an -async function. Then, we created the beCalled(with:) matcher to check if the -actor has received a call with the given arguments.

-

Supporting Objective-C

- -

To use a custom matcher written in Swift from Objective-C, you’ll have -to extend the NMBMatcher class, adding a new class method for your -custom matcher. The example below defines the class method -+[NMBMatcher beNilMatcher]:

-
// Swift
-
-extension NMBMatcher {
-    @objc public class func beNilMatcher() -> NMBMatcher {
-        return NMBMatcher { actualExpression in
-            return try beNil().satisfies(actualExpression).toObjectiveC()
-        }
-    }
-}
-
- -

The above allows you to use the matcher from Objective-C:

-
// Objective-C
-
-expect(actual).to([NMBMatcher beNilMatcher]());
-
- -

To make the syntax easier to use, define a C function that calls the -class method:

-
// Objective-C
-
-FOUNDATION_EXPORT NMBMatcher *beNil() {
-    return [NMBMatcher beNilMatcher];
-}
-
-

Properly Handling nil in Objective-C Matchers

- -

When supporting Objective-C, make sure you handle nil appropriately. -Like Cedar, -most matchers do not match with nil. This is to bring prevent test -writers from being surprised by nil values where they did not expect -them.

- -

Nimble provides the beNil matcher function for test writer that want -to make expectations on nil objects:

-
// Objective-C
-
-expect(nil).to(equal(nil)); // fails
-expect(nil).to(beNil());    // passes
-
- -

If your matcher does not want to match with nil, you use Matcher.define or Matcher.simple. -Using those factory methods will automatically generate expected value failure messages when they’re nil.

-
public func beginWith<S: Sequence>(_ startingElement: S.Element) -> Matcher<S> where S.Element: Equatable {
-    return Matcher.simple("begin with <\(startingElement)>") { actualExpression in
-        guard let actualValue = try actualExpression.evaluate() else { return .fail }
-
-        var actualGenerator = actualValue.makeIterator()
-        return MatcherStatus(bool: actualGenerator.next() == startingElement)
-    }
-}
-
-extension NMBMatcher {
-    @objc public class func beginWithMatcher(_ expected: Any) -> NMBMatcher {
-        return NMBMatcher { actualExpression in
-            let actual = try actualExpression.evaluate()
-            let expr = actualExpression.cast { $0 as? NMBOrderedCollection }
-            return try beginWith(expected).satisfies(expr).toObjectiveC()
-        }
-    }
-}
-
-

Installing Nimble

- -
-

Nimble can be used on its own, or in conjunction with its sister - project, Quick. To install both - Quick and Nimble, follow the installation instructions in the Quick - Documentation.

-
- -

Nimble can currently be installed in one of two ways: using CocoaPods, or with -git submodules.

-

Installing Nimble as a Submodule

- -

To use Nimble as a submodule to test your macOS, iOS or tvOS applications, follow -these 4 easy steps:

- -
    -
  1. Clone the Nimble repository
  2. -
  3. Add Nimble.xcodeproj to the Xcode workspace for your project
  4. -
  5. Link Nimble.framework to your test target
  6. -
  7. Start writing expectations!
  8. -
- -

For more detailed instructions on each of these steps, -read How to Install Quick. -Ignore the steps involving adding Quick to your project in order to -install just Nimble.

-

Installing Nimble via CocoaPods

- -

To use Nimble in CocoaPods to test your macOS, iOS, tvOS or watchOS applications, add -Nimble to your podfile and add the use_frameworks! line to enable Swift -support for CocoaPods.

-
platform :ios, '8.0'
-
-source 'https://github.com/CocoaPods/Specs.git'
-
-# Whatever pods you need for your app go here
-
-target 'YOUR_APP_NAME_HERE_Tests', :exclusive => true do
-  use_frameworks!
-  pod 'Nimble'
-end
-
- -

Finally run pod install.

-

Installing Nimble via Swift Package Manager

-

Xcode

- -

To install Nimble via Xcode’s Swift Package Manager Integration: -Select your project configuration, then the project tab, then the Package -Dependencies tab. Click on the “plus” button at the bottom of the list, -then follow the wizard to add Quick to your project. Specify -https://github.com/Quick/Nimble.git as the url, and be sure to add -Nimble as a dependency of your unit test target, not your app target.

-

Package.Swift

- -

To use Nimble with Swift Package Manager to test your applications, add Nimble -to your Package.Swift and link it with your test target:

-
// swift-tools-version:5.5
-
-import PackageDescription
-
-let package = Package(
-    name: "MyAwesomeLibrary",
-    products: [
-        // ...
-    ],
-    dependencies: [
-        // ...
-        .package(url:  "https://github.com/Quick/Nimble.git", from: "12.0.0"),
-    ],
-    targets: [
-        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
-        // Targets can depend on other targets in this package, and on products in packages this package depends on.
-        .target(
-            name: "MyAwesomeLibrary",
-            dependencies: ...),
-        .testTarget(
-            name: "MyAwesomeLibraryTests",
-            dependencies: ["MyAwesomeLibrary", "Nimble"]),
-    ]
-)
-
- -

Please note that if you install Nimble using Swift Package Manager, then raiseException is not available.

-

Using Nimble without XCTest

- -

Nimble is integrated with XCTest to allow it work well when used in Xcode test -bundles, however it can also be used in a standalone app. After installing -Nimble using one of the above methods, there are two additional steps required -to make this work.

- -
    -
  1. Create a custom assertion handler and assign an instance of it to the -global NimbleAssertionHandler variable. For example:
  2. -
-
class MyAssertionHandler : AssertionHandler {
-    func assert(assertion: Bool, message: FailureMessage, location: SourceLocation) {
-        if (!assertion) {
-            print("Expectation failed: \(message.stringValue)")
-        }
-    }
-}
-
-
// Somewhere before you use any assertions
-NimbleAssertionHandler = MyAssertionHandler()
-
- -
    -
  1. Add a post-build action to fix an issue with the Swift XCTest support -library being unnecessarily copied into your app - -
      -
    • Edit your scheme in Xcode, and navigate to Build -> Post-actions
    • -
    • Click the “+” icon and select “New Run Script Action”
    • -
    • Open the “Provide build settings from” dropdown and select your target
    • -
    • Enter the following script contents: - -rm "${SWIFT_STDLIB_TOOL_DESTINATION_DIR}/libswiftXCTest.dylib" -
    • -
  2. -
- -

You can now use Nimble assertions in your code and handle failures as you see -fit.

-

Privacy Statement

- -

Nimble is a library that is only used for testing and should never be included -in the binary submitted to App Store Connect.

- -

Despite not being shipped to Apple, Nimble does not and will never collect any -kind of analytics or tracking.

- -
-
- -
-
- - diff --git a/docs/js/jazzy.js b/docs/js/jazzy.js deleted file mode 100755 index 198441660..000000000 --- a/docs/js/jazzy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -window.jazzy = {'docset': false} -if (typeof window.dash != 'undefined') { - document.documentElement.className += ' dash' - window.jazzy.docset = true -} -if (navigator.userAgent.match(/xcode/i)) { - document.documentElement.className += ' xcode' - window.jazzy.docset = true -} - -function toggleItem($link, $content) { - var animationDuration = 300; - $link.toggleClass('token-open'); - $content.slideToggle(animationDuration); -} - -function itemLinkToContent($link) { - return $link.parent().parent().next(); -} - -// On doc load + hash-change, open any targetted item -function openCurrentItemIfClosed() { - if (window.jazzy.docset) { - return; - } - var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); - $content = itemLinkToContent($link); - if ($content.is(':hidden')) { - toggleItem($link, $content); - } -} - -$(openCurrentItemIfClosed); -$(window).on('hashchange', openCurrentItemIfClosed); - -// On item link ('token') click, toggle its discussion -$('.token').on('click', function(event) { - if (window.jazzy.docset) { - return; - } - var $link = $(this); - toggleItem($link, itemLinkToContent($link)); - - // Keeps the document from jumping to the hash. - var href = $link.attr('href'); - if (history.pushState) { - history.pushState({}, '', href); - } else { - location.hash = href; - } - event.preventDefault(); -}); - -// Clicks on links to the current, closed, item need to open the item -$("a:not('.token')").on('click', function() { - if (location == this.href) { - openCurrentItemIfClosed(); - } -}); - -// KaTeX rendering -if ("katex" in window) { - $($('.math').each( (_, element) => { - katex.render(element.textContent, element, { - displayMode: $(element).hasClass('m-block'), - throwOnError: false, - trust: true - }); - })) -} diff --git a/docs/js/jazzy.search.js b/docs/js/jazzy.search.js deleted file mode 100644 index 359cdbb8b..000000000 --- a/docs/js/jazzy.search.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -$(function(){ - var $typeahead = $('[data-typeahead]'); - var $form = $typeahead.parents('form'); - var searchURL = $form.attr('action'); - - function displayTemplate(result) { - return result.name; - } - - function suggestionTemplate(result) { - var t = '
'; - t += '' + result.name + ''; - if (result.parent_name) { - t += '' + result.parent_name + ''; - } - t += '
'; - return t; - } - - $typeahead.one('focus', function() { - $form.addClass('loading'); - - $.getJSON(searchURL).then(function(searchData) { - const searchIndex = lunr(function() { - this.ref('url'); - this.field('name'); - this.field('abstract'); - for (const [url, doc] of Object.entries(searchData)) { - this.add({url: url, name: doc.name, abstract: doc.abstract}); - } - }); - - $typeahead.typeahead( - { - highlight: true, - minLength: 3, - autoselect: true - }, - { - limit: 10, - display: displayTemplate, - templates: { suggestion: suggestionTemplate }, - source: function(query, sync) { - const lcSearch = query.toLowerCase(); - const results = searchIndex.query(function(q) { - q.term(lcSearch, { boost: 100 }); - q.term(lcSearch, { - boost: 10, - wildcard: lunr.Query.wildcard.TRAILING - }); - }).map(function(result) { - var doc = searchData[result.ref]; - doc.url = result.ref; - return doc; - }); - sync(results); - } - } - ); - $form.removeClass('loading'); - $typeahead.trigger('focus'); - }); - }); - - var baseURL = searchURL.slice(0, -"search.json".length); - - $typeahead.on('typeahead:select', function(e, result) { - window.location = baseURL + result.url; - }); -}); diff --git a/docs/js/jquery.min.js b/docs/js/jquery.min.js deleted file mode 100644 index 7f37b5d99..000000000 --- a/docs/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/js/typeahead.jquery.js b/docs/js/typeahead.jquery.js deleted file mode 100644 index 3a2d2ab03..000000000 --- a/docs/js/typeahead.jquery.js +++ /dev/null @@ -1,1694 +0,0 @@ -/*! - * typeahead.js 1.3.1 - * https://github.com/corejavascript/typeahead.js - * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT - */ - - -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], function(a0) { - return factory(a0); - }); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -})(this, function($) { - var _ = function() { - "use strict"; - return { - isMsie: function() { - return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; - }, - isBlankString: function(str) { - return !str || /^\s*$/.test(str); - }, - escapeRegExChars: function(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - isString: function(obj) { - return typeof obj === "string"; - }, - isNumber: function(obj) { - return typeof obj === "number"; - }, - isArray: $.isArray, - isFunction: $.isFunction, - isObject: $.isPlainObject, - isUndefined: function(obj) { - return typeof obj === "undefined"; - }, - isElement: function(obj) { - return !!(obj && obj.nodeType === 1); - }, - isJQuery: function(obj) { - return obj instanceof $; - }, - toStr: function toStr(s) { - return _.isUndefined(s) || s === null ? "" : s + ""; - }, - bind: $.proxy, - each: function(collection, cb) { - $.each(collection, reverseArgs); - function reverseArgs(index, value) { - return cb(value, index); - } - }, - map: $.map, - filter: $.grep, - every: function(obj, test) { - var result = true; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (!(result = test.call(null, val, key, obj))) { - return false; - } - }); - return !!result; - }, - some: function(obj, test) { - var result = false; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (result = test.call(null, val, key, obj)) { - return false; - } - }); - return !!result; - }, - mixin: $.extend, - identity: function(x) { - return x; - }, - clone: function(obj) { - return $.extend(true, {}, obj); - }, - getIdGenerator: function() { - var counter = 0; - return function() { - return counter++; - }; - }, - templatify: function templatify(obj) { - return $.isFunction(obj) ? obj : template; - function template() { - return String(obj); - } - }, - defer: function(fn) { - setTimeout(fn, 0); - }, - debounce: function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments, later, callNow; - later = function() { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - throttle: function(func, wait) { - var context, args, timeout, result, previous, later; - previous = 0; - later = function() { - previous = new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(), remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }, - stringify: function(val) { - return _.isString(val) ? val : JSON.stringify(val); - }, - guid: function() { - function _p8(s) { - var p = (Math.random().toString(16) + "000000000").substr(2, 8); - return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; - } - return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); - }, - noop: function() {} - }; - }(); - var WWW = function() { - "use strict"; - var defaultClassNames = { - wrapper: "twitter-typeahead", - input: "tt-input", - hint: "tt-hint", - menu: "tt-menu", - dataset: "tt-dataset", - suggestion: "tt-suggestion", - selectable: "tt-selectable", - empty: "tt-empty", - open: "tt-open", - cursor: "tt-cursor", - highlight: "tt-highlight" - }; - return build; - function build(o) { - var www, classes; - classes = _.mixin({}, defaultClassNames, o); - www = { - css: buildCss(), - classes: classes, - html: buildHtml(classes), - selectors: buildSelectors(classes) - }; - return { - css: www.css, - html: www.html, - classes: www.classes, - selectors: www.selectors, - mixin: function(o) { - _.mixin(o, www); - } - }; - } - function buildHtml(c) { - return { - wrapper: '', - menu: '
' - }; - } - function buildSelectors(classes) { - var selectors = {}; - _.each(classes, function(v, k) { - selectors[k] = "." + v; - }); - return selectors; - } - function buildCss() { - var css = { - wrapper: { - position: "relative", - display: "inline-block" - }, - hint: { - position: "absolute", - top: "0", - left: "0", - borderColor: "transparent", - boxShadow: "none", - opacity: "1" - }, - input: { - position: "relative", - verticalAlign: "top", - backgroundColor: "transparent" - }, - inputWithNoHint: { - position: "relative", - verticalAlign: "top" - }, - menu: { - position: "absolute", - top: "100%", - left: "0", - zIndex: "100", - display: "none" - }, - ltr: { - left: "0", - right: "auto" - }, - rtl: { - left: "auto", - right: " 0" - } - }; - if (_.isMsie()) { - _.mixin(css.input, { - backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" - }); - } - return css; - } - }(); - var EventBus = function() { - "use strict"; - var namespace, deprecationMap; - namespace = "typeahead:"; - deprecationMap = { - render: "rendered", - cursorchange: "cursorchanged", - select: "selected", - autocomplete: "autocompleted" - }; - function EventBus(o) { - if (!o || !o.el) { - $.error("EventBus initialized without el"); - } - this.$el = $(o.el); - } - _.mixin(EventBus.prototype, { - _trigger: function(type, args) { - var $e = $.Event(namespace + type); - this.$el.trigger.call(this.$el, $e, args || []); - return $e; - }, - before: function(type) { - var args, $e; - args = [].slice.call(arguments, 1); - $e = this._trigger("before" + type, args); - return $e.isDefaultPrevented(); - }, - trigger: function(type) { - var deprecatedType; - this._trigger(type, [].slice.call(arguments, 1)); - if (deprecatedType = deprecationMap[type]) { - this._trigger(deprecatedType, [].slice.call(arguments, 1)); - } - } - }); - return EventBus; - }(); - var EventEmitter = function() { - "use strict"; - var splitter = /\s+/, nextTick = getNextTick(); - return { - onSync: onSync, - onAsync: onAsync, - off: off, - trigger: trigger - }; - function on(method, types, cb, context) { - var type; - if (!cb) { - return this; - } - types = types.split(splitter); - cb = context ? bindContext(cb, context) : cb; - this._callbacks = this._callbacks || {}; - while (type = types.shift()) { - this._callbacks[type] = this._callbacks[type] || { - sync: [], - async: [] - }; - this._callbacks[type][method].push(cb); - } - return this; - } - function onAsync(types, cb, context) { - return on.call(this, "async", types, cb, context); - } - function onSync(types, cb, context) { - return on.call(this, "sync", types, cb, context); - } - function off(types) { - var type; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - while (type = types.shift()) { - delete this._callbacks[type]; - } - return this; - } - function trigger(types) { - var type, callbacks, args, syncFlush, asyncFlush; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - args = [].slice.call(arguments, 1); - while ((type = types.shift()) && (callbacks = this._callbacks[type])) { - syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); - asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); - syncFlush() && nextTick(asyncFlush); - } - return this; - } - function getFlush(callbacks, context, args) { - return flush; - function flush() { - var cancelled; - for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { - cancelled = callbacks[i].apply(context, args) === false; - } - return !cancelled; - } - } - function getNextTick() { - var nextTickFn; - if (window.setImmediate) { - nextTickFn = function nextTickSetImmediate(fn) { - setImmediate(function() { - fn(); - }); - }; - } else { - nextTickFn = function nextTickSetTimeout(fn) { - setTimeout(function() { - fn(); - }, 0); - }; - } - return nextTickFn; - } - function bindContext(fn, context) { - return fn.bind ? fn.bind(context) : function() { - fn.apply(context, [].slice.call(arguments, 0)); - }; - } - }(); - var highlight = function(doc) { - "use strict"; - var defaults = { - node: null, - pattern: null, - tagName: "strong", - className: null, - wordsOnly: false, - caseSensitive: false, - diacriticInsensitive: false - }; - var accented = { - A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", - B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", - C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", - D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", - E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", - F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", - G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", - H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", - I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", - J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", - K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", - L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", - M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", - N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", - O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", - P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", - Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", - R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", - S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", - T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", - U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", - V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", - W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", - X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", - Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", - Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" - }; - return function hightlight(o) { - var regex; - o = _.mixin({}, defaults, o); - if (!o.node || !o.pattern) { - return; - } - o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; - regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); - traverse(o.node, hightlightTextNode); - function hightlightTextNode(textNode) { - var match, patternNode, wrapperNode; - if (match = regex.exec(textNode.data)) { - wrapperNode = doc.createElement(o.tagName); - o.className && (wrapperNode.className = o.className); - patternNode = textNode.splitText(match.index); - patternNode.splitText(match[0].length); - wrapperNode.appendChild(patternNode.cloneNode(true)); - textNode.parentNode.replaceChild(wrapperNode, patternNode); - } - return !!match; - } - function traverse(el, hightlightTextNode) { - var childNode, TEXT_NODE_TYPE = 3; - for (var i = 0; i < el.childNodes.length; i++) { - childNode = el.childNodes[i]; - if (childNode.nodeType === TEXT_NODE_TYPE) { - i += hightlightTextNode(childNode) ? 1 : 0; - } else { - traverse(childNode, hightlightTextNode); - } - } - } - }; - function accent_replacer(chr) { - return accented[chr.toUpperCase()] || chr; - } - function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { - var escapedPatterns = [], regexStr; - for (var i = 0, len = patterns.length; i < len; i++) { - var escapedWord = _.escapeRegExChars(patterns[i]); - if (diacriticInsensitive) { - escapedWord = escapedWord.replace(/\S/g, accent_replacer); - } - escapedPatterns.push(escapedWord); - } - regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; - return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); - } - }(window.document); - var Input = function() { - "use strict"; - var specialKeyCodeMap; - specialKeyCodeMap = { - 9: "tab", - 27: "esc", - 37: "left", - 39: "right", - 13: "enter", - 38: "up", - 40: "down" - }; - function Input(o, www) { - var id; - o = o || {}; - if (!o.input) { - $.error("input is missing"); - } - www.mixin(this); - this.$hint = $(o.hint); - this.$input = $(o.input); - this.$menu = $(o.menu); - id = this.$input.attr("id") || _.guid(); - this.$menu.attr("id", id + "_listbox"); - this.$hint.attr({ - "aria-hidden": true - }); - this.$input.attr({ - "aria-owns": id + "_listbox", - role: "combobox", - "aria-autocomplete": "list", - "aria-expanded": false - }); - this.query = this.$input.val(); - this.queryWhenFocused = this.hasFocus() ? this.query : null; - this.$overflowHelper = buildOverflowHelper(this.$input); - this._checkLanguageDirection(); - if (this.$hint.length === 0) { - this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; - } - this.onSync("cursorchange", this._updateDescendent); - } - Input.normalizeQuery = function(str) { - return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); - }; - _.mixin(Input.prototype, EventEmitter, { - _onBlur: function onBlur() { - this.resetInputValue(); - this.trigger("blurred"); - }, - _onFocus: function onFocus() { - this.queryWhenFocused = this.query; - this.trigger("focused"); - }, - _onKeydown: function onKeydown($e) { - var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; - this._managePreventDefault(keyName, $e); - if (keyName && this._shouldTrigger(keyName, $e)) { - this.trigger(keyName + "Keyed", $e); - } - }, - _onInput: function onInput() { - this._setQuery(this.getInputValue()); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - _managePreventDefault: function managePreventDefault(keyName, $e) { - var preventDefault; - switch (keyName) { - case "up": - case "down": - preventDefault = !withModifier($e); - break; - - default: - preventDefault = false; - } - preventDefault && $e.preventDefault(); - }, - _shouldTrigger: function shouldTrigger(keyName, $e) { - var trigger; - switch (keyName) { - case "tab": - trigger = !withModifier($e); - break; - - default: - trigger = true; - } - return trigger; - }, - _checkLanguageDirection: function checkLanguageDirection() { - var dir = (this.$input.css("direction") || "ltr").toLowerCase(); - if (this.dir !== dir) { - this.dir = dir; - this.$hint.attr("dir", dir); - this.trigger("langDirChanged", dir); - } - }, - _setQuery: function setQuery(val, silent) { - var areEquivalent, hasDifferentWhitespace; - areEquivalent = areQueriesEquivalent(val, this.query); - hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; - this.query = val; - if (!silent && !areEquivalent) { - this.trigger("queryChanged", this.query); - } else if (!silent && hasDifferentWhitespace) { - this.trigger("whitespaceChanged", this.query); - } - }, - _updateDescendent: function updateDescendent(event, id) { - this.$input.attr("aria-activedescendant", id); - }, - bind: function() { - var that = this, onBlur, onFocus, onKeydown, onInput; - onBlur = _.bind(this._onBlur, this); - onFocus = _.bind(this._onFocus, this); - onKeydown = _.bind(this._onKeydown, this); - onInput = _.bind(this._onInput, this); - this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); - if (!_.isMsie() || _.isMsie() > 9) { - this.$input.on("input.tt", onInput); - } else { - this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { - if (specialKeyCodeMap[$e.which || $e.keyCode]) { - return; - } - _.defer(_.bind(that._onInput, that, $e)); - }); - } - return this; - }, - focus: function focus() { - this.$input.focus(); - }, - blur: function blur() { - this.$input.blur(); - }, - getLangDir: function getLangDir() { - return this.dir; - }, - getQuery: function getQuery() { - return this.query || ""; - }, - setQuery: function setQuery(val, silent) { - this.setInputValue(val); - this._setQuery(val, silent); - }, - hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { - return this.query !== this.queryWhenFocused; - }, - getInputValue: function getInputValue() { - return this.$input.val(); - }, - setInputValue: function setInputValue(value) { - this.$input.val(value); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - resetInputValue: function resetInputValue() { - this.setInputValue(this.query); - }, - getHint: function getHint() { - return this.$hint.val(); - }, - setHint: function setHint(value) { - this.$hint.val(value); - }, - clearHint: function clearHint() { - this.setHint(""); - }, - clearHintIfInvalid: function clearHintIfInvalid() { - var val, hint, valIsPrefixOfHint, isValid; - val = this.getInputValue(); - hint = this.getHint(); - valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; - isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); - !isValid && this.clearHint(); - }, - hasFocus: function hasFocus() { - return this.$input.is(":focus"); - }, - hasOverflow: function hasOverflow() { - var constraint = this.$input.width() - 2; - this.$overflowHelper.text(this.getInputValue()); - return this.$overflowHelper.width() >= constraint; - }, - isCursorAtEnd: function() { - var valueLength, selectionStart, range; - valueLength = this.$input.val().length; - selectionStart = this.$input[0].selectionStart; - if (_.isNumber(selectionStart)) { - return selectionStart === valueLength; - } else if (document.selection) { - range = document.selection.createRange(); - range.moveStart("character", -valueLength); - return valueLength === range.text.length; - } - return true; - }, - destroy: function destroy() { - this.$hint.off(".tt"); - this.$input.off(".tt"); - this.$overflowHelper.remove(); - this.$hint = this.$input = this.$overflowHelper = $("
"); - }, - setAriaExpanded: function setAriaExpanded(value) { - this.$input.attr("aria-expanded", value); - } - }); - return Input; - function buildOverflowHelper($input) { - return $('').css({ - position: "absolute", - visibility: "hidden", - whiteSpace: "pre", - fontFamily: $input.css("font-family"), - fontSize: $input.css("font-size"), - fontStyle: $input.css("font-style"), - fontVariant: $input.css("font-variant"), - fontWeight: $input.css("font-weight"), - wordSpacing: $input.css("word-spacing"), - letterSpacing: $input.css("letter-spacing"), - textIndent: $input.css("text-indent"), - textRendering: $input.css("text-rendering"), - textTransform: $input.css("text-transform") - }).insertAfter($input); - } - function areQueriesEquivalent(a, b) { - return Input.normalizeQuery(a) === Input.normalizeQuery(b); - } - function withModifier($e) { - return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; - } - }(); - var Dataset = function() { - "use strict"; - var keys, nameGenerator; - keys = { - dataset: "tt-selectable-dataset", - val: "tt-selectable-display", - obj: "tt-selectable-object" - }; - nameGenerator = _.getIdGenerator(); - function Dataset(o, www) { - o = o || {}; - o.templates = o.templates || {}; - o.templates.notFound = o.templates.notFound || o.templates.empty; - if (!o.source) { - $.error("missing source"); - } - if (!o.node) { - $.error("missing node"); - } - if (o.name && !isValidName(o.name)) { - $.error("invalid dataset name: " + o.name); - } - www.mixin(this); - this.highlight = !!o.highlight; - this.name = _.toStr(o.name || nameGenerator()); - this.limit = o.limit || 5; - this.displayFn = getDisplayFn(o.display || o.displayKey); - this.templates = getTemplates(o.templates, this.displayFn); - this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; - this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; - this._resetLastSuggestion(); - this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); - } - Dataset.extractData = function extractData(el) { - var $el = $(el); - if ($el.data(keys.obj)) { - return { - dataset: $el.data(keys.dataset) || "", - val: $el.data(keys.val) || "", - obj: $el.data(keys.obj) || null - }; - } - return null; - }; - _.mixin(Dataset.prototype, EventEmitter, { - _overwrite: function overwrite(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (this.async && this.templates.pending) { - this._renderPending(query); - } else if (!this.async && this.templates.notFound) { - this._renderNotFound(query); - } else { - this._empty(); - } - this.trigger("rendered", suggestions, false, this.name); - }, - _append: function append(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length && this.$lastSuggestion.length) { - this._appendSuggestions(query, suggestions); - } else if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (!this.$lastSuggestion.length && this.templates.notFound) { - this._renderNotFound(query); - } - this.trigger("rendered", suggestions, true, this.name); - }, - _renderSuggestions: function renderSuggestions(query, suggestions) { - var $fragment; - $fragment = this._getSuggestionsFragment(query, suggestions); - this.$lastSuggestion = $fragment.children().last(); - this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); - }, - _appendSuggestions: function appendSuggestions(query, suggestions) { - var $fragment, $lastSuggestion; - $fragment = this._getSuggestionsFragment(query, suggestions); - $lastSuggestion = $fragment.children().last(); - this.$lastSuggestion.after($fragment); - this.$lastSuggestion = $lastSuggestion; - }, - _renderPending: function renderPending(query) { - var template = this.templates.pending; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _renderNotFound: function renderNotFound(query) { - var template = this.templates.notFound; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _empty: function empty() { - this.$el.empty(); - this._resetLastSuggestion(); - }, - _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { - var that = this, fragment; - fragment = document.createDocumentFragment(); - _.each(suggestions, function getSuggestionNode(suggestion) { - var $el, context; - context = that._injectQuery(query, suggestion); - $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); - fragment.appendChild($el[0]); - }); - this.highlight && highlight({ - className: this.classes.highlight, - node: fragment, - pattern: query - }); - return $(fragment); - }, - _getFooter: function getFooter(query, suggestions) { - return this.templates.footer ? this.templates.footer({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _getHeader: function getHeader(query, suggestions) { - return this.templates.header ? this.templates.header({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _resetLastSuggestion: function resetLastSuggestion() { - this.$lastSuggestion = $(); - }, - _injectQuery: function injectQuery(query, obj) { - return _.isObject(obj) ? _.mixin({ - _query: query - }, obj) : obj; - }, - update: function update(query) { - var that = this, canceled = false, syncCalled = false, rendered = 0; - this.cancel(); - this.cancel = function cancel() { - canceled = true; - that.cancel = $.noop; - that.async && that.trigger("asyncCanceled", query, that.name); - }; - this.source(query, sync, async); - !syncCalled && sync([]); - function sync(suggestions) { - if (syncCalled) { - return; - } - syncCalled = true; - suggestions = (suggestions || []).slice(0, that.limit); - rendered = suggestions.length; - that._overwrite(query, suggestions); - if (rendered < that.limit && that.async) { - that.trigger("asyncRequested", query, that.name); - } - } - function async(suggestions) { - suggestions = suggestions || []; - if (!canceled && rendered < that.limit) { - that.cancel = $.noop; - var idx = Math.abs(rendered - that.limit); - rendered += idx; - that._append(query, suggestions.slice(0, idx)); - that.async && that.trigger("asyncReceived", query, that.name); - } - } - }, - cancel: $.noop, - clear: function clear() { - this._empty(); - this.cancel(); - this.trigger("cleared"); - }, - isEmpty: function isEmpty() { - return this.$el.is(":empty"); - }, - destroy: function destroy() { - this.$el = $("
"); - } - }); - return Dataset; - function getDisplayFn(display) { - display = display || _.stringify; - return _.isFunction(display) ? display : displayFn; - function displayFn(obj) { - return obj[display]; - } - } - function getTemplates(templates, displayFn) { - return { - notFound: templates.notFound && _.templatify(templates.notFound), - pending: templates.pending && _.templatify(templates.pending), - header: templates.header && _.templatify(templates.header), - footer: templates.footer && _.templatify(templates.footer), - suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate - }; - function userSuggestionTemplate(context) { - var template = templates.suggestion; - return $(template(context)).attr("id", _.guid()); - } - function suggestionTemplate(context) { - return $('
').attr("id", _.guid()).text(displayFn(context)); - } - } - function isValidName(str) { - return /^[_a-zA-Z0-9-]+$/.test(str); - } - }(); - var Menu = function() { - "use strict"; - function Menu(o, www) { - var that = this; - o = o || {}; - if (!o.node) { - $.error("node is required"); - } - www.mixin(this); - this.$node = $(o.node); - this.query = null; - this.datasets = _.map(o.datasets, initializeDataset); - function initializeDataset(oDataset) { - var node = that.$node.find(oDataset.node).first(); - oDataset.node = node.length ? node : $("
").appendTo(that.$node); - return new Dataset(oDataset, www); - } - } - _.mixin(Menu.prototype, EventEmitter, { - _onSelectableClick: function onSelectableClick($e) { - this.trigger("selectableClicked", $($e.currentTarget)); - }, - _onRendered: function onRendered(type, dataset, suggestions, async) { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetRendered", dataset, suggestions, async); - }, - _onCleared: function onCleared() { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetCleared"); - }, - _propagate: function propagate() { - this.trigger.apply(this, arguments); - }, - _allDatasetsEmpty: function allDatasetsEmpty() { - return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { - var isEmpty = dataset.isEmpty(); - this.$node.attr("aria-expanded", !isEmpty); - return isEmpty; - }, this)); - }, - _getSelectables: function getSelectables() { - return this.$node.find(this.selectors.selectable); - }, - _removeCursor: function _removeCursor() { - var $selectable = this.getActiveSelectable(); - $selectable && $selectable.removeClass(this.classes.cursor); - }, - _ensureVisible: function ensureVisible($el) { - var elTop, elBottom, nodeScrollTop, nodeHeight; - elTop = $el.position().top; - elBottom = elTop + $el.outerHeight(true); - nodeScrollTop = this.$node.scrollTop(); - nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); - if (elTop < 0) { - this.$node.scrollTop(nodeScrollTop + elTop); - } else if (nodeHeight < elBottom) { - this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); - } - }, - bind: function() { - var that = this, onSelectableClick; - onSelectableClick = _.bind(this._onSelectableClick, this); - this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); - this.$node.on("mouseover", this.selectors.selectable, function() { - that.setCursor($(this)); - }); - this.$node.on("mouseleave", function() { - that._removeCursor(); - }); - _.each(this.datasets, function(dataset) { - dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); - }); - return this; - }, - isOpen: function isOpen() { - return this.$node.hasClass(this.classes.open); - }, - open: function open() { - this.$node.scrollTop(0); - this.$node.addClass(this.classes.open); - }, - close: function close() { - this.$node.attr("aria-expanded", false); - this.$node.removeClass(this.classes.open); - this._removeCursor(); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.attr("dir", dir); - }, - selectableRelativeToCursor: function selectableRelativeToCursor(delta) { - var $selectables, $oldCursor, oldIndex, newIndex; - $oldCursor = this.getActiveSelectable(); - $selectables = this._getSelectables(); - oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; - newIndex = oldIndex + delta; - newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; - newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; - return newIndex === -1 ? null : $selectables.eq(newIndex); - }, - setCursor: function setCursor($selectable) { - this._removeCursor(); - if ($selectable = $selectable && $selectable.first()) { - $selectable.addClass(this.classes.cursor); - this._ensureVisible($selectable); - } - }, - getSelectableData: function getSelectableData($el) { - return $el && $el.length ? Dataset.extractData($el) : null; - }, - getActiveSelectable: function getActiveSelectable() { - var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); - return $selectable.length ? $selectable : null; - }, - getTopSelectable: function getTopSelectable() { - var $selectable = this._getSelectables().first(); - return $selectable.length ? $selectable : null; - }, - update: function update(query) { - var isValidUpdate = query !== this.query; - if (isValidUpdate) { - this.query = query; - _.each(this.datasets, updateDataset); - } - return isValidUpdate; - function updateDataset(dataset) { - dataset.update(query); - } - }, - empty: function empty() { - _.each(this.datasets, clearDataset); - this.query = null; - this.$node.addClass(this.classes.empty); - function clearDataset(dataset) { - dataset.clear(); - } - }, - destroy: function destroy() { - this.$node.off(".tt"); - this.$node = $("
"); - _.each(this.datasets, destroyDataset); - function destroyDataset(dataset) { - dataset.destroy(); - } - } - }); - return Menu; - }(); - var Status = function() { - "use strict"; - function Status(options) { - this.$el = $("", { - role: "status", - "aria-live": "polite" - }).css({ - position: "absolute", - padding: "0", - border: "0", - height: "1px", - width: "1px", - "margin-bottom": "-1px", - "margin-right": "-1px", - overflow: "hidden", - clip: "rect(0 0 0 0)", - "white-space": "nowrap" - }); - options.$input.after(this.$el); - _.each(options.menu.datasets, _.bind(function(dataset) { - if (dataset.onSync) { - dataset.onSync("rendered", _.bind(this.update, this)); - dataset.onSync("cleared", _.bind(this.cleared, this)); - } - }, this)); - } - _.mixin(Status.prototype, { - update: function update(event, suggestions) { - var length = suggestions.length; - var words; - if (length === 1) { - words = { - result: "result", - is: "is" - }; - } else { - words = { - result: "results", - is: "are" - }; - } - this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); - }, - cleared: function() { - this.$el.text(""); - } - }); - return Status; - }(); - var DefaultMenu = function() { - "use strict"; - var s = Menu.prototype; - function DefaultMenu() { - Menu.apply(this, [].slice.call(arguments, 0)); - } - _.mixin(DefaultMenu.prototype, Menu.prototype, { - open: function open() { - !this._allDatasetsEmpty() && this._show(); - return s.open.apply(this, [].slice.call(arguments, 0)); - }, - close: function close() { - this._hide(); - return s.close.apply(this, [].slice.call(arguments, 0)); - }, - _onRendered: function onRendered() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onRendered.apply(this, [].slice.call(arguments, 0)); - }, - _onCleared: function onCleared() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onCleared.apply(this, [].slice.call(arguments, 0)); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); - return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); - }, - _hide: function hide() { - this.$node.hide(); - }, - _show: function show() { - this.$node.css("display", "block"); - } - }); - return DefaultMenu; - }(); - var Typeahead = function() { - "use strict"; - function Typeahead(o, www) { - var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; - o = o || {}; - if (!o.input) { - $.error("missing input"); - } - if (!o.menu) { - $.error("missing menu"); - } - if (!o.eventBus) { - $.error("missing event bus"); - } - www.mixin(this); - this.eventBus = o.eventBus; - this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; - this.input = o.input; - this.menu = o.menu; - this.enabled = true; - this.autoselect = !!o.autoselect; - this.active = false; - this.input.hasFocus() && this.activate(); - this.dir = this.input.getLangDir(); - this._hacks(); - this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); - onFocused = c(this, "activate", "open", "_onFocused"); - onBlurred = c(this, "deactivate", "_onBlurred"); - onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); - onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); - onEscKeyed = c(this, "isActive", "_onEscKeyed"); - onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); - onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); - onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); - onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); - onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); - onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); - this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); - } - _.mixin(Typeahead.prototype, { - _hacks: function hacks() { - var $input, $menu; - $input = this.input.$input || $("
"); - $menu = this.menu.$node || $("
"); - $input.on("blur.tt", function($e) { - var active, isActive, hasActive; - active = document.activeElement; - isActive = $menu.is(active); - hasActive = $menu.has(active).length > 0; - if (_.isMsie() && (isActive || hasActive)) { - $e.preventDefault(); - $e.stopImmediatePropagation(); - _.defer(function() { - $input.focus(); - }); - } - }); - $menu.on("mousedown.tt", function($e) { - $e.preventDefault(); - }); - }, - _onSelectableClicked: function onSelectableClicked(type, $el) { - this.select($el); - }, - _onDatasetCleared: function onDatasetCleared() { - this._updateHint(); - }, - _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { - this._updateHint(); - if (this.autoselect) { - var cursorClass = this.selectors.cursor.substr(1); - this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); - } - this.eventBus.trigger("render", suggestions, async, dataset); - }, - _onAsyncRequested: function onAsyncRequested(type, dataset, query) { - this.eventBus.trigger("asyncrequest", query, dataset); - }, - _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { - this.eventBus.trigger("asynccancel", query, dataset); - }, - _onAsyncReceived: function onAsyncReceived(type, dataset, query) { - this.eventBus.trigger("asyncreceive", query, dataset); - }, - _onFocused: function onFocused() { - this._minLengthMet() && this.menu.update(this.input.getQuery()); - }, - _onBlurred: function onBlurred() { - if (this.input.hasQueryChangedSinceLastFocus()) { - this.eventBus.trigger("change", this.input.getQuery()); - } - }, - _onEnterKeyed: function onEnterKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - if (this.select($selectable)) { - $e.preventDefault(); - $e.stopPropagation(); - } - } else if (this.autoselect) { - if (this.select(this.menu.getTopSelectable())) { - $e.preventDefault(); - $e.stopPropagation(); - } - } - }, - _onTabKeyed: function onTabKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - this.select($selectable) && $e.preventDefault(); - } else if (this.autoselect) { - if ($selectable = this.menu.getTopSelectable()) { - this.autocomplete($selectable) && $e.preventDefault(); - } - } - }, - _onEscKeyed: function onEscKeyed() { - this.close(); - }, - _onUpKeyed: function onUpKeyed() { - this.moveCursor(-1); - }, - _onDownKeyed: function onDownKeyed() { - this.moveCursor(+1); - }, - _onLeftKeyed: function onLeftKeyed() { - if (this.dir === "rtl" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onRightKeyed: function onRightKeyed() { - if (this.dir === "ltr" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onQueryChanged: function onQueryChanged(e, query) { - this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); - }, - _onWhitespaceChanged: function onWhitespaceChanged() { - this._updateHint(); - }, - _onLangDirChanged: function onLangDirChanged(e, dir) { - if (this.dir !== dir) { - this.dir = dir; - this.menu.setLanguageDirection(dir); - } - }, - _openIfActive: function openIfActive() { - this.isActive() && this.open(); - }, - _minLengthMet: function minLengthMet(query) { - query = _.isString(query) ? query : this.input.getQuery() || ""; - return query.length >= this.minLength; - }, - _updateHint: function updateHint() { - var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; - $selectable = this.menu.getTopSelectable(); - data = this.menu.getSelectableData($selectable); - val = this.input.getInputValue(); - if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { - query = Input.normalizeQuery(val); - escapedQuery = _.escapeRegExChars(query); - frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); - match = frontMatchRegEx.exec(data.val); - match && this.input.setHint(val + match[1]); - } else { - this.input.clearHint(); - } - }, - isEnabled: function isEnabled() { - return this.enabled; - }, - enable: function enable() { - this.enabled = true; - }, - disable: function disable() { - this.enabled = false; - }, - isActive: function isActive() { - return this.active; - }, - activate: function activate() { - if (this.isActive()) { - return true; - } else if (!this.isEnabled() || this.eventBus.before("active")) { - return false; - } else { - this.active = true; - this.eventBus.trigger("active"); - return true; - } - }, - deactivate: function deactivate() { - if (!this.isActive()) { - return true; - } else if (this.eventBus.before("idle")) { - return false; - } else { - this.active = false; - this.close(); - this.eventBus.trigger("idle"); - return true; - } - }, - isOpen: function isOpen() { - return this.menu.isOpen(); - }, - open: function open() { - if (!this.isOpen() && !this.eventBus.before("open")) { - this.input.setAriaExpanded(true); - this.menu.open(); - this._updateHint(); - this.eventBus.trigger("open"); - } - return this.isOpen(); - }, - close: function close() { - if (this.isOpen() && !this.eventBus.before("close")) { - this.input.setAriaExpanded(false); - this.menu.close(); - this.input.clearHint(); - this.input.resetInputValue(); - this.eventBus.trigger("close"); - } - return !this.isOpen(); - }, - setVal: function setVal(val) { - this.input.setQuery(_.toStr(val)); - }, - getVal: function getVal() { - return this.input.getQuery(); - }, - select: function select($selectable) { - var data = this.menu.getSelectableData($selectable); - if (data && !this.eventBus.before("select", data.obj, data.dataset)) { - this.input.setQuery(data.val, true); - this.eventBus.trigger("select", data.obj, data.dataset); - this.close(); - return true; - } - return false; - }, - autocomplete: function autocomplete($selectable) { - var query, data, isValid; - query = this.input.getQuery(); - data = this.menu.getSelectableData($selectable); - isValid = data && query !== data.val; - if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { - this.input.setQuery(data.val); - this.eventBus.trigger("autocomplete", data.obj, data.dataset); - return true; - } - return false; - }, - moveCursor: function moveCursor(delta) { - var query, $candidate, data, suggestion, datasetName, cancelMove, id; - query = this.input.getQuery(); - $candidate = this.menu.selectableRelativeToCursor(delta); - data = this.menu.getSelectableData($candidate); - suggestion = data ? data.obj : null; - datasetName = data ? data.dataset : null; - id = $candidate ? $candidate.attr("id") : null; - this.input.trigger("cursorchange", id); - cancelMove = this._minLengthMet() && this.menu.update(query); - if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { - this.menu.setCursor($candidate); - if (data) { - if (typeof data.val === "string") { - this.input.setInputValue(data.val); - } - } else { - this.input.resetInputValue(); - this._updateHint(); - } - this.eventBus.trigger("cursorchange", suggestion, datasetName); - return true; - } - return false; - }, - destroy: function destroy() { - this.input.destroy(); - this.menu.destroy(); - } - }); - return Typeahead; - function c(ctx) { - var methods = [].slice.call(arguments, 1); - return function() { - var args = [].slice.call(arguments); - _.each(methods, function(method) { - return ctx[method].apply(ctx, args); - }); - }; - } - }(); - (function() { - "use strict"; - var old, keys, methods; - old = $.fn.typeahead; - keys = { - www: "tt-www", - attrs: "tt-attrs", - typeahead: "tt-typeahead" - }; - methods = { - initialize: function initialize(o, datasets) { - var www; - datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); - o = o || {}; - www = WWW(o.classNames); - return this.each(attach); - function attach() { - var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; - _.each(datasets, function(d) { - d.highlight = !!o.highlight; - }); - $input = $(this); - $wrapper = $(www.html.wrapper); - $hint = $elOrNull(o.hint); - $menu = $elOrNull(o.menu); - defaultHint = o.hint !== false && !$hint; - defaultMenu = o.menu !== false && !$menu; - defaultHint && ($hint = buildHintFromInput($input, www)); - defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); - $hint && $hint.val(""); - $input = prepInput($input, www); - if (defaultHint || defaultMenu) { - $wrapper.css(www.css.wrapper); - $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); - $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); - } - MenuConstructor = defaultMenu ? DefaultMenu : Menu; - eventBus = new EventBus({ - el: $input - }); - input = new Input({ - hint: $hint, - input: $input, - menu: $menu - }, www); - menu = new MenuConstructor({ - node: $menu, - datasets: datasets - }, www); - status = new Status({ - $input: $input, - menu: menu - }); - typeahead = new Typeahead({ - input: input, - menu: menu, - eventBus: eventBus, - minLength: o.minLength, - autoselect: o.autoselect - }, www); - $input.data(keys.www, www); - $input.data(keys.typeahead, typeahead); - } - }, - isEnabled: function isEnabled() { - var enabled; - ttEach(this.first(), function(t) { - enabled = t.isEnabled(); - }); - return enabled; - }, - enable: function enable() { - ttEach(this, function(t) { - t.enable(); - }); - return this; - }, - disable: function disable() { - ttEach(this, function(t) { - t.disable(); - }); - return this; - }, - isActive: function isActive() { - var active; - ttEach(this.first(), function(t) { - active = t.isActive(); - }); - return active; - }, - activate: function activate() { - ttEach(this, function(t) { - t.activate(); - }); - return this; - }, - deactivate: function deactivate() { - ttEach(this, function(t) { - t.deactivate(); - }); - return this; - }, - isOpen: function isOpen() { - var open; - ttEach(this.first(), function(t) { - open = t.isOpen(); - }); - return open; - }, - open: function open() { - ttEach(this, function(t) { - t.open(); - }); - return this; - }, - close: function close() { - ttEach(this, function(t) { - t.close(); - }); - return this; - }, - select: function select(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.select($el); - }); - return success; - }, - autocomplete: function autocomplete(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.autocomplete($el); - }); - return success; - }, - moveCursor: function moveCursoe(delta) { - var success = false; - ttEach(this.first(), function(t) { - success = t.moveCursor(delta); - }); - return success; - }, - val: function val(newVal) { - var query; - if (!arguments.length) { - ttEach(this.first(), function(t) { - query = t.getVal(); - }); - return query; - } else { - ttEach(this, function(t) { - t.setVal(_.toStr(newVal)); - }); - return this; - } - }, - destroy: function destroy() { - ttEach(this, function(typeahead, $input) { - revert($input); - typeahead.destroy(); - }); - return this; - } - }; - $.fn.typeahead = function(method) { - if (methods[method]) { - return methods[method].apply(this, [].slice.call(arguments, 1)); - } else { - return methods.initialize.apply(this, arguments); - } - }; - $.fn.typeahead.noConflict = function noConflict() { - $.fn.typeahead = old; - return this; - }; - function ttEach($els, fn) { - $els.each(function() { - var $input = $(this), typeahead; - (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); - }); - } - function buildHintFromInput($input, www) { - return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ - readonly: true, - required: false - }).removeAttr("id name placeholder").removeClass("required").attr({ - spellcheck: "false", - tabindex: -1 - }); - } - function prepInput($input, www) { - $input.data(keys.attrs, { - dir: $input.attr("dir"), - autocomplete: $input.attr("autocomplete"), - spellcheck: $input.attr("spellcheck"), - style: $input.attr("style") - }); - $input.addClass(www.classes.input).attr({ - spellcheck: false - }); - try { - !$input.attr("dir") && $input.attr("dir", "auto"); - } catch (e) {} - return $input; - } - function getBackgroundStyles($el) { - return { - backgroundAttachment: $el.css("background-attachment"), - backgroundClip: $el.css("background-clip"), - backgroundColor: $el.css("background-color"), - backgroundImage: $el.css("background-image"), - backgroundOrigin: $el.css("background-origin"), - backgroundPosition: $el.css("background-position"), - backgroundRepeat: $el.css("background-repeat"), - backgroundSize: $el.css("background-size") - }; - } - function revert($input) { - var www, $wrapper; - www = $input.data(keys.www); - $wrapper = $input.parent().filter(www.selectors.wrapper); - _.each($input.data(keys.attrs), function(val, key) { - _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); - }); - $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); - if ($wrapper.length) { - $input.detach().insertAfter($wrapper); - $wrapper.remove(); - } - } - function $elOrNull(obj) { - var isValid, $el; - isValid = _.isJQuery(obj) || _.isElement(obj); - $el = isValid ? $(obj).first() : []; - return $el.length ? $el : null; - } - })(); -}); \ No newline at end of file diff --git a/docs/search.json b/docs/search.json deleted file mode 100644 index 1d2ba21a7..000000000 --- a/docs/search.json +++ /dev/null @@ -1 +0,0 @@ -{"Typealiases.html#/s:6Nimble14AsyncPredicatea":{"name":"AsyncPredicate","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Typealiases.html#/s:6Nimble9Predicatea":{"name":"Predicate","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble15PredicateResulta":{"name":"PredicateResult","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble15PredicateStatusa":{"name":"PredicateStatus","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble12MatcherBlocka":{"name":"MatcherBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Typealiases.html#/s:6Nimble14PredicateBlocka":{"name":"PredicateBlock","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble12NMBPredicatea":{"name":"NMBPredicate","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble18NMBPredicateResulta":{"name":"NMBPredicateResult","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/s:6Nimble18NMBPredicateStatusa":{"name":"NMBPredicateStatus","abstract":"\u003cp\u003eProvides an easy upgrade path for custom Matchers to be renamed to Matchers\u003c/p\u003e"},"Typealiases.html#/FileString":{"name":"FileString"},"Typealiases.html#/s:6Nimble10FileStringa":{"name":"FileString","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/RequireError.html#/s:10Foundation13CustomNSErrorP13errorUserInfoSDySSypGvp":{"name":"errorUserInfo","parent_name":"RequireError"},"Structs/PollingDefaults.html#/s:6Nimble15PollingDefaultsV7timeoutAA0A12TimeIntervalOvpZ":{"name":"timeout","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"PollingDefaults"},"Structs/PollingDefaults.html#/s:6Nimble15PollingDefaultsV12pollIntervalAA0a4TimeE0OvpZ":{"name":"pollInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"PollingDefaults"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV10expressionAA0B10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV11customErrors0E0_pSgvp":{"name":"customError","abstract":"\u003cp\u003eA custom error to throw.","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV10expression11customErrorACyxGAA0B10ExpressionVyxG_s0F0_pSgtcfc":{"name":"init(expression:customError:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV6verifyyxSb_AA14FailureMessageCxSgtKF":{"name":"verify(_:_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV2to_11descriptionxAA7MatcherVyxG_SSSgtYaKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5toNot_11descriptionxAA7MatcherVyxG_SSSgtYaKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5notTo_11descriptionxAA7MatcherVyxG_SSSgtYaKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV2to_11descriptionxAA0B7MatcherVyxG_SSSgtYaKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5toNot_11descriptionxAA0B7MatcherVyxG_SSSgtYaKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV5notTo_11descriptionxAA0B7MatcherVyxG_SSSgtYaKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7toNever_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7neverTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8toAlways_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7toNever_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV7neverTo_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8toAlways_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/AsyncRequirement.html#/s:6Nimble16AsyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA0B7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV10expressionAA10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV11customErrors0E0_pSgvp":{"name":"customError","abstract":"\u003cp\u003eA custom error to throw.","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV10expression11customErrorACyxGAA10ExpressionVyxG_s0F0_pSgtcfc":{"name":"init(expression:customError:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV6verifyyxSb_AA14FailureMessageCxSgtKF":{"name":"verify(_:_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV2to_11descriptionxAA7MatcherVyxG_SSSgtKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5toNot_11descriptionxAA7MatcherVyxG_SSSgtKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5notTo_11descriptionxAA7MatcherVyxG_SSSgtKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV2to_11descriptionxAA12AsyncMatcherVyxG_SSSgtYaKF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5toNot_11descriptionxAA12AsyncMatcherVyxG_SSSgtYaKF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV5notTo_11descriptionxAA12AsyncMatcherVyxG_SSSgtYaKF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eRequire the actual value using a matcher to match by checking continuously","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7toNever_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7neverTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8toAlways_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7toNever_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7neverTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8toAlways_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA7MatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV12toEventually_7timeout12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toEventuallyNot_7timeout12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV15toNotEventually_7timeout12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeI0OALSSSgtYaKF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7toNever_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV7neverTo_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8toAlways_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/SyncRequirement.html#/s:6Nimble15SyncRequirementV8alwaysTo_5until12pollInterval11descriptionxAA12AsyncMatcherVyxG_AA0a4TimeH0OALSSSgtYaKF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncRequirement"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV6statusAA0B6StatusOvp":{"name":"status","abstract":"\u003cp\u003eStatus indicates if the matcher matches, does not match, or fails.\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV7messageAA18ExpectationMessageOvp":{"name":"message","abstract":"\u003cp\u003eThe error message that can be displayed if it does not match\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV6status7messageAcA0B6StatusO_AA18ExpectationMessageOtcfc":{"name":"init(status:message:)","abstract":"\u003cp\u003eConstructs a new MatcherResult with a given status and error message\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV4bool7messageACSb_AA18ExpectationMessageOtcfc":{"name":"init(bool:message:)","abstract":"\u003cp\u003eShorthand to MatcherResult(status: MatcherStatus(bool: bool), message: message)\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV9toBoolean11expectationSbAA16ExpectationStyleO_tF":{"name":"toBoolean(expectation:)","abstract":"\u003cp\u003eConverts the result to a boolean based on what the expectation intended\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/MatcherResult.html#/s:6Nimble13MatcherResultV12toObjectiveCAA010NMBMatcherC0CyF":{"name":"toObjectiveC()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MatcherResult"},"Structs/ExpectationNil.html#/s:s23ExpressibleByNilLiteralP03nilD0xyt_tcfc":{"name":"init(nilLiteral:)","parent_name":"ExpectationNil"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherVyACyxGAA0C6ResultVAA0B10ExpressionVyxGYaKccfc":{"name":"init(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV9satisfiesyAA0C6ResultVAA0B10ExpressionVyxGYaKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUses a matcher on a given value to see if it passes the matcher.\u003c/p\u003e","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV6define7matcherACyxGAA0C6ResultVAA0B10ExpressionVyxGYaKc_tFZ":{"name":"define(matcher:)","abstract":"\u003cp\u003eLike Matcher() constructor, but automatically guard against nil (actual) values\u003c/p\u003e","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV6define_7matcherACyxGSS_AA0C6ResultVAA0B10ExpressionVyxG_AA18ExpectationMessageOtYaKctFZ":{"name":"define(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV13defineNilable_7matcherACyxGSS_AA0C6ResultVAA0B10ExpressionVyxG_AA18ExpectationMessageOtYaKctFZ":{"name":"defineNilable(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV6simple_7matcherACyxGSS_AA0C6StatusOAA0B10ExpressionVyxGYaKctFZ":{"name":"simple(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV13simpleNilable_7matcherACyxGSS_AA0C6StatusOAA0B10ExpressionVyxGYaKctFZ":{"name":"simpleNilable(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"AsyncMatcher"},"Structs/AsyncMatcher.html#/s:6Nimble12AsyncMatcherV13requireNonNilACyxGvp":{"name":"requireNonNil","abstract":"\u003cp\u003eReturns a new Matcher based on the current one that always fails if nil is given as","parent_name":"AsyncMatcher"},"Structs/Matcher.html#/s:6Nimble7MatcherVyACyxGAA0B6ResultVAA10ExpressionVyxGKccfc":{"name":"init(_:)","abstract":"\u003cp\u003eConstructs a matcher that knows how take a given value\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV9satisfiesyAA0B6ResultVAA10ExpressionVyxGKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUses a matcher on a given value to see if it passes the matcher.\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV9satisfiesyAA0B6ResultVAA15AsyncExpressionVyxGYaKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV6define7matcherACyxGAA0B6ResultVAA10ExpressionVyxGKc_tFZ":{"name":"define(matcher:)","abstract":"\u003cp\u003eLike Matcher() constructor, but automatically guard against nil (actual) values\u003c/p\u003e","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV6define_7matcherACyxGSS_AA0B6ResultVAA10ExpressionVyxG_AA18ExpectationMessageOtKctFZ":{"name":"define(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV13defineNilable_7matcherACyxGSS_AA0B6ResultVAA10ExpressionVyxG_AA18ExpectationMessageOtKctFZ":{"name":"defineNilable(_:matcher:)","abstract":"\u003cp\u003eDefines a matcher with a default message that can be returned in the closure","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV6simple_7matcherACyxGSS_AA0B6StatusOAA10ExpressionVyxGKctFZ":{"name":"simple(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV13simpleNilable_7matcherACyxGSS_AA0B6StatusOAA10ExpressionVyxGKctFZ":{"name":"simpleNilable(_:matcher:)","abstract":"\u003cp\u003eProvides a simple matcher definition that provides no control over the predefined","parent_name":"Matcher"},"Structs/Matcher.html#/s:6Nimble7MatcherV13requireNonNilACyxGvp":{"name":"requireNonNil","abstract":"\u003cp\u003eReturns a new Matcher based on the current one that always fails if nil is given as","parent_name":"Matcher"},"Structs/Expression.html#/s:6Nimble10ExpressionV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV9isClosureSbvp":{"name":"isClosure","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV10expression8location9isClosureACyxGxSgyKc_AA14SourceLocationCSbtcfc":{"name":"init(expression:location:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV08memoizedB08location14withoutCaching9isClosureACyxGxSgSbKc_AA14SourceLocationCS2btcfc":{"name":"init(memoizedExpression:location:withoutCaching:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV4castyACyqd__Gqd__SgxSgKclF":{"name":"cast(_:)","abstract":"\u003cp\u003eReturns a new Expression from the given expression. Identical to a map()","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV8evaluatexSgyKF":{"name":"evaluate()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV14withoutCachingACyxGyF":{"name":"withoutCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV11withCachingACyxGyF":{"name":"withCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/Expression.html#/s:6Nimble10ExpressionV07toAsyncB0AA0dB0VyxGyF":{"name":"toAsyncExpression()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expression"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV10expressionAA0B10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV6statusAA0C6StatusOvp":{"name":"status","abstract":"\u003cp\u003eThe status of the test after matchers have been evaluated.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV10expressionACyxGAA0B10ExpressionVyxG_tcfc":{"name":"init(expression:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV6verifyyACyxGSb_AA14FailureMessageCtF":{"name":"verify(_:_:)","abstract":"\u003cp\u003eTakes the result of a test and passes it to the assertion handler.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2to_11descriptionACyxGAA7MatcherVyxG_SSSgtYaF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5toNot_11descriptionACyxGAA7MatcherVyxG_SSSgtYaF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5notTo_11descriptionACyxGAA7MatcherVyxG_SSSgtYaF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2to_11descriptionACyxGAA0B7MatcherVyxG_SSSgtYaF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5toNot_11descriptionACyxGAA0B7MatcherVyxG_SSSgtYaF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV5notTo_11descriptionACyxGAA0B7MatcherVyxG_SSSgtYaF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2eeoiyyACyxG_AA0C3NilVtYaFZ":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV2neoiyyACyxG_AA0C3NilVtYaFZ":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/AsyncExpectation.html#/s:6Nimble16AsyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA0B7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"AsyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV10expressionAA10ExpressionVyxGvp":{"name":"expression","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV6statusAA0C6StatusOvp":{"name":"status","abstract":"\u003cp\u003eThe status of the test after matchers have been evaluated.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV10expressionACyxGAA10ExpressionVyxG_tcfc":{"name":"init(expression:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV6verifyyACyxGSb_AA14FailureMessageCtF":{"name":"verify(_:_:)","abstract":"\u003cp\u003eTakes the result of a test and passes it to the assertion handler.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2to_11descriptionACyxGAA7MatcherVyxG_SSSgtF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5toNot_11descriptionACyxGAA7MatcherVyxG_SSSgtF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5notTo_11descriptionACyxGAA7MatcherVyxG_SSSgtF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2to_11descriptionACyxGAA12AsyncMatcherVyxG_SSSgtYaF":{"name":"to(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5toNot_11descriptionACyxGAA12AsyncMatcherVyxG_SSSgtYaF":{"name":"toNot(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV5notTo_11descriptionACyxGAA12AsyncMatcherVyxG_SSSgtYaF":{"name":"notTo(_:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match.\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2eeoiyyACyxG_AA0C3NilVtFZ":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV2neoiyyACyxG_AA0C3NilVtFZ":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeI0OAMSSSgtYaF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA12AsyncMatcherVyxG_AA0a4TimeH0OAMSSSgtYaF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV12toEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"toEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to match by checking continuously","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toEventuallyNot_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtF":{"name":"toEventuallyNot(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV15toNotEventually_7timeout12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeI0OAMSSSgtF":{"name":"toNotEventually(_:timeout:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to not match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7toNever_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"toNever(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV7neverTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"neverTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to never match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8toAlways_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"toAlways(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/SyncExpectation.html#/s:6Nimble15SyncExpectationV8alwaysTo_5until12pollInterval11descriptionACyxGAA7MatcherVyxG_AA0a4TimeH0OAMSSSgtF":{"name":"alwaysTo(_:until:pollInterval:description:)","abstract":"\u003cp\u003eTests the actual value using a matcher to always match by checking","parent_name":"SyncExpectation"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV9isClosureSbvp":{"name":"isClosure","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV10expression8location9isClosureACyxGxSgyYaKc_AA14SourceLocationCSbtcfc":{"name":"init(expression:location:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV08memoizedC08location14withoutCaching9isClosureACyxGxSgSbYaKc_AA14SourceLocationCS2btcfc":{"name":"init(memoizedExpression:location:withoutCaching:isClosure:)","abstract":"\u003cp\u003eCreates a new expression struct. Normally, expect(\u0026hellip;) will manage this","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV013toSynchronousC0AA0C0VyxGyYaF":{"name":"toSynchronousExpression()","abstract":"\u003cp\u003eCreates a new synchronous expression, for use in Matchers.\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV4castyACyqd__Gqd__SgxSgKclF":{"name":"cast(_:)","abstract":"\u003cp\u003eReturns a new Expression from the given expression. Identical to a map()","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV4castyACyqd__Gqd__SgxSgYaKclF":{"name":"cast(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV8evaluatexSgyYaKF":{"name":"evaluate()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV14withoutCachingACyxGyF":{"name":"withoutCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AsyncExpression.html#/s:6Nimble15AsyncExpressionV11withCachingACyxGyF":{"name":"withCaching()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncExpression"},"Structs/AssertionRecord.html#/s:6Nimble15AssertionRecordV7successSbvp":{"name":"success","abstract":"\u003cp\u003eWhether the assertion succeeded or failed\u003c/p\u003e","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html#/s:6Nimble15AssertionRecordV7messageAA14FailureMessageCvp":{"name":"message","abstract":"\u003cp\u003eThe failure message the assertion would display on failure.\u003c/p\u003e","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html#/s:6Nimble15AssertionRecordV8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eThe source location the expectation occurred on.\u003c/p\u003e","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AssertionRecord"},"Structs/AssertionRecord.html":{"name":"AssertionRecord","abstract":"\u003cp\u003eA data structure that stores information about an assertion when"},"Structs/AsyncExpression.html":{"name":"AsyncExpression","abstract":"\u003cp\u003eExpression represents the closure of the value inside expect(\u0026hellip;)."},"Structs/SyncExpectation.html":{"name":"SyncExpectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/AsyncExpectation.html":{"name":"AsyncExpectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/Expression.html":{"name":"Expression","abstract":"\u003cp\u003eExpression represents the closure of the value inside expect(\u0026hellip;)."},"Structs/Matcher.html":{"name":"Matcher","abstract":"\u003cp\u003eA Matcher is part of the new matcher API that provides assertions to expectations.\u003c/p\u003e"},"Structs/AsyncMatcher.html":{"name":"AsyncMatcher","abstract":"\u003cp\u003eAn AsyncMatcher is part of the new matcher API that provides assertions to expectations.\u003c/p\u003e"},"Structs/ExpectationNil.html":{"name":"ExpectationNil","abstract":"\u003cp\u003eRepresents \u003ccode\u003enil\u003c/code\u003e value to be used with the operator overloads for \u003ccode\u003ebeNil\u003c/code\u003e.\u003c/p\u003e"},"Structs/MatcherResult.html":{"name":"MatcherResult","abstract":"\u003cp\u003eThe value that a Matcher returns to describe if the given (actual) value matches the"},"Structs/SyncRequirement.html":{"name":"SyncRequirement","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/AsyncRequirement.html":{"name":"AsyncRequirement","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Structs/PollingDefaults.html":{"name":"PollingDefaults","abstract":"\u003cp\u003eIf you are running on a slower machine, it could be useful to increase the default timeout value"},"Structs/RequireError.html":{"name":"RequireError","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/TestOutputStringConvertible.html#/s:6Nimble27TestOutputStringConvertibleP15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"TestOutputStringConvertible"},"Protocols/NMBComparable.html#/c:@M@Nimble@objc(pl)NMBComparable(im)NMB_compare:":{"name":"NMB_compare(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBComparable"},"Protocols/NMBDoubleConvertible.html#/s:6Nimble20NMBDoubleConvertibleP11doubleValueSdvp":{"name":"doubleValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBDoubleConvertible"},"Protocols/NMBOrderedCollection.html#/s:6Nimble20NMBOrderedCollectionP6object2atypSi_tF":{"name":"object(at:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBOrderedCollection"},"Protocols/NMBCollection.html#/s:6Nimble13NMBCollectionP5countSivp":{"name":"count","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBCollection"},"Protocols/NMBContainer.html#/s:6Nimble12NMBContainerP8containsySbypF":{"name":"contains(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBContainer"},"Protocols/AsyncableMatcher.html#/s:6Nimble16AsyncableMatcherP5ValueQa":{"name":"Value","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncableMatcher"},"Protocols/AsyncableMatcher.html#/s:6Nimble16AsyncableMatcherP9satisfiesyAA0C6ResultVAA15AsyncExpressionVy5ValueQzGYaKF":{"name":"satisfies(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AsyncableMatcher"},"Protocols/Expectation.html#/s:6Nimble11ExpectationP8locationAA14SourceLocationCvp":{"name":"location","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Expectation"},"Protocols/Expectation.html#/s:6Nimble11ExpectationP6statusAA0B6StatusOvp":{"name":"status","abstract":"\u003cp\u003eThe status of the test after matchers have been evaluated.\u003c/p\u003e","parent_name":"Expectation"},"Protocols/Expectation.html#/s:6Nimble11ExpectationP6verifyyxSb_AA14FailureMessageCtF":{"name":"verify(_:_:)","abstract":"\u003cp\u003eTakes the result of a test and passes it to the assertion handler.\u003c/p\u003e","parent_name":"Expectation"},"Protocols/Expectation.html#/s:6Nimble11ExpectationPAAE9onFailure5throwys5Error_p_tKF":{"name":"onFailure(throw:)","abstract":"\u003cp\u003eThrows the supplied error if the expectation has previously failed.\u003c/p\u003e","parent_name":"Expectation"},"Protocols/AssertionHandler.html#/s:6Nimble16AssertionHandlerP6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionHandler"},"Protocols/AssertionHandler.html":{"name":"AssertionHandler","abstract":"\u003cp\u003eProtocol for the assertion handler that Nimble uses for all expectations.\u003c/p\u003e"},"Protocols/Expectation.html":{"name":"Expectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/AsyncableMatcher.html":{"name":"AsyncableMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/NMBContainer.html":{"name":"NMBContainer","abstract":"\u003cp\u003eProtocol for types that support contain() matcher.\u003c/p\u003e"},"Protocols/NMBCollection.html":{"name":"NMBCollection","abstract":"\u003cp\u003eProtocol for types that support only beEmpty(), haveCount() matchers\u003c/p\u003e"},"Protocols/NMBOrderedCollection.html":{"name":"NMBOrderedCollection","abstract":"\u003cp\u003eProtocol for types that support beginWith(), endWith(), beEmpty() matchers\u003c/p\u003e"},"Protocols/NMBDoubleConvertible.html":{"name":"NMBDoubleConvertible","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Protocols/NMBComparable.html":{"name":"NMBComparable","abstract":"\u003cp\u003eProtocol for types to support beLessThan(), beLessThanOrEqualTo(),"},"Protocols/TestOutputStringConvertible.html":{"name":"TestOutputStringConvertible","abstract":"\u003cp\u003eA type with a customized test output text representation.\u003c/p\u003e"},"Functions.html#/s:6Nimble20withAssertionHandler_4file4line7closureyAA0cD0_p_SSSuyyYaKXEtYaF":{"name":"withAssertionHandler(_:file:line:closure:)","abstract":"\u003cp\u003eAllows you to temporarily replace the current Nimble assertion handler with"},"Functions.html#/s:6Nimble18gatherExpectations8silently7closureSayAA15AssertionRecordVGSb_yyYaXEtYaF":{"name":"gatherExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble25gatherFailingExpectations8silently7closureSayAA15AssertionRecordVGSb_yyYaXEtYaF":{"name":"gatherFailingExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures failed expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble20withAssertionHandler_4file4line7closureyAA0cD0_p_SSSuyyKXEtF":{"name":"withAssertionHandler(_:file:line:closure:)","abstract":"\u003cp\u003eAllows you to temporarily replace the current Nimble assertion handler with"},"Functions.html#/s:6Nimble18gatherExpectations8silently7closureSayAA15AssertionRecordVGSb_yyXEtF":{"name":"gatherExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble25gatherFailingExpectations8silently7closureSayAA15AssertionRecordVGSb_yyXEtF":{"name":"gatherFailingExpectations(silently:closure:)","abstract":"\u003cp\u003eCaptures failed expectations that occur in the given closure. Note that all"},"Functions.html#/s:6Nimble13recordFailure_8locationySS_AA14SourceLocationCtF":{"name":"recordFailure(_:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKctlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyxGSS_SuxyYaKcyXEtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKcyXEtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA16AsyncExpectationVyytGSS_SuyyYaKcyXEtF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKXAtYalF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated."},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyxGSS_SuxyYaKcyXKtYalF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyxGSS_SuxSgyYaKcyXKtYalF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expecta4file4line_AA16AsyncExpectationVyytGSS_SuyyYaKcyXKtYaF":{"name":"expecta(file:line:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncExpectation.html\"\u003eAsyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble9waitUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycYactYaF":{"name":"waitUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eWait asynchronously until the done closure is called or the timeout has been reached.\u003c/p\u003e"},"Functions.html#/s:6Nimble9waitUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycctYaF":{"name":"waitUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eWait asynchronously until the done closure is called or the timeout has been reached.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKXAtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxyKcyXKtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKcyXKtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA15SyncRequirementVyytGSS_Sus0F0_pSgyyKcyXKtF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKXAtlF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxyKcyXKtlF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyxGSS_Sus0F0_pSgxSgyKcyXKtlF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requires4file4line11customError_AA15SyncRequirementVyytGSS_Sus0F0_pSgyyKcyXKtF":{"name":"requires(file:line:customError:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncRequirement.html\"\u003eSyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKctlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxyYaKcyXEtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7require4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKcyXEtlF":{"name":"require(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requirea4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKXAtYalF":{"name":"requirea(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requirea4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxyYaKcyXKtYalF":{"name":"requirea(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble8requirea4file4line11customError_AA16AsyncRequirementVyxGSS_Sus0F0_pSgxSgyYaKcyXKtYalF":{"name":"requirea(file:line:customError:_:)","abstract":"\u003cp\u003eMake an \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/AsyncRequirement.html\"\u003eAsyncRequirement\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyKXAtKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyKcyXKtKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwraps4file4line11customError_xSS_Sus0F0_pSgxSgyKXAtKlF":{"name":"unwraps(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwraps4file4line11customError_xSS_Sus0F0_pSgxSgyKcyXKtKlF":{"name":"unwraps(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyYaKctYaKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble6unwrap4file4line11customError_xSS_Sus0F0_pSgxSgyYaKcyXEtYaKlF":{"name":"unwrap(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwrapa4file4line11customError_xSS_Sus0F0_pSgxSgyYaKXAtYaKlF":{"name":"unwrapa(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble7unwrapa4file4line11customError_xSS_Sus0F0_pSgxSgyYaKcyXKtYaKlF":{"name":"unwrapa(file:line:customError:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble9waitUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycctF":{"name":"waitUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eWait asynchronously until the done closure is called or the timeout has been reached.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyxGSS_SuxSgyKXAtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyxGSS_SuxyKcyXKtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyxGSS_SuxSgyKcyXKtlF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble6expect4file4line_AA15SyncExpectationVyytGSS_SuyyKcyXKtF":{"name":"expect(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked.\u003c/p\u003e"},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyxGSS_SuxSgyKXAtlF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The value given is lazily evaluated."},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyxGSS_SuxyKcyXKtlF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyxGSS_SuxSgyKcyXKtlF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble7expects4file4line_AA15SyncExpectationVyytGSS_SuyyKcyXKtF":{"name":"expects(file:line:_:)","abstract":"\u003cp\u003eMake a \u003ccode\u003e\u003ca href=\"36f8f5912051ae747ef441d6511ca4cbStructs/SyncExpectation.html\"\u003eSyncExpectation\u003c/a\u003e\u003c/code\u003e on a given actual value. The closure is lazily invoked."},"Functions.html#/s:6Nimble4fail_8locationySS_AA14SourceLocationCtF":{"name":"fail(_:location:)","abstract":"\u003cp\u003eAlways fails the test with a message and a specified location.\u003c/p\u003e"},"Functions.html#/s:6Nimble4fail_4file4lineySS_SSSutF":{"name":"fail(_:file:line:)","abstract":"\u003cp\u003eAlways fails the test with a message.\u003c/p\u003e"},"Functions.html#/s:6Nimble4fail_4lineySS_SutF":{"name":"fail(_:line:)","abstract":"\u003cp\u003eAlways fails the test.\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA7MatcherVyxGSb7ElementQzKcSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA7MatcherVyxGSS_Sb7ElementQzKctSTRzlF":{"name":"allPass(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA7MatcherVyxGADy7ElementQzGSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA12AsyncMatcherVyxGSb7ElementQzYaKcSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA12AsyncMatcherVyxGSS_Sb7ElementQzYaKctSTRzlF":{"name":"allPass(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7allPassyAA12AsyncMatcherVyxGADy7ElementQzGSTRzlF":{"name":"allPass(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble9beAKindOfyAA7MatcherVyypGxmlF":{"name":"beAKindOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an instance of the given class.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beAKindOfyAA7MatcherVySo8NSObjectCGyXlXpF":{"name":"beAKindOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an instance of the given class."},"Functions.html#/s:6Nimble14beAnInstanceOfyAA7MatcherVyypGxmlF":{"name":"beAnInstanceOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an \u003cem\u003eexact\u003c/em\u003e instance of the given class.\u003c/p\u003e"},"Functions.html#/s:6Nimble14beAnInstanceOfyAA7MatcherVySo8NSObjectCGyXlXpF":{"name":"beAnInstanceOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is an instance of the given class."},"Functions.html#/s:6Nimble12defaultDeltaxySFRzlF":{"name":"defaultDelta()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble9beCloseTo_6withinAA7MatcherVyxGx_xtSFRzlF":{"name":"beCloseTo(_:within:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is close to another. This is used for floating"},"Functions.html#/s:6Nimble9beCloseTo_6withinAA7MatcherVyxGx_SdtAA20NMBDoubleConvertibleRzlF":{"name":"beCloseTo(_:within:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is close to another. This is used for floating"},"Functions.html#/s:6Nimble9beCloseTo_6withinAA7MatcherVyq_Gq__xtSFRz7ElementQy_RszSlR_r0_lF":{"name":"beCloseTo(_:within:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_xtSlRzSF7ElementRpzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_xtYaSlRzSF7ElementRpzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_xtSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_xtYaSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_x8expected_x5deltattSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_x8expected_x5deltattYaSFRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_x8expected_x5deltattSFRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_x8expected_x5deltattYaSFRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_xtAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_xtYaAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA15SyncExpectationVyxG_x8expected_Sd5deltattAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003dchoiyyAA16AsyncExpectationVyxG_x8expected_Sd5deltattYaAA20NMBDoubleConvertibleRzlF":{"name":"≈(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_x8expected_Sd5deltattAA20NMBDoubleConvertibleRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_x8expected_Sd5deltattYaAA20NMBDoubleConvertibleRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003obaoiyx8expected_x5deltatx_xtSFRzlF":{"name":"±(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble003obaoiyx8expected_Sd5deltatx_SdtAA20NMBDoubleConvertibleRzlF":{"name":"±(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyxGySTRzlF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyxGys10SetAlgebraRzlF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyxGySTRzs10SetAlgebraRzlF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySSGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySo8NSStringCGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySo12NSDictionaryCGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVySo7NSArrayCGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble7beEmptyAA7MatcherVyAA13NMBCollection_pGyF":{"name":"beEmpty()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when a value is \u0026ldquo;empty\u0026rdquo;. For collections, this"},"Functions.html#/s:6Nimble13beGreaterThanyAA7MatcherVyxGxSgSLRzlF":{"name":"beGreaterThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble13beGreaterThanyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beGreaterThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA15SyncExpectationVyxG_xSgtAA13NMBComparableRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1goiyyAA16AsyncExpectationVyxG_xSgtYaAA13NMBComparableRzlF":{"name":"\u003e(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble22beGreaterThanOrEqualToyAA7MatcherVyxGxSgSLRzlF":{"name":"beGreaterThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than"},"Functions.html#/s:6Nimble2geoiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2geoiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble22beGreaterThanOrEqualToyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beGreaterThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is greater than"},"Functions.html#/s:6Nimble2geoiyyAA15SyncExpectationVyxG_xtAA13NMBComparableRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2geoiyyAA16AsyncExpectationVyxG_xtYaAA13NMBComparableRzlF":{"name":"\u003e=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble13beIdenticalToyAA7MatcherVyyXlGyXlSgF":{"name":"beIdenticalTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is the same instance"},"Functions.html#/s:6Nimble3eeeoiyyAA15SyncExpectationVyyXlG_yXlSgtF":{"name":"===(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble3eeeoiyyAA16AsyncExpectationVyyXlG_yXlSgtYaF":{"name":"===(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble3neeoiyyAA15SyncExpectationVyyXlG_yXlSgtF":{"name":"!==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble3neeoiyyAA16AsyncExpectationVyyXlG_yXlSgtYaF":{"name":"!==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2beyAA7MatcherVyyXlGyXlSgF":{"name":"be(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is the same instance"},"Functions.html#/s:6Nimble10beLessThanyAA7MatcherVyxGxSgSLRzlF":{"name":"beLessThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble10beLessThanyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beLessThan(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than the expected value.\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA15SyncExpectationVyxG_xSgtAA13NMBComparableRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble1loiyyAA16AsyncExpectationVyxG_xSgtYaAA13NMBComparableRzlF":{"name":"\u003c(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble19beLessThanOrEqualToyAA7MatcherVyxGxSgSLRzlF":{"name":"beLessThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than"},"Functions.html#/s:6Nimble2leoiyyAA15SyncExpectationVyxG_xtSLRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2leoiyyAA16AsyncExpectationVyxG_xtYaSLRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble19beLessThanOrEqualToyAA7MatcherVyxGxSgAA13NMBComparableRzlF":{"name":"beLessThanOrEqualTo(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is less than"},"Functions.html#/s:6Nimble2leoiyyAA15SyncExpectationVyxG_xtAA13NMBComparableRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2leoiyyAA16AsyncExpectationVyxG_xtYaAA13NMBComparableRzlF":{"name":"\u003c=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble6beTrueAA7MatcherVySbGyF":{"name":"beTrue()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is exactly true."},"Functions.html#/s:6Nimble7beFalseAA7MatcherVySbGyF":{"name":"beFalse()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is exactly false."},"Functions.html#/s:6Nimble8beTruthyAA7MatcherVyxGySQRzs27ExpressibleByBooleanLiteralRzlF":{"name":"beTruthy()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is not logically false.\u003c/p\u003e"},"Functions.html#/s:6Nimble7beFalsyAA7MatcherVyxGySQRzs27ExpressibleByBooleanLiteralRzlF":{"name":"beFalsy()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is logically false."},"Functions.html#/s:6Nimble5beNilAA7MatcherVyxGylF":{"name":"beNil()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is nil.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beSuccess4testAA7MatcherVys6ResultOyxq_GGyxcSg_ts5ErrorR_r0_lF":{"name":"beSuccess(test:)","abstract":"\u003cp\u003eA Nimble matcher for Result that succeeds when the actual value is success.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beFailure4testAA7MatcherVys6ResultOyxq_GGyq_cSg_ts5ErrorR_r0_lF":{"name":"beFailure(test:)","abstract":"\u003cp\u003eA Nimble matcher for Result that succeeds when the actual value is failure.\u003c/p\u003e"},"Functions.html#/s:6Nimble6beVoidAA7MatcherVyytGyF":{"name":"beVoid()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is Void.\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyytG_yttF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyytG_yttYaF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyytG_yttF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyytG_yttYaF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble8beWithinyAA7MatcherVyxGSnyxGSLRzlF":{"name":"beWithin(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is within given range.\u003c/p\u003e"},"Functions.html#/s:6Nimble8beWithinyAA7MatcherVyxGSNyxGSLRzlF":{"name":"beWithin(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is within given range.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beginWithyAA7MatcherVyxG7ElementQzSTRzSQAGRQlF":{"name":"beginWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence\u0026rsquo;s first element"},"Functions.html#/s:6Nimble9beginWithyAA7MatcherVyAA20NMBOrderedCollection_pGypF":{"name":"beginWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection\u0026rsquo;s first element"},"Functions.html#/s:6Nimble9beginWithyAA7MatcherVySSGSSF":{"name":"beginWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains expected substring"},"Functions.html#/s:6Nimble9beginWith6prefixAA7MatcherVyxGq_Sg_tSTRzSTR_SQ7ElementRpzAHQy_AIRSr0_lF":{"name":"beginWith(prefix:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the exepected sequence is a prefix of the actual sequence.\u003c/p\u003e"},"Functions.html#/s:6Nimble9beginWith6prefix2byAA7MatcherVyxGq_Sg_Sb7ElementQz_AIQy_tctSTRzSTR_r0_lF":{"name":"beginWith(prefix:by:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the expected sequence is the prefix of the actual sequence, using the given matcher as the equivalence test.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxG7ElementQzd_tSTRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxGSay7ElementQzGSTRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxG7ElementQzd_ts10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxGSay7ElementQzGs10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxG7ElementSTQzd_tSTRzs10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyxGSay7ElementSTQzGSTRzs10SetAlgebraRzSQAGRQlF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set contains the expected values.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySSGSSd_tF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains the expected substring.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySSGSaySSGF":{"name":"contain(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySo8NSStringCGAFd_tF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains the expected substring.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVySo8NSStringCGSayAFGF":{"name":"contain(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyAA12NMBContainer_pGypSgd_tF":{"name":"contain(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection contains the expected object.\u003c/p\u003e"},"Functions.html#/s:6Nimble7containyAA7MatcherVyAA12NMBContainer_pGSayypSgGF":{"name":"contain(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble24containElementSatisfyingyAA7MatcherVyxGSb0C0Qzc_SStSTRzlF":{"name":"containElementSatisfying(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble24containElementSatisfyingyAA12AsyncMatcherVyxGSb0C0QzYac_SStSTRzlF":{"name":"containElementSatisfying(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble13elementsEqualyAA7MatcherVyxGq_SgSTRzSTR_SQ7ElementRpzAGQy_AHRSr0_lF":{"name":"elementsEqual(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence and the exepected sequence contain the same elements in"},"Functions.html#/s:6Nimble13elementsEqual_2byAA7MatcherVyxGq_Sg_Sb7ElementQz_AHQy_tctSTRzSTR_r0_lF":{"name":"elementsEqual(_:by:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence and the exepected sequence contain equivalent elements in"},"Functions.html#/s:6Nimble7endWithyAA7MatcherVyxG7ElementQzSTRzSQAGRQlF":{"name":"endWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual sequence\u0026rsquo;s last element"},"Functions.html#/s:6Nimble7endWithyAA7MatcherVyAA20NMBOrderedCollection_pGypF":{"name":"endWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection\u0026rsquo;s last element"},"Functions.html#/s:6Nimble7endWithyAA7MatcherVySSGSSF":{"name":"endWith(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string contains the expected substring"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_tGx_q_tSgSQRzSQR_r0_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_tG_x_q_tSgtSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_tG_x_q_tSgtYaSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_tG_x_q_tSgtSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_tG_x_q_tSgtYaSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_tGx_q_q0_tSgSQRzSQR_SQR0_r1_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_tG_x_q_q0_tSgtSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_tG_x_q_q0_tSgtYaSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_tG_x_q_q0_tSgtSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_tG_x_q_q0_tSgtYaSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_q1_tGx_q_q0_q1_tSgSQRzSQR_SQR0_SQR1_r2_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_q1_tG_x_q_q0_q1_tSgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_q1_q2_tGx_q_q0_q1_q2_tSgSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_tG_x_q_q0_q1_q2_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyx_q_q0_q1_q2_q3_tGx_q_q0_q1_q2_q3_tSgSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual tuple is equal to the expected tuple."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyx_q_q0_q1_q2_q3_tG_x_q_q0_q1_q2_q3_tSgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_tGGAESgSQRzSQR_r0_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_tGG_AESgtSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_tGG_AESgtYaSQRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_tGG_AESgtSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_tGG_AESgtYaSQRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_tGGAESgSQRzSQR_SQR0_r1_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_tGG_AESgtSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_tGG_AESgtYaSQRzSQR_SQR0_r1_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_tGG_AESgtSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_tGG_AESgtYaSQRzSQR_SQR0_r1_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_q1_tGGAESgSQRzSQR_SQR0_SQR1_r2_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_q1_tGG_AESgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_q1_tGG_AESgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_q1_tGG_AESgtSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_q1_tGG_AESgtYaSQRzSQR_SQR0_SQR1_r2_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_q1_q2_tGGAESgSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_r3_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayx_q_q0_q1_q2_q3_tGGAESgSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual array of tuples is equal to the expected array of tuples."},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayx_q_q0_q1_q2_q3_tGG_AESgtYaSQRzSQR_SQR0_SQR1_SQR2_SQR3_r4_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyxGxSQRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is equal to the expected value."},"Functions.html#/s:6Nimble5equalyAA7MatcherVySayxSgGGAFSQRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher allowing comparison of collection with optional type\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyxGxSgSQRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value is equal to the expected value."},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESgSHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESLRzSHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVyShyxGGAESgSLRzSHRzlF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual set is equal to the expected set.\u003c/p\u003e"},"Functions.html#/s:6Nimble5equalyAA7MatcherVySDyxq_GGSDyxq_SgGSHRzSQR_r0_lF":{"name":"equal(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual dictionary is equal to the expected dictionary\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_xtSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyxG_xSgtSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyxG_xtSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyxG_xSgtSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySayxGG_AESgtSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySayxGG_AESgtSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AEtSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AESgtSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AEtSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AESgtSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AEtSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVyShyxGG_AESgtSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AEtSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVyShyxGG_AESgtSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA15SyncExpectationVySDyxq_GG_AESgtSHRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA15SyncExpectationVySDyxq_GG_AESgtSHRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_xtYaSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyxG_xSgtYaSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyxG_xtYaSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyxG_xSgtYaSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySayxGG_AESgtYaSQRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySayxGG_AESgtYaSQRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AEtYaSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AEtYaSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AEtYaSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSLRzSHRzlF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AEtYaSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVyShyxGG_AESgtYaSLRzSHRzlF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2eeoiyyAA16AsyncExpectationVySDyxq_GG_AESgtYaSHRzSQR_r0_lF":{"name":"==(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble2neoiyyAA16AsyncExpectationVySDyxq_GG_AESgtYaSHRzSQR_r0_lF":{"name":"!=(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble9haveCountyAA7MatcherVyxGSiSlRzlF":{"name":"haveCount(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual Collection\u0026rsquo;s count equals"},"Functions.html#/s:6Nimble9haveCountyAA7MatcherVyAA13NMBCollection_pGSiF":{"name":"haveCount(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual collection\u0026rsquo;s count equals"},"Functions.html#/s:6Nimble3mapyAA7MatcherVyxGq_xKc_ADyq_Gtr0_lF":{"name":"map(_:_:)","abstract":"\u003cp\u003e\u003ccode\u003emap\u003c/code\u003e works by transforming the expression to a value that the given matcher uses.\u003c/p\u003e"},"Functions.html#/s:6Nimble3mapyAA12AsyncMatcherVyxGq_xYaKc_q0_t5ValueQy0_Rs_AA09AsyncableD0R0_r1_lF":{"name":"map(_:_:)","abstract":"\u003cp\u003e\u003ccode\u003emap\u003c/code\u003e works by transforming the expression to a value that the given matcher uses.\u003c/p\u003e"},"Functions.html#/s:6Nimble5matchyAA7MatcherVySSGSSSgF":{"name":"match(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual string satisfies the regular expression"},"Functions.html#/s:6Nimble10matchErroryAA7MatcherVys0C0_pGxsAERzlF":{"name":"matchError(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression evaluates to an"},"Functions.html#/s:6Nimble10matchErroryAA7MatcherVys0C0_pGxSQRzsAERzlF":{"name":"matchError(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression evaluates to an"},"Functions.html#/s:6Nimble10matchErroryAA7MatcherVys0C0_pGxmsAERzlF":{"name":"matchError(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression evaluates to an"},"Functions.html#/s:6Nimble17postNotifications_4fromAA7MatcherVyxGAEySay10Foundation12NotificationVGG_So20NSNotificationCenterCtlF":{"name":"postNotifications(_:from:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble28postDistributedNotifications_4from5namesAA7MatcherVyxGAFySay10Foundation12NotificationVGG_So013NSDistributedI6CenterCShySo18NSNotificationNameaGtlF":{"name":"postDistributedNotifications(_:from:names:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble14raiseException5named6reason8userInfo7closureAA7MatcherVyxGSo15NSExceptionNameaSg_SSSgSo12NSDictionaryCSgySo0J0CcSgtlF":{"name":"raiseException(named:reason:userInfo:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression raises an"},"Functions.html#/s:6Nimble14raiseException5named6reason8userInfo7closureAA7MatcherVyxGSSSg_AJSo12NSDictionaryCSgySo11NSExceptionCcSgtlF":{"name":"raiseException(named:reason:userInfo:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression raises an"},"Functions.html#/s:6Nimble12satisfyAllOfyAA7MatcherVyxGAEd_tlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble12satisfyAllOfyAA7MatcherVyxGSayAEGlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble2aaoiyAA7MatcherVyxGAE_AEtlF":{"name":"\u0026\u0026(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble12satisfyAllOfyAA12AsyncMatcherVyxGAA09AsyncableF0_px5ValueRts_XPd_tlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble12satisfyAllOfyAA12AsyncMatcherVyxGSayAA09AsyncableF0_px5ValueRts_XPGlF":{"name":"satisfyAllOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with all of the matchers"},"Functions.html#/s:6Nimble2aaoiyAA12AsyncMatcherVyxGq__q0_t5ValueQy_RszAA09AsyncableD0R_AaHR0_AFQy0_AGRSr1_lF":{"name":"\u0026\u0026(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA7MatcherVyxGAEd_tlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA7MatcherVyxGSayAEGlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble2oooiyAA7MatcherVyxGAE_AEtlF":{"name":"||(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA12AsyncMatcherVyxGAA09AsyncableF0_px5ValueRts_XPd_tlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble12satisfyAnyOfyAA12AsyncMatcherVyxGSayAA09AsyncableF0_px5ValueRts_XPGlF":{"name":"satisfyAnyOf(_:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual value matches with any of the matchers"},"Functions.html#/s:6Nimble2oooiyAA12AsyncMatcherVyxGq__q0_t5ValueQy_RszAA09AsyncableD0R_AaHR0_AFQy0_AGRSr1_lF":{"name":"||(_:_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/catchBadInstruction(block:)":{"name":"catchBadInstruction(block:)","abstract":"\u003cp\u003eRun the provided block. If a POSIX SIGILL is received, handle it and return a BadInstructionException (which is just an empty object in this POSIX signal version). Otherwise return nil."},"Functions.html#/s:6Nimble14throwAssertionAA7MatcherVyxGylF":{"name":"throwAssertion()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Functions.html#/s:6Nimble10throwErrorAA7MatcherVyxGylF":{"name":"throwError()","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError_7closureAA7MatcherVyq_Gx_ys0C0_pcSgtsAGRzr0_lF":{"name":"throwError(_:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError_7closureAA7MatcherVyq_Gx_yxcSgtSQRzs0C0Rzr0_lF":{"name":"throwError(_:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError9errorType7closureAA7MatcherVyq_Gxm_yxcSgts0C0Rzr0_lF":{"name":"throwError(errorType:closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws an"},"Functions.html#/s:6Nimble10throwError7closureAA7MatcherVyxGys0C0_pc_tlF":{"name":"throwError(closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws any"},"Functions.html#/s:6Nimble10throwError7closureAA7MatcherVyq_Gyxc_ts0C0Rzr0_lF":{"name":"throwError(closure:)","abstract":"\u003cp\u003eA Nimble matcher that succeeds when the actual expression throws any"},"Functions.html#/s:6Nimble7succeedAA7MatcherVyAA15ToSucceedResultOGyF":{"name":"succeed()","abstract":"\u003cp\u003eA Nimble matcher that takes in a closure for validation.\u003c/p\u003e"},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyKXAtKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyKcyXKtKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwraps4file4line_xSS_SuxSgyKXAtKlF":{"name":"pollUnwraps(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwraps4file4line_xSS_SuxSgyKcyXKtKlF":{"name":"pollUnwraps(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyYaKctYaKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble10pollUnwrap4file4line_xSS_SuxSgyYaKcyXEtYaKlF":{"name":"pollUnwrap(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwrapa4file4line_xSS_SuxSgyYaKXAtYaKlF":{"name":"pollUnwrapa(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble11pollUnwrapa4file4line_xSS_SuxSgyYaKcyXKtYaKlF":{"name":"pollUnwrapa(file:line:_:)","abstract":"\u003cp\u003eMakes sure that the async expression evaluates to a non-nil value, otherwise throw an error."},"Functions.html#/s:6Nimble9stringifyySSxSglF":{"name":"stringify(_:)","abstract":"\u003cp\u003eReturns a string appropriate for displaying in test output"},"Functions.html#/s:6Nimble20prettyCollectionTypeySSxlF":{"name":"prettyCollectionType(_:)","abstract":"\u003cp\u003eAttempts to generate a pretty type string for a given value. If the value is of a Objective-C"},"Functions.html#/s:6Nimble20prettyCollectionTypeySSxSlRzlF":{"name":"prettyCollectionType(_:)","abstract":"\u003cp\u003eReturns the type name for a given collection type. This overload is used by Swift"},"Extensions/Data.html#/s:10Foundation4DataV6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Data"},"Extensions/String.html#/s:SS6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"String"},"Extensions/AnySequence.html#/s:s11AnySequenceV6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AnySequence"},"Extensions/Array.html#/s:Sa6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Array"},"Extensions/TimeInterval.html#/s:Sd6NimbleE14nimbleIntervalAA0a4TimeC0Ovp":{"name":"nimbleInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"TimeInterval"},"Extensions/NSString.html#/c:@CM@Nimble@@objc(cs)NSString(im)NMB_compare:":{"name":"NMB_compare(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSString"},"Extensions/NSDate.html#/s:So6NSDateC6NimbleE11doubleValueSdvp":{"name":"doubleValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSDate"},"Extensions/NSDate.html#/s:So6NSDateC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSDate"},"Extensions/Date.html#/s:10Foundation4DateV6NimbleE11doubleValueSdvp":{"name":"doubleValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Date"},"Extensions/Date.html#/s:10Foundation4DateV6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Date"},"Extensions/Date.html#/s:10Foundation4DateV6NimbleE8advanced2byAcD0C12TimeIntervalO_tF":{"name":"advanced(by:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Date"},"Extensions/NSNumber.html#/c:@CM@Nimble@@objc(cs)NSNumber(im)NMB_compare:":{"name":"NMB_compare(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSNumber"},"Extensions/NSNumber.html#/s:So8NSNumberC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSNumber"},"Extensions/NSIndexSet.html#/s:So10NSIndexSetC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSIndexSet"},"Extensions/NSArray.html#/s:So7NSArrayC6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NSArray"},"Extensions/UInt.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt"},"Extensions/Int.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int"},"Extensions/Double.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Double"},"Extensions/Double.html#/s:Sd6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Double"},"Extensions/Float.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Float"},"Extensions/Float.html#/s:Sf6NimbleE15testDescriptionSSvp":{"name":"testDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"Float"},"Extensions/UInt64.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt64"},"Extensions/Int64.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int64"},"Extensions/UInt32.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt32"},"Extensions/Int32.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int32"},"Extensions/UInt16.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt16"},"Extensions/Int16.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int16"},"Extensions/UInt8.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"UInt8"},"Extensions/Int8.html#/s:s27ExpressibleByBooleanLiteralP07booleanD0x0cD4TypeQz_tcfc":{"name":"init(booleanLiteral:)","parent_name":"Int8"},"Extensions/Int8.html":{"name":"Int8"},"Extensions/UInt8.html":{"name":"UInt8"},"Extensions/Int16.html":{"name":"Int16"},"Extensions/UInt16.html":{"name":"UInt16"},"Extensions/Int32.html":{"name":"Int32"},"Extensions/UInt32.html":{"name":"UInt32"},"Extensions/Int64.html":{"name":"Int64"},"Extensions/UInt64.html":{"name":"UInt64"},"Extensions/Float.html":{"name":"Float"},"Extensions/Double.html":{"name":"Double"},"Extensions/Int.html":{"name":"Int"},"Extensions/UInt.html":{"name":"UInt"},"Extensions/NSArray.html":{"name":"NSArray"},"Extensions.html#/c:objc(cs)NSSet":{"name":"NSSet"},"Extensions.html#/c:objc(cs)NSHashTable":{"name":"NSHashTable"},"Extensions.html#/c:objc(cs)NSMapTable":{"name":"NSMapTable"},"Extensions/NSIndexSet.html":{"name":"NSIndexSet"},"Extensions.html#/c:objc(cs)NSDictionary":{"name":"NSDictionary"},"Extensions/NSNumber.html":{"name":"NSNumber"},"Extensions/Date.html":{"name":"Date"},"Extensions/NSDate.html":{"name":"NSDate"},"Extensions/NSString.html":{"name":"NSString"},"Extensions/TimeInterval.html":{"name":"TimeInterval"},"Extensions/Array.html":{"name":"Array"},"Extensions/AnySequence.html":{"name":"AnySequence"},"Extensions/String.html":{"name":"String"},"Extensions/Data.html":{"name":"Data"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO7secondsyACSicACmF":{"name":"seconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO12millisecondsyACSicACmF":{"name":"milliseconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO12microsecondsyACSicACmF":{"name":"microseconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO11nanosecondsyACSicACmF":{"name":"nanoseconds(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:SL1loiySbx_xtFZ":{"name":"\u003c(_:_:)","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO08dispatchbC08Dispatch0ebC0Ovp":{"name":"dispatchTimeInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO11nanosecondss6UInt64Vvp":{"name":"nanoseconds","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"NimbleTimeInterval"},"Enums/NimbleTimeInterval.html#/s:6Nimble0A12TimeIntervalO04timeC0Sdvp":{"name":"timeInterval","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleTimeInterval"},"Enums/ToSucceedResult.html#/s:6Nimble15ToSucceedResultO9succeededyA2CmF":{"name":"succeeded","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ToSucceedResult"},"Enums/ToSucceedResult.html#/s:6Nimble15ToSucceedResultO6failedyACSS_tcACmF":{"name":"failed(reason:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ToSucceedResult"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO7matchesyA2CmF":{"name":"matches","abstract":"\u003cp\u003eMatches indicates if the matcher / matcher passes with the given value\u003c/p\u003e","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO12doesNotMatchyA2CmF":{"name":"doesNotMatch","abstract":"\u003cp\u003eDoesNotMatch indicates if the matcher fails with the given value, but \u003cem\u003ewould\u003c/em\u003e","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO4failyA2CmF":{"name":"fail","abstract":"\u003cp\u003eFail indicates the matcher will never satisfy with the given value in any case.","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO4boolACSb_tcfc":{"name":"init(bool:)","abstract":"\u003cp\u003eConverts a boolean to either .matches (if true) or .doesNotMatch (if false).\u003c/p\u003e","parent_name":"MatcherStatus"},"Enums/MatcherStatus.html#/s:6Nimble13MatcherStatusO12toObjectiveCAA010NMBMatcherC0CyF":{"name":"toObjectiveC()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"MatcherStatus"},"Enums/ExpectationStyle.html#/s:6Nimble16ExpectationStyleO7toMatchyA2CmF":{"name":"toMatch","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ExpectationStyle"},"Enums/ExpectationStyle.html#/s:6Nimble16ExpectationStyleO10toNotMatchyA2CmF":{"name":"toNotMatch","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"ExpectationStyle"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO21expectedActualValueToyACSScACmF":{"name":"expectedActualValueTo(_:)","abstract":"\u003cp\u003eincludes actual value in output (\u0026ldquo;expected to \u003cmessage\u003e, got \u003cactual\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO21expectedCustomValueToyACSS_SStcACmF":{"name":"expectedCustomValueTo(_:actual:)","abstract":"\u003cp\u003euses a custom actual value string in output (\u0026ldquo;expected to \u003cmessage\u003e, got \u003cactual\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO10expectedToyACSScACmF":{"name":"expectedTo(_:)","abstract":"\u003cp\u003eexcludes actual value in output (\u0026ldquo;expected to \u003cmessage\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO4failyACSScACmF":{"name":"fail(_:)","abstract":"\u003cp\u003eallows any free-form message (\u0026ldquo;\u003cmessage\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8prependsyACSS_ACtcACmF":{"name":"prepends(_:_:)","abstract":"\u003cp\u003eNot Fully Implemented Yet.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO7appendsyA2C_SStcACmF":{"name":"appends(_:_:)","abstract":"\u003cp\u003eappends after an existing message (\u0026ldquo;\u003cexpectation\u003e (use beNil() to match nils)\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO7detailsyA2C_SStcACmF":{"name":"details(_:_:)","abstract":"\u003cp\u003eprovides long-form multi-line explainations (\u0026ldquo;\u003cexpectation\u003e\\n\\n\u003cstring\u003e\u0026rdquo;)\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO08expectedC0SSvp":{"name":"expectedMessage","abstract":"\u003cp\u003eReturns the smallest message after the \u0026ldquo;expected to\u0026rdquo; string that summarizes the error.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8appended7messageACSS_tF":{"name":"appended(message:)","abstract":"\u003cp\u003eAppends a message after the primary expectation message\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO17appendedBeNilHintACyF":{"name":"appendedBeNilHint()","abstract":"\u003cp\u003eAppends a message hinting to use beNil() for when the actual value given was nil.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8appended7detailsACSS_tF":{"name":"appended(details:)","abstract":"\u003cp\u003eAppends a detailed (aka - multiline) message after the primary expectation message","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO08replacedB0yA3CcF":{"name":"replacedExpectation(_:)","abstract":"\u003cp\u003eReplaces a primary expectation with one returned by f. Preserves all composite expectations","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO07wrappedB06before5afterACSS_SStF":{"name":"wrappedExpectation(before:after:)","abstract":"\u003cp\u003eWraps a primary expectation with text before and after it.","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO9prepended11expectationACSS_tF":{"name":"prepended(expectation:)","abstract":"\u003cp\u003ePrepends a message by modifying the primary expectation\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationMessage.html#/s:6Nimble18ExpectationMessageO8toString6actual8expected0D0S2S_S2StF":{"name":"toString(actual:expected:to:)","abstract":"\u003cp\u003eConverts the tree of ExpectationMessages into a final built string.\u003c/p\u003e","parent_name":"ExpectationMessage"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO7pendingyA2CmF":{"name":"pending","abstract":"\u003cp\u003eNo matchers have been performed.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO6passedyA2CmF":{"name":"passed","abstract":"\u003cp\u003eAll matchers have passed.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO6failedyA2CmF":{"name":"failed","abstract":"\u003cp\u003eAll matchers have failed.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html#/s:6Nimble17ExpectationStatusO5mixedyA2CmF":{"name":"mixed","abstract":"\u003cp\u003eMultiple matchers have been peformed, with at least one passing and one failing.\u003c/p\u003e","parent_name":"ExpectationStatus"},"Enums/ExpectationStatus.html":{"name":"ExpectationStatus","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/ExpectationMessage.html":{"name":"ExpectationMessage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Enums/ExpectationStyle.html":{"name":"ExpectationStyle","abstract":"\u003cp\u003eThe Expectation style intended for comparison to a MatcherStatus.\u003c/p\u003e"},"Enums/MatcherStatus.html":{"name":"MatcherStatus","abstract":"\u003cp\u003eMatcherStatus is a trinary that indicates if a Matcher matches a given value or not\u003c/p\u003e"},"Enums/ToSucceedResult.html":{"name":"ToSucceedResult","abstract":"\u003cp\u003eUsed by the \u003ccode\u003esucceed\u003c/code\u003e matcher.\u003c/p\u003e"},"Enums/NimbleTimeInterval.html":{"name":"NimbleTimeInterval","abstract":"\u003cp\u003eA reimplementation of \u003ccode\u003eDispatchTimeInterval\u003c/code\u003e without the \u003ccode\u003enever\u003c/code\u003e case, and conforming to \u003ccode\u003eSendable\u003c/code\u003e.\u003c/p\u003e"},"Global%20Variables.html#/s:6Nimble0A16AssertionHandlerAA0bC0_pvp":{"name":"NimbleAssertionHandler","abstract":"\u003cp\u003eGlobal backing interface for assertions that Nimble creates."},"Global%20Variables.html#/s:6Nimble12DefaultDeltaSdvp":{"name":"DefaultDelta","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBStringer.html#/c:@M@Nimble@objc(cs)NMBStringer(cm)stringify:":{"name":"stringify(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBStringer"},"Classes/SourceLocation.html#/s:6Nimble14SourceLocationC4fileSSvp":{"name":"file","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SourceLocation"},"Classes/SourceLocation.html#/s:6Nimble14SourceLocationC4lineSuvp":{"name":"line","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SourceLocation"},"Classes/SourceLocation.html#/c:@M@Nimble@objc(cs)SourceLocation(py)description":{"name":"description","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"SourceLocation"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)named":{"name":"named","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)reason":{"name":"reason","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)userInfo":{"name":"userInfo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBObjCRaiseExceptionMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCRaiseExceptionMatcher(py)satisfyingBlock":{"name":"satisfyingBlock","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCRaiseExceptionMatcher"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC7matchesACvpZ":{"name":"matches","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC12doesNotMatchACvpZ":{"name":"doesNotMatch","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC4failACvpZ":{"name":"fail","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/c:@M@Nimble@objc(cs)NMBMatcherStatus(py)hash":{"name":"hash","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/c:@M@Nimble@objc(cs)NMBMatcherStatus(im)isEqual:":{"name":"isEqual(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC4from6statusAcA07MatcherC0O_tFZ":{"name":"from(status:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC4from4boolACSb_tFZ":{"name":"from(bool:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherStatus.html#/s:6Nimble16NMBMatcherStatusC7toSwiftAA07MatcherC0OyF":{"name":"toSwift()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherStatus"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC6statusAA0B6StatusCvp":{"name":"status","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC7messageAA21NMBExpectationMessageCvp":{"name":"message","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC6status7messageAcA0B6StatusC_AA21NMBExpectationMessageCtcfc":{"name":"init(status:message:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC4bool7messageACSb_AA21NMBExpectationMessageCtcfc":{"name":"init(bool:message:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBMatcherResult.html#/s:6Nimble16NMBMatcherResultC7toSwiftAA07MatcherC0VyF":{"name":"toSwift()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcherResult"},"Classes/NMBObjCBeCloseToMatcher.html#/c:@M@Nimble@objc(cs)NMBObjCBeCloseToMatcher(py)within":{"name":"within","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBObjCBeCloseToMatcher"},"Classes/NMBMatcher.html#/s:6Nimble10NMBMatcherC7matcherAcA0B6ResultCAA10ExpressionVySo8NSObjectCGKc_tcfc":{"name":"init(matcher:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/s:6Nimble10NMBMatcherC9predicateAcA0B6ResultCAA10ExpressionVySo8NSObjectCGKc_tcfc":{"name":"init(predicate:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)allPassMatcher:":{"name":"allPassMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beAKindOfMatcher:":{"name":"beAKindOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beAnInstanceOfMatcher:":{"name":"beAnInstanceOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beCloseToMatcher:within:":{"name":"beCloseToMatcher(_:within:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beEmptyMatcher":{"name":"beEmptyMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beGreaterThanMatcher:":{"name":"beGreaterThanMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beGreaterThanOrEqualToMatcher:":{"name":"beGreaterThanOrEqualToMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beIdenticalToMatcher:":{"name":"beIdenticalToMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beLessThanMatcher:":{"name":"beLessThanMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beLessThanOrEqualToMatcher:":{"name":"beLessThanOrEqualToMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beTruthyMatcher":{"name":"beTruthyMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beFalsyMatcher":{"name":"beFalsyMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beTrueMatcher":{"name":"beTrueMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beFalseMatcher":{"name":"beFalseMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beNilMatcher":{"name":"beNilMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)beginWithMatcher:":{"name":"beginWithMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)containMatcher:":{"name":"containMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)containElementSatisfyingMatcher:":{"name":"containElementSatisfyingMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)endWithMatcher:":{"name":"endWithMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)equalMatcher:":{"name":"equalMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)haveCountMatcher:":{"name":"haveCountMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)matchMatcher:":{"name":"matchMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)raiseExceptionMatcher":{"name":"raiseExceptionMatcher()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)satisfyAllOfMatcher:":{"name":"satisfyAllOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/NMBMatcher.html#/c:@CM@Nimble@objc(cs)NMBMatcher(cm)satisfyAnyOfMatcher:":{"name":"satisfyAnyOfMatcher(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBMatcher"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC8expectedSSvp":{"name":"expected","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC11actualValueSSSgvp":{"name":"actualValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC2toSSvp":{"name":"to","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC07postfixC0SSvp":{"name":"postfixMessage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC13postfixActualSSvp":{"name":"postfixActual","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC08extendedC0SSSgvp":{"name":"extendedMessage","abstract":"\u003cp\u003eAn optional message that will be appended as a new line and provides additional details","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC15userDescriptionSSSgvp":{"name":"userDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC11stringValueSSvp":{"name":"stringValue","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/c:@M@Nimble@objc(cs)FailureMessage(im)init":{"name":"init()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/FailureMessage.html#/s:6Nimble14FailureMessageC11stringValueACSS_tcfc":{"name":"init(stringValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"FailureMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC10expectedToACSS_tcfc":{"name":"init(expectedTo:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC21expectedActualValueToACSS_tcfc":{"name":"init(expectedActualValueTo:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC21expectedActualValueTo06customeF0ACSS_SStcfc":{"name":"init(expectedActualValueTo:customActualValue:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC4failACSS_tcfc":{"name":"init(fail:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC7prepend5childACSS_ACtcfc":{"name":"init(prepend:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC08appendedC05childACSS_ACtcfc":{"name":"init(appendedMessage:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC09prependedC05childACSS_ACtcfc":{"name":"init(prependedMessage:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC7details5childACSS_ACtcfc":{"name":"init(details:child:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC17appendedBeNilHintACyF":{"name":"appendedBeNilHint()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBExpectationMessage.html#/s:6Nimble21NMBExpectationMessageC7toSwiftAA011ExpectationC0OyF":{"name":"toSwift()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectationMessage"},"Classes/NMBWait.html#/c:@M@Nimble@objc(cs)NMBWait(cm)untilTimeout:file:line:action:":{"name":"until(timeout:file:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/s:6Nimble7NMBWaitC5until7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycctFZ":{"name":"until(timeout:file:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/s:6Nimble7NMBWaitC14throwableUntil7timeout4file4line6actionyAA0A12TimeIntervalO_SSSuyyycKctFZ":{"name":"throwableUntil(timeout:file:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/c:@M@Nimble@objc(cs)NMBWait(cm)untilFile:line:action:":{"name":"until(_:line:action:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBWait"},"Classes/NMBWait.html#/until(_:line:action:)":{"name":"until(_:line:action:)","parent_name":"NMBWait"},"Classes/CurrentTestCaseTracker.html#/c:@M@Nimble@objc(cs)CurrentTestCaseTracker(cpy)sharedInstance":{"name":"sharedInstance","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"CurrentTestCaseTracker"},"Classes/CurrentTestCaseTracker.html#/c:@M@Nimble@objc(cs)CurrentTestCaseTracker(im)testCaseWillStart:":{"name":"testCaseWillStart(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"CurrentTestCaseTracker"},"Classes/CurrentTestCaseTracker.html#/c:@M@Nimble@objc(cs)CurrentTestCaseTracker(im)testCaseDidFinish:":{"name":"testCaseDidFinish(_:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"CurrentTestCaseTracker"},"Classes/NimbleShortXCTestHandler.html#/s:6Nimble0A18ShortXCTestHandlerC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleShortXCTestHandler"},"Classes/NimbleXCTestHandler.html#/s:6Nimble0A13XCTestHandlerC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NimbleXCTestHandler"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(im)initWithActualBlock:negative:file:line:":{"name":"init(actualBlock:negative:file:line:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)withTimeout":{"name":"withTimeout","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)to":{"name":"to","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toWithDescription":{"name":"toWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNot":{"name":"toNot","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNotWithDescription":{"name":"toNotWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)notTo":{"name":"notTo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)notToWithDescription":{"name":"notToWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventually":{"name":"toEventually","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventuallyWithDescription":{"name":"toEventuallyWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventuallyNot":{"name":"toEventuallyNot","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toEventuallyNotWithDescription":{"name":"toEventuallyNotWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNotEventually":{"name":"toNotEventually","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNotEventuallyWithDescription":{"name":"toNotEventuallyWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNever":{"name":"toNever","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toNeverWithDescription":{"name":"toNeverWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)neverTo":{"name":"neverTo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)neverToWithDescription":{"name":"neverToWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toAlways":{"name":"toAlways","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)toAlwaysWithDescription":{"name":"toAlwaysWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)alwaysTo":{"name":"alwaysTo","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(py)alwaysToWithDescription":{"name":"alwaysToWithDescription","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/NMBExpectation.html#/c:@M@Nimble@objc(cs)NMBExpectation(cm)failWithMessage:file:line:":{"name":"failWithMessage(_:file:line:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"NMBExpectation"},"Classes/AssertionRecorder.html#/s:6Nimble17AssertionRecorderC10assertionsSayAA0B6RecordVGvp":{"name":"assertions","abstract":"\u003cp\u003eAll the assertions that were captured by this recorder\u003c/p\u003e","parent_name":"AssertionRecorder"},"Classes/AssertionRecorder.html#/s:6Nimble17AssertionRecorderCACycfc":{"name":"init()","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionRecorder"},"Classes/AssertionRecorder.html#/s:6Nimble17AssertionRecorderC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionRecorder"},"Classes/AssertionDispatcher.html#/s:6Nimble19AssertionDispatcherC8handlersACSayAA0B7Handler_pG_tcfc":{"name":"init(handlers:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionDispatcher"},"Classes/AssertionDispatcher.html#/s:6Nimble19AssertionDispatcherC6assert_7message8locationySb_AA14FailureMessageCAA14SourceLocationCtF":{"name":"assert(_:message:location:)","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e","parent_name":"AssertionDispatcher"},"Classes/AssertionDispatcher.html":{"name":"AssertionDispatcher","abstract":"\u003cp\u003eAssertionDispatcher allows multiple AssertionHandlers to receive"},"Classes/AssertionRecorder.html":{"name":"AssertionRecorder","abstract":"\u003cp\u003eAn AssertionHandler that silently records assertions that Nimble makes."},"Classes/NMBExpectation.html":{"name":"NMBExpectation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NimbleXCTestHandler.html":{"name":"NimbleXCTestHandler","abstract":"\u003cp\u003eDefault handler for Nimble. This assertion handler passes failures along to"},"Classes/NimbleShortXCTestHandler.html":{"name":"NimbleShortXCTestHandler","abstract":"\u003cp\u003eAlternative handler for Nimble. This assertion handler passes failures along"},"Classes/CurrentTestCaseTracker.html":{"name":"CurrentTestCaseTracker","abstract":"\u003cp\u003eHelper class providing access to the currently executing XCTestCase instance, if any\u003c/p\u003e"},"Classes/NMBWait.html":{"name":"NMBWait","abstract":"\u003cp\u003eOnly classes, protocols, methods, properties, and subscript declarations can be"},"Classes/NMBExpectationMessage.html":{"name":"NMBExpectationMessage","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/FailureMessage.html":{"name":"FailureMessage","abstract":"\u003cp\u003eEncapsulates the failure message that matchers can report to the end user.\u003c/p\u003e"},"Classes/NMBMatcher.html":{"name":"NMBMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBObjCBeCloseToMatcher.html":{"name":"NMBObjCBeCloseToMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBMatcherResult.html":{"name":"NMBMatcherResult","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBMatcherStatus.html":{"name":"NMBMatcherStatus","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBObjCRaiseExceptionMatcher.html":{"name":"NMBObjCRaiseExceptionMatcher","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes.html#/BadInstructionException":{"name":"BadInstructionException","abstract":"\u003cp\u003eWithout Mach exceptions or the Objective-C runtime, there\u0026rsquo;s nothing to put in the exception object. It\u0026rsquo;s really just a boolean – either a SIGILL was caught or not.\u003c/p\u003e"},"Classes/SourceLocation.html":{"name":"SourceLocation","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes/NMBStringer.html":{"name":"NMBStringer","abstract":"\u003cp\u003eUndocumented\u003c/p\u003e"},"Classes.html":{"name":"Classes","abstract":"\u003cp\u003eThe following classes are available globally.\u003c/p\u003e"},"Global%20Variables.html":{"name":"Global Variables","abstract":"\u003cp\u003eThe following global variables are available globally.\u003c/p\u003e"},"Enums.html":{"name":"Enumerations","abstract":"\u003cp\u003eThe following enumerations are available globally.\u003c/p\u003e"},"Extensions.html":{"name":"Extensions","abstract":"\u003cp\u003eThe following extensions are available globally.\u003c/p\u003e"},"Functions.html":{"name":"Functions","abstract":"\u003cp\u003eThe following functions are available globally.\u003c/p\u003e"},"Protocols.html":{"name":"Protocols","abstract":"\u003cp\u003eThe following protocols are available globally.\u003c/p\u003e"},"Structs.html":{"name":"Structures","abstract":"\u003cp\u003eThe following structures are available globally.\u003c/p\u003e"},"Typealiases.html":{"name":"Type Aliases","abstract":"\u003cp\u003eThe following type aliases are available globally.\u003c/p\u003e"}} \ No newline at end of file diff --git a/docs/undocumented.json b/docs/undocumented.json deleted file mode 100644 index 162e2c297..000000000 --- a/docs/undocumented.json +++ /dev/null @@ -1,2553 +0,0 @@ -{ - "warnings": [ - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift", - "line": 3, - "symbol": "AssertionHandler.assert(_:message:location:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/AssertionDispatcher.swift", - "line": 10, - "symbol": "AssertionDispatcher.init(handlers:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/AssertionDispatcher.swift", - "line": 14, - "symbol": "AssertionDispatcher.assert(_:message:location:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift", - "line": 27, - "symbol": "AssertionRecorder.init()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/AssertionRecorder.swift", - "line": 29, - "symbol": "AssertionRecorder.assert(_:message:location:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 16, - "symbol": "NMBExpectation", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 23, - "symbol": "NMBExpectation.init(actualBlock:negative:file:line:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 34, - "symbol": "NMBExpectation.withTimeout", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 40, - "symbol": "NMBExpectation.to", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 47, - "symbol": "NMBExpectation.toWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 54, - "symbol": "NMBExpectation.toNot", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 61, - "symbol": "NMBExpectation.toNotWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 68, - "symbol": "NMBExpectation.notTo", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 70, - "symbol": "NMBExpectation.notToWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 72, - "symbol": "NMBExpectation.toEventually", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 82, - "symbol": "NMBExpectation.toEventuallyWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 92, - "symbol": "NMBExpectation.toEventuallyNot", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 102, - "symbol": "NMBExpectation.toEventuallyNotWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 112, - "symbol": "NMBExpectation.toNotEventually", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 116, - "symbol": "NMBExpectation.toNotEventuallyWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 120, - "symbol": "NMBExpectation.toNever", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 130, - "symbol": "NMBExpectation.toNeverWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 140, - "symbol": "NMBExpectation.neverTo", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 144, - "symbol": "NMBExpectation.neverToWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 148, - "symbol": "NMBExpectation.toAlways", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 158, - "symbol": "NMBExpectation.toAlwaysWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 168, - "symbol": "NMBExpectation.alwaysTo", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 172, - "symbol": "NMBExpectation.alwaysToWithDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NMBExpectation.swift", - "line": 176, - "symbol": "NMBExpectation.failWithMessage(_:file:line:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift", - "line": 7, - "symbol": "NimbleXCTestHandler.assert(_:message:location:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift", - "line": 17, - "symbol": "NimbleShortXCTestHandler.assert(_:message:location:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift", - "line": 41, - "symbol": "CurrentTestCaseTracker.sharedInstance", - "symbol_kind": "source.lang.swift.decl.var.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift", - "line": 47, - "symbol": "CurrentTestCaseTracker.testCaseWillStart(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift", - "line": 56, - "symbol": "CurrentTestCaseTracker.testCaseDidFinish(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Adapters/NimbleXCTestHandler.swift", - "line": 75, - "symbol": "recordFailure(_:location:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/AsyncExpression.swift", - "line": 27, - "symbol": "AsyncExpression.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/AsyncExpression.swift", - "line": 28, - "symbol": "AsyncExpression.isClosure", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/AsyncExpression.swift", - "line": 101, - "symbol": "AsyncExpression.cast(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/AsyncExpression.swift", - "line": 109, - "symbol": "AsyncExpression.evaluate()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/AsyncExpression.swift", - "line": 113, - "symbol": "AsyncExpression.withoutCaching()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/AsyncExpression.swift", - "line": 122, - "symbol": "AsyncExpression.withCaching()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/DSL+Wait.swift", - "line": 20, - "symbol": "NMBWait.until(timeout:file:line:action:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/DSL+Wait.swift", - "line": 30, - "symbol": "NMBWait.until(timeout:file:line:action:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/DSL+Wait.swift", - "line": 41, - "symbol": "NMBWait.throwableUntil(timeout:file:line:action:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/DSL+Wait.swift", - "line": 90, - "symbol": "NMBWait.until(_:line:action:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 26, - "symbol": "SyncExpectation", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 36, - "symbol": "AsyncExpectation", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 53, - "symbol": "ExpectationStatus", - "symbol_kind": "source.lang.swift.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 81, - "symbol": "Expectation", - "symbol_kind": "source.lang.swift.decl.protocol", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 82, - "symbol": "Expectation.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 89, - "symbol": "SyncExpectation", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 109, - "symbol": "Expectation", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 140, - "symbol": "SyncExpectation", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 153, - "symbol": "SyncExpectation", - "symbol_kind": "source.lang.swift.decl.struct", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 154, - "symbol": "SyncExpectation.expression", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 178, - "symbol": "SyncExpectation.init(expression:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 194, - "symbol": "SyncExpectation.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 246, - "symbol": "AsyncExpectation", - "symbol_kind": "source.lang.swift.decl.struct", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 247, - "symbol": "AsyncExpectation.expression", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 271, - "symbol": "AsyncExpectation.init(expression:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 275, - "symbol": "AsyncExpectation.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expectation.swift", - "line": 351, - "symbol": "AsyncExpectation", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 1, - "symbol": "ExpectationMessage", - "symbol_kind": "source.lang.swift.decl.enum", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 207, - "symbol": "NMBExpectationMessage", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 214, - "symbol": "NMBExpectationMessage.init(expectedTo:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 217, - "symbol": "NMBExpectationMessage.init(expectedActualValueTo:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 221, - "symbol": "NMBExpectationMessage.init(expectedActualValueTo:customActualValue:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 225, - "symbol": "NMBExpectationMessage.init(fail:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 229, - "symbol": "NMBExpectationMessage.init(prepend:child:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 233, - "symbol": "NMBExpectationMessage.init(appendedMessage:child:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 237, - "symbol": "NMBExpectationMessage.init(prependedMessage:child:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 241, - "symbol": "NMBExpectationMessage.init(details:child:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 245, - "symbol": "NMBExpectationMessage.appendedBeNilHint()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/ExpectationMessage.swift", - "line": 249, - "symbol": "NMBExpectationMessage.toSwift()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expression.swift", - "line": 27, - "symbol": "Expression.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expression.swift", - "line": 28, - "symbol": "Expression.isClosure", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expression.swift", - "line": 85, - "symbol": "Expression.evaluate()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expression.swift", - "line": 89, - "symbol": "Expression.withoutCaching()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expression.swift", - "line": 98, - "symbol": "Expression.withCaching()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Expression.swift", - "line": 107, - "symbol": "Expression.toAsyncExpression()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 7, - "symbol": "FailureMessage.expected", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 8, - "symbol": "FailureMessage.actualValue", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 9, - "symbol": "FailureMessage.to", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 10, - "symbol": "FailureMessage.postfixMessage", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 11, - "symbol": "FailureMessage.postfixActual", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 16, - "symbol": "FailureMessage.userDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 18, - "symbol": "FailureMessage.stringValue", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 36, - "symbol": "FailureMessage.init()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/FailureMessage.swift", - "line": 39, - "symbol": "FailureMessage.init(stringValue:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AllPass.swift", - "line": 1, - "symbol": "allPass(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AllPass.swift", - "line": 13, - "symbol": "allPass(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AllPass.swift", - "line": 26, - "symbol": "allPass(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AllPass.swift", - "line": 72, - "symbol": "NMBMatcher.allPassMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncAllPass.swift", - "line": 1, - "symbol": "allPass(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncAllPass.swift", - "line": 13, - "symbol": "allPass(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncAllPass.swift", - "line": 26, - "symbol": "allPass(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncMatcher.swift", - "line": 1, - "symbol": "AsyncableMatcher", - "symbol_kind": "source.lang.swift.decl.protocol", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncMatcher.swift", - "line": 2, - "symbol": "AsyncableMatcher.Value", - "symbol_kind": "source.lang.swift.decl.associatedtype", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncMatcher.swift", - "line": 3, - "symbol": "AsyncableMatcher.satisfies(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncMatcher.swift", - "line": 7, - "symbol": "Matcher.satisfies(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncMatcher.swift", - "line": 33, - "symbol": "AsyncMatcher.init(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/AsyncMatcher.swift", - "line": 47, - "symbol": "AsyncPredicate", - "symbol_kind": "source.lang.swift.decl.typealias", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeAKindOf.swift", - "line": 60, - "symbol": "NMBMatcher.beAKindOfMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeAnInstanceOf.swift", - "line": 50, - "symbol": "NMBMatcher.beAnInstanceOfMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 4, - "symbol": "DefaultDelta", - "symbol_kind": "source.lang.swift.decl.var.global", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 6, - "symbol": "defaultDelta()", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 70, - "symbol": "NMBObjCBeCloseToMatcher", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 84, - "symbol": "NMBObjCBeCloseToMatcher.within", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 93, - "symbol": "NMBMatcher.beCloseToMatcher(_:within:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 99, - "symbol": "beCloseTo(_:within:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 125, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 129, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 133, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 137, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 141, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 145, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 149, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 153, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 157, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 161, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 165, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 169, - "symbol": "≈(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 173, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 177, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 188, - "symbol": "±(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeCloseTo.swift", - "line": 191, - "symbol": "±(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeEmpty.swift", - "line": 82, - "symbol": "NMBMatcher.beEmptyMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift", - "line": 11, - "symbol": ">(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift", - "line": 15, - "symbol": ">(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift", - "line": 33, - "symbol": ">(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift", - "line": 37, - "symbol": ">(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThan.swift", - "line": 42, - "symbol": "NMBMatcher.beGreaterThanMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift", - "line": 12, - "symbol": ">=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift", - "line": 16, - "symbol": ">=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift", - "line": 34, - "symbol": ">=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift", - "line": 38, - "symbol": ">=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift", - "line": 43, - "symbol": "NMBMatcher.beGreaterThanOrEqualToMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift", - "line": 18, - "symbol": "===(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift", - "line": 22, - "symbol": "===(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift", - "line": 26, - "symbol": "!==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift", - "line": 30, - "symbol": "!==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeIdenticalTo.swift", - "line": 46, - "symbol": "NMBMatcher.beIdenticalToMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThan.swift", - "line": 11, - "symbol": "<(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThan.swift", - "line": 15, - "symbol": "<(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThan.swift", - "line": 32, - "symbol": "<(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThan.swift", - "line": 36, - "symbol": "<(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThan.swift", - "line": 41, - "symbol": "NMBMatcher.beLessThanMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift", - "line": 11, - "symbol": "<=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift", - "line": 15, - "symbol": "<=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift", - "line": 32, - "symbol": "<=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift", - "line": 36, - "symbol": "<=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLessThanOrEqual.swift", - "line": 41, - "symbol": "NMBMatcher.beLessThanOrEqualToMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLogical.swift", - "line": 117, - "symbol": "NMBMatcher.beTruthyMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLogical.swift", - "line": 124, - "symbol": "NMBMatcher.beFalsyMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLogical.swift", - "line": 131, - "symbol": "NMBMatcher.beTrueMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeLogical.swift", - "line": 138, - "symbol": "NMBMatcher.beFalseMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeNil.swift", - "line": 27, - "symbol": "SyncExpectation.==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.method.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeNil.swift", - "line": 31, - "symbol": "SyncExpectation.!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.method.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeNil.swift", - "line": 37, - "symbol": "AsyncExpectation.==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.method.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeNil.swift", - "line": 41, - "symbol": "AsyncExpectation.!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.method.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeNil.swift", - "line": 50, - "symbol": "NMBMatcher.beNilMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeVoid.swift", - "line": 9, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeVoid.swift", - "line": 13, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeVoid.swift", - "line": 17, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeVoid.swift", - "line": 21, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/BeginWith.swift", - "line": 43, - "symbol": "NMBMatcher.beginWithMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Contain.swift", - "line": 61, - "symbol": "contain(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Contain.swift", - "line": 79, - "symbol": "contain(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Contain.swift", - "line": 94, - "symbol": "contain(_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Contain.swift", - "line": 107, - "symbol": "NMBMatcher.containMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift", - "line": 1, - "symbol": "containElementSatisfying(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift", - "line": 24, - "symbol": "containElementSatisfying(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/ContainElementSatisfying.swift", - "line": 53, - "symbol": "NMBMatcher.containElementSatisfyingMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/EndWith.swift", - "line": 53, - "symbol": "NMBMatcher.endWithMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 13, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 20, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 27, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 34, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 51, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 58, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 66, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 73, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 91, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 98, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 105, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 112, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 130, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 137, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 145, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 152, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 170, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 177, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 184, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+Tuple.swift", - "line": 191, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 13, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 20, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 27, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 34, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 51, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 58, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 65, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 72, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 89, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 96, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 103, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 110, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 127, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 134, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 141, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 148, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 165, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 172, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 179, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal+TupleArray.swift", - "line": 186, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 134, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 138, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 142, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 146, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 150, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 154, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 158, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 162, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 166, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 170, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 174, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 178, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 182, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 186, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 190, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 194, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 198, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 202, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 206, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 210, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 214, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 218, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 222, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 226, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 230, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 234, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 238, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 242, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 246, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 250, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 254, - "symbol": "==(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 258, - "symbol": "!=(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Equal.swift", - "line": 266, - "symbol": "NMBMatcher.equalMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/HaveCount.swift", - "line": 49, - "symbol": "NMBMatcher.haveCountMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Match.swift", - "line": 16, - "symbol": "NMBMatcher.matchMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 15, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 40, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 40, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 41, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 42, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 42, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 45, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 48, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 49, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 49, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 52, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 52, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 59, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 71, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 81, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 92, - "symbol": "ExpectationStyle.toMatch", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 92, - "symbol": "ExpectationStyle.toNotMatch", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 92, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 98, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 98, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 106, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 116, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 210, - "symbol": "MatcherBlock", - "symbol_kind": "source.lang.swift.decl.typealias", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 216, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 217, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 219, - "symbol": "NMBMatcher.init(matcher:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 224, - "symbol": "NMBMatcher.init(predicate:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 242, - "symbol": "NMBMatcherResult", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 243, - "symbol": "NMBMatcherResult.status", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 244, - "symbol": "NMBMatcherResult.message", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 246, - "symbol": "NMBMatcherResult.init(status:message:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 251, - "symbol": "NMBMatcherResult.init(bool:message:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 256, - "symbol": "NMBMatcherResult.toSwift()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 265, - "symbol": "NMBMatcher", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 267, - "symbol": "MatcherResult.toObjectiveC()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 272, - "symbol": "NMBMatcherStatus", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 278, - "symbol": "NMBMatcherStatus.matches", - "symbol_kind": "source.lang.swift.decl.var.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 279, - "symbol": "NMBMatcherStatus.doesNotMatch", - "symbol_kind": "source.lang.swift.decl.var.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 280, - "symbol": "NMBMatcherStatus.fail", - "symbol_kind": "source.lang.swift.decl.var.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 282, - "symbol": "NMBMatcherStatus.hash", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 284, - "symbol": "NMBMatcherStatus.isEqual(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 291, - "symbol": "NMBMatcherStatus.from(status:)", - "symbol_kind": "source.lang.swift.decl.function.method.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 299, - "symbol": "NMBMatcherStatus.from(bool:)", - "symbol_kind": "source.lang.swift.decl.function.method.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 303, - "symbol": "NMBMatcherStatus.toSwift()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/Matcher.swift", - "line": 319, - "symbol": "MatcherStatus.toObjectiveC()", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 9, - "symbol": "NMBContainer.contains(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 23, - "symbol": "NMBCollection.count", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 37, - "symbol": "NMBOrderedCollection.object(at:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 42, - "symbol": "NMBDoubleConvertible", - "symbol_kind": "source.lang.swift.decl.protocol", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 43, - "symbol": "NMBDoubleConvertible.doubleValue", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 60, - "symbol": "Date.doubleValue", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 66, - "symbol": "NSDate.doubleValue", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 73, - "symbol": "Date.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 79, - "symbol": "NSDate.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 91, - "symbol": "NMBComparable.NMB_compare(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 95, - "symbol": "NSNumber.NMB_compare(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/MatcherProtocols.swift", - "line": 101, - "symbol": "NSString.NMB_compare(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/PostNotification.swift", - "line": 92, - "symbol": "postNotifications(_:from:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/PostNotification.swift", - "line": 100, - "symbol": "postDistributedNotifications(_:from:names:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/RaisesException.swift", - "line": 144, - "symbol": "NMBObjCRaiseExceptionMatcher", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/RaisesException.swift", - "line": 168, - "symbol": "NMBObjCRaiseExceptionMatcher.named", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/RaisesException.swift", - "line": 180, - "symbol": "NMBObjCRaiseExceptionMatcher.reason", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/RaisesException.swift", - "line": 192, - "symbol": "NMBObjCRaiseExceptionMatcher.userInfo", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/RaisesException.swift", - "line": 204, - "symbol": "NMBObjCRaiseExceptionMatcher.satisfyingBlock", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/RaisesException.swift", - "line": 218, - "symbol": "NMBMatcher.raiseExceptionMatcher()", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift", - "line": 40, - "symbol": "&&(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift", - "line": 90, - "symbol": "&&(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/SatisfyAllOf.swift", - "line": 99, - "symbol": "NMBMatcher.satisfyAllOfMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift", - "line": 40, - "symbol": "||(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift", - "line": 90, - "symbol": "||(_:_:)", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/SatisfyAnyOf.swift", - "line": 99, - "symbol": "NMBMatcher.satisfyAnyOfMatcher(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/ThrowAssertion.swift", - "line": 84, - "symbol": "throwAssertion()", - "symbol_kind": "source.lang.swift.decl.function.free", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/ToSucceed.swift", - "line": 7, - "symbol": "ToSucceedResult.succeeded", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Matchers/ToSucceed.swift", - "line": 8, - "symbol": "ToSucceedResult.failed(reason:)", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Polling.swift", - "line": 38, - "symbol": "PollingDefaults.timeout", - "symbol_kind": "source.lang.swift.decl.var.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Polling.swift", - "line": 39, - "symbol": "PollingDefaults.pollInterval", - "symbol_kind": "source.lang.swift.decl.var.static", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 3, - "symbol": "RequireError", - "symbol_kind": "source.lang.swift.decl.struct", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 6, - "symbol": "SyncRequirement", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 74, - "symbol": "SyncRequirement", - "symbol_kind": "source.lang.swift.decl.struct", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 75, - "symbol": "SyncRequirement.expression", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 81, - "symbol": "SyncRequirement.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 83, - "symbol": "SyncRequirement.init(expression:customError:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 88, - "symbol": "SyncRequirement.verify(_:_:_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 143, - "symbol": "AsyncRequirement", - "symbol_kind": "source.lang.swift.decl.struct", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 144, - "symbol": "AsyncRequirement.expression", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 150, - "symbol": "AsyncRequirement.location", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 152, - "symbol": "AsyncRequirement.init(expression:customError:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 157, - "symbol": "AsyncRequirement.verify(_:_:_:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Requirement.swift", - "line": 454, - "symbol": "AsyncRequirement", - "symbol_kind": "source.lang.swift.decl.extension", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 11, - "symbol": "NimbleTimeInterval.seconds(_:)", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 12, - "symbol": "NimbleTimeInterval.milliseconds(_:)", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 13, - "symbol": "NimbleTimeInterval.microseconds(_:)", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 14, - "symbol": "NimbleTimeInterval.nanoseconds(_:)", - "symbol_kind": "source.lang.swift.decl.enumelement", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 18, - "symbol": "NimbleTimeInterval.dispatchTimeInterval", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 41, - "symbol": "NimbleTimeInterval.nanoseconds", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 64, - "symbol": "NimbleTimeInterval.timeInterval", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 75, - "symbol": "TimeInterval.nimbleInterval", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/NimbleTimeInterval.swift", - "line": 83, - "symbol": "Date.advanced(by:)", - "symbol_kind": "source.lang.swift.decl.function.method.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/SourceLocation.swift", - "line": 11, - "symbol": "FileString", - "symbol_kind": "source.lang.swift.decl.typealias", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/SourceLocation.swift", - "line": 14, - "symbol": "SourceLocation", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/SourceLocation.swift", - "line": 15, - "symbol": "SourceLocation.file", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/SourceLocation.swift", - "line": 16, - "symbol": "SourceLocation.line", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/SourceLocation.swift", - "line": 28, - "symbol": "SourceLocation.description", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 27, - "symbol": "TestOutputStringConvertible.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 31, - "symbol": "Double.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 37, - "symbol": "Float.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 43, - "symbol": "NSNumber.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 65, - "symbol": "Array.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 72, - "symbol": "AnySequence.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 90, - "symbol": "NSArray.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 97, - "symbol": "NSIndexSet.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 104, - "symbol": "String.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 110, - "symbol": "Data.testDescription", - "symbol_kind": "source.lang.swift.decl.var.instance", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 144, - "symbol": "NMBStringer", - "symbol_kind": "source.lang.swift.decl.class", - "warning": "undocumented" - }, - { - "file": "/Users/you/workspace/Nimble/Sources/Nimble/Utils/Stringers.swift", - "line": 145, - "symbol": "NMBStringer.stringify(_:)", - "symbol_kind": "source.lang.swift.decl.function.method.class", - "warning": "undocumented" - } - ], - "source_directory": "/Users/you/workspace/Nimble" -} \ No newline at end of file diff --git a/script/build_docs b/script/build_docs new file mode 100755 index 000000000..88aa81a6f --- /dev/null +++ b/script/build_docs @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + +export DOCC_JSON_PRETTYPRINT="YES" + +mkdir -p docs + +swift package --allow-writing-to-directory docs \ + generate-documentation --target Nimble \ + --disable-indexing \ + --transform-for-static-hosting \ + --hosting-base-path 'https://quick.github.io/Nimble' \ + --output-path docs diff --git a/script/build_docs.zsh b/script/build_docs.zsh deleted file mode 100755 index 7d73e1fa0..000000000 --- a/script/build_docs.zsh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/zsh - -# Created by Jesse Squires -# https://www.jessesquires.com -# -# Copyright © 2020-present Jesse Squires -# -# Jazzy: https://github.com/realm/jazzy/releases/latest -# Generates documentation using jazzy and checks for installation. - -bundle exec jazzy \ - --clean \ - --author "Nimble Contributors" \ - --author_url "https://github.com/Quick/Nimble" \ - --github_url "https://github.com/Quick/Nimble" \ - --module "Nimble" \ - --source-directory . \ - --readme "README.md" \ - -x -scheme,Nimble \ - --output docs/ diff --git a/script/release b/script/release index 742dbcfdb..ba0d03394 100755 --- a/script/release +++ b/script/release @@ -127,11 +127,7 @@ else git add ${PODSPEC} || { restore_podspec; die "Failed to add ${PODSPEC} to INDEX"; } - echo "--- Updating Docs ---" - ./script/build_docs.zsh - git add docs || { git co docs; die "Failed to add docs to INDEX"; } - - git commit -m "[$VERSION_TAG] Update docs and podspec" || { restore_podspec; die "Failed to push updated version: $VERSION"; } + git commit -m "[$VERSION_TAG] Update podspec" || { restore_podspec; die "Failed to push updated version: $VERSION"; } fi RELEASE_NOTES="Version ${VERSION}. Open https://github.com/Quick/Nimble/releases/tag/$VERSION_TAG for full release notes."