|
13 | 13 |
|
14 | 14 | // CHECK: Test Suite 'PredicateExpectationsTestCase' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+
|
15 | 15 | class PredicateExpectationsTestCase: XCTestCase {
|
16 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTruePredicateAndObject_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
17 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTruePredicateAndObject_passes' passed \(\d+\.\d+ seconds\) |
18 |
| - func test_immediatelyTruePredicateAndObject_passes() { |
| 16 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTruePredicate_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
| 17 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTruePredicate_passes' passed \(\d+\.\d+ seconds\) |
| 18 | + func test_immediatelyTruePredicate_passes() { |
19 | 19 | let predicate = NSPredicate(value: true)
|
20 |
| - let object = NSObject() |
21 |
| - expectation(for: predicate, evaluatedWith: object) |
| 20 | + expectation(for: predicate) |
22 | 21 | waitForExpectations(timeout: 0.1)
|
23 | 22 | }
|
24 | 23 |
|
25 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyFalsePredicateAndObject_fails' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
26 |
| - // CHECK: .*/Tests/Functional/Asynchronous/Predicates/Expectations/main.swift:[[@LINE+6]]: error: PredicateExpectationsTestCase.test_immediatelyFalsePredicateAndObject_fails : Asynchronous wait failed - Exceeded timeout of 0.1 seconds, with unfulfilled expectations: Expect `<NSPredicate: 0x[0-9A-Fa-f]{1,16}>` for object <NSObject: 0x[0-9A-Fa-f]{1,16}> |
27 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyFalsePredicateAndObject_fails' failed \(\d+\.\d+ seconds\) |
28 |
| - func test_immediatelyFalsePredicateAndObject_fails() { |
| 24 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyFalsePredicate_fails' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
| 25 | + // CHECK: .*/Tests/Functional/Asynchronous/Predicates/Expectations/main.swift:[[@LINE+5]]: error: PredicateExpectationsTestCase.test_immediatelyFalsePredicate_fails : Asynchronous wait failed - Exceeded timeout of 0.1 seconds, with unfulfilled expectations: Expect predicate `<NSPredicate: 0x[0-9A-Fa-f]{1,16}>` |
| 26 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyFalsePredicate_fails' failed \(\d+\.\d+ seconds\) |
| 27 | + func test_immediatelyFalsePredicate_fails() { |
29 | 28 | let predicate = NSPredicate(value: false)
|
30 |
| - let object = NSObject() |
31 |
| - expectation(for: predicate, evaluatedWith: object) |
| 29 | + expectation(for: predicate) |
32 | 30 | waitForExpectations(timeout: 0.1)
|
33 | 31 | }
|
34 | 32 |
|
35 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_delayedTruePredicateAndObject_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
36 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_delayedTruePredicateAndObject_passes' passed \(\d+\.\d+ seconds\) |
37 |
| - func test_delayedTruePredicateAndObject_passes() { |
| 33 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_delayedTruePredicate_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
| 34 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_delayedTruePredicate_passes' passed \(\d+\.\d+ seconds\) |
| 35 | + func test_delayedTruePredicate_passes() { |
38 | 36 | var didEvaluate = false
|
39 | 37 | let predicate = NSPredicate(block: { evaluatedObject, bindings in
|
| 38 | + XCTAssertNil(evaluatedObject) |
40 | 39 | defer { didEvaluate = true }
|
41 | 40 | return didEvaluate
|
42 | 41 | })
|
43 |
| - expectation(for: predicate, evaluatedWith: NSObject()) |
| 42 | + expectation(for: predicate) |
44 | 43 | waitForExpectations(timeout: 0.1)
|
45 | 44 | }
|
46 | 45 |
|
47 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTrueDelayedFalsePredicateAndObject_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
48 |
| - // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTrueDelayedFalsePredicateAndObject_passes' passed \(\d+\.\d+ seconds\) |
49 |
| - func test_immediatelyTrueDelayedFalsePredicateAndObject_passes() { |
| 46 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTrueDelayedFalsePredicate_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
| 47 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_immediatelyTrueDelayedFalsePredicate_passes' passed \(\d+\.\d+ seconds\) |
| 48 | + func test_immediatelyTrueDelayedFalsePredicate_passes() { |
50 | 49 | var didEvaluate = false
|
51 | 50 | let predicate = NSPredicate(block: { evaluatedObject, bindings in
|
| 51 | + XCTAssertNil(evaluatedObject) |
52 | 52 | defer { didEvaluate = true }
|
53 | 53 | return !didEvaluate
|
54 | 54 | })
|
55 |
| - expectation(for: predicate, evaluatedWith: NSObject()) |
| 55 | + expectation(for: predicate) |
56 | 56 | XCTAssertTrue(didEvaluate)
|
57 | 57 |
|
58 | 58 | waitForExpectations(timeout: 0.1)
|
59 | 59 | }
|
| 60 | + |
| 61 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_blockPredicateWithNilObject_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
| 62 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_blockPredicateWithNilObject_passes' passed \(\d+\.\d+ seconds\) |
| 63 | + func test_blockPredicateWithNilObject_passes() { |
| 64 | + var flag = false |
| 65 | + let predicate = NSPredicate(block: { _, _ in |
| 66 | + return flag |
| 67 | + }) |
| 68 | + expectation(for: predicate, evaluatedWith: nil) |
| 69 | + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { |
| 70 | + flag = true |
| 71 | + } |
| 72 | + waitForExpectations(timeout: 1) |
| 73 | + XCTAssertTrue(flag) |
| 74 | + } |
| 75 | + |
| 76 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_blockPredicateWithObject_passes' started at \d+-\d+-\d+ \d+:\d+:\d+\.\d+ |
| 77 | + // CHECK: Test Case 'PredicateExpectationsTestCase.test_blockPredicateWithObject_passes' passed \(\d+\.\d+ seconds\) |
| 78 | + func test_blockPredicateWithObject_passes() { |
| 79 | + class Foo { var x = false } |
| 80 | + let foo = Foo() |
| 81 | + let predicate = NSPredicate(block: { evaluatedObject, _ in |
| 82 | + guard let object = evaluatedObject as? Foo else { return false } |
| 83 | + return object.x |
| 84 | + }) |
| 85 | + expectation(for: predicate, evaluatedWith: foo) |
| 86 | + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { |
| 87 | + foo.x = true |
| 88 | + } |
| 89 | + waitForExpectations(timeout: 1) |
| 90 | + XCTAssertTrue(foo.x) |
| 91 | + } |
60 | 92 |
|
61 | 93 | static var allTests = {
|
62 | 94 | return [
|
63 |
| - ("test_immediatelyTruePredicateAndObject_passes", test_immediatelyTruePredicateAndObject_passes), |
64 |
| - ("test_immediatelyFalsePredicateAndObject_fails", test_immediatelyFalsePredicateAndObject_fails), |
65 |
| - ("test_delayedTruePredicateAndObject_passes", test_delayedTruePredicateAndObject_passes), |
66 |
| - ("test_immediatelyTrueDelayedFalsePredicateAndObject_passes", test_immediatelyTrueDelayedFalsePredicateAndObject_passes), |
| 95 | + ("test_immediatelyTruePredicate_passes", test_immediatelyTruePredicate_passes), |
| 96 | + ("test_immediatelyFalsePredicate_fails", test_immediatelyFalsePredicate_fails), |
| 97 | + ("test_delayedTruePredicate_passes", test_delayedTruePredicate_passes), |
| 98 | + ("test_immediatelyTrueDelayedFalsePredicate_passes", test_immediatelyTrueDelayedFalsePredicate_passes), |
| 99 | + ("test_blockPredicateWithNilObject_passes", test_blockPredicateWithNilObject_passes), |
| 100 | + ("test_blockPredicateWithObject_passes", test_blockPredicateWithObject_passes), |
67 | 101 | ]
|
68 | 102 | }()
|
69 | 103 | }
|
70 | 104 |
|
71 | 105 | // CHECK: Test Suite 'PredicateExpectationsTestCase' failed at \d+-\d+-\d+ \d+:\d+:\d+\.\d+
|
72 |
| -// CHECK: \t Executed 4 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds |
| 106 | +// CHECK: \t Executed 6 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds |
73 | 107 | XCTMain([testCase(PredicateExpectationsTestCase.allTests)])
|
74 | 108 |
|
75 | 109 | // CHECK: Test Suite '.*\.xctest' failed at \d+-\d+-\d+ \d+:\d+:\d+\.\d+
|
76 |
| -// CHECK: \t Executed 4 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds |
| 110 | +// CHECK: \t Executed 6 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds |
77 | 111 | // CHECK: Test Suite 'All tests' failed at \d+-\d+-\d+ \d+:\d+:\d+\.\d+
|
78 |
| -// CHECK: \t Executed 4 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds |
| 112 | +// CHECK: \t Executed 6 tests, with 1 failure \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds |
0 commit comments