@@ -21,8 +21,24 @@ var XCTestTestSuite = TestSuite("XCTest")
21
21
// instantiate an NSInvocation with the given selector.
22
22
23
23
24
- func execute( _ run: ( ) -> ( ) ) {
24
+ func execute( observers: [ XCTestObservation ] = [ ] , _ run: ( ) -> Void ) {
25
+ for observer in observers {
26
+ XCTestObservationCenter . shared ( ) . addTestObserver ( observer)
27
+ }
28
+
25
29
run ( )
30
+
31
+ for observer in observers {
32
+ XCTestObservationCenter . shared ( ) . removeTestObserver ( observer)
33
+ }
34
+ }
35
+
36
+ class FailureDescriptionObserver : NSObject , XCTestObservation {
37
+ var failureDescription : String ?
38
+
39
+ func testCase( _ testCase: XCTestCase , didFailWithDescription description: String , inFile filePath: String ? , atLine lineNumber: UInt ) {
40
+ failureDescription = description
41
+ }
26
42
}
27
43
28
44
XCTestTestSuite . test ( " exceptions " ) {
@@ -44,6 +60,31 @@ XCTestTestSuite.test("exceptions") {
44
60
expectFalse ( testRun. hasSucceeded)
45
61
}
46
62
63
+ XCTestTestSuite . test ( " XCTAssertEqual/T " ) {
64
+ class AssertEqualTestCase : XCTestCase {
65
+ dynamic func test_whenEqual_passes( ) {
66
+ XCTAssertEqual ( 1 , 1 )
67
+ }
68
+
69
+ dynamic func test_whenNotEqual_fails( ) {
70
+ XCTAssertEqual ( 1 , 2 )
71
+ }
72
+ }
73
+
74
+ let passingTestCase = AssertEqualTestCase ( selector: #selector( AssertEqualTestCase . test_whenEqual_passes) )
75
+ execute ( passingTestCase. run)
76
+ let passingTestRun = passingTestCase. testRun!
77
+ expectTrue ( passingTestRun. hasSucceeded)
78
+
79
+ let failingTestCase = AssertEqualTestCase ( selector: #selector( AssertEqualTestCase . test_whenNotEqual_fails) )
80
+ let observer = FailureDescriptionObserver ( )
81
+ execute ( observers: [ observer] , failingTestCase. run)
82
+ let failingTestRun = failingTestCase. testRun!
83
+ expectEqual ( 1 , failingTestRun. failureCount)
84
+ expectEqual ( 0 , failingTestRun. unexpectedExceptionCount)
85
+ expectEqual ( observer. failureDescription, " XCTAssertEqual failed: ( \" 1 \" ) is not equal to ( \" 2 \" ) - " )
86
+ }
87
+
47
88
XCTestTestSuite . test ( " XCTAssertEqual/Optional<T> " ) {
48
89
class AssertEqualOptionalTestCase : XCTestCase {
49
90
dynamic func test_whenOptionalsAreEqual_passes( ) {
@@ -66,14 +107,16 @@ XCTestTestSuite.test("XCTAssertEqual/Optional<T>") {
66
107
expectTrue ( passingTestRun. hasSucceeded)
67
108
68
109
let failingTestCase = AssertEqualOptionalTestCase ( selector: #selector( AssertEqualOptionalTestCase . test_whenOptionalsAreNotEqual_fails) )
69
- execute ( failingTestCase. run)
110
+ let observer = FailureDescriptionObserver ( )
111
+ execute ( observers: [ observer] , failingTestCase. run)
70
112
let failingTestRun = failingTestCase. testRun!
71
113
expectEqual ( 1 , failingTestRun. testCaseCount)
72
114
expectEqual ( 1 , failingTestRun. executionCount)
73
115
expectEqual ( 1 , failingTestRun. failureCount)
74
116
expectEqual ( 0 , failingTestRun. unexpectedExceptionCount)
75
117
expectEqual ( 1 , failingTestRun. totalFailureCount)
76
118
expectFalse ( failingTestRun. hasSucceeded)
119
+ expectEqual ( observer. failureDescription, " XCTAssertEqual failed: ( \" Optional(1) \" ) is not equal to ( \" Optional(2) \" ) - " )
77
120
}
78
121
79
122
XCTestTestSuite . test ( " XCTAssertEqual/Array<T> " ) {
0 commit comments