Skip to content

Commit 1b7a447

Browse files
committed
Test the failure messages for optional and non-optional XCTAssertEqual variants
1 parent 956b6b1 commit 1b7a447

File tree

1 file changed

+45
-2
lines changed

1 file changed

+45
-2
lines changed

validation-test/stdlib/XCTest.swift

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,24 @@ var XCTestTestSuite = TestSuite("XCTest")
2121
// instantiate an NSInvocation with the given selector.
2222

2323

24-
func execute(_ run: () -> ()) {
24+
func execute(observers: [XCTestObservation] = [], _ run: () -> Void) {
25+
for observer in observers {
26+
XCTestObservationCenter.shared().addTestObserver(observer)
27+
}
28+
2529
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+
}
2642
}
2743

2844
XCTestTestSuite.test("exceptions") {
@@ -44,6 +60,31 @@ XCTestTestSuite.test("exceptions") {
4460
expectFalse(testRun.hasSucceeded)
4561
}
4662

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+
4788
XCTestTestSuite.test("XCTAssertEqual/Optional<T>") {
4889
class AssertEqualOptionalTestCase: XCTestCase {
4990
dynamic func test_whenOptionalsAreEqual_passes() {
@@ -66,14 +107,16 @@ XCTestTestSuite.test("XCTAssertEqual/Optional<T>") {
66107
expectTrue(passingTestRun.hasSucceeded)
67108

68109
let failingTestCase = AssertEqualOptionalTestCase(selector: #selector(AssertEqualOptionalTestCase.test_whenOptionalsAreNotEqual_fails))
69-
execute(failingTestCase.run)
110+
let observer = FailureDescriptionObserver()
111+
execute(observers: [observer], failingTestCase.run)
70112
let failingTestRun = failingTestCase.testRun!
71113
expectEqual(1, failingTestRun.testCaseCount)
72114
expectEqual(1, failingTestRun.executionCount)
73115
expectEqual(1, failingTestRun.failureCount)
74116
expectEqual(0, failingTestRun.unexpectedExceptionCount)
75117
expectEqual(1, failingTestRun.totalFailureCount)
76118
expectFalse(failingTestRun.hasSucceeded)
119+
expectEqual(observer.failureDescription, "XCTAssertEqual failed: (\"Optional(1)\") is not equal to (\"Optional(2)\") - ")
77120
}
78121

79122
XCTestTestSuite.test("XCTAssertEqual/Array<T>") {

0 commit comments

Comments
 (0)