Skip to content

Commit 5bd36b5

Browse files
authored
Merge pull request #123 from nsalmoria/sr-1417-2
[SR-1417] Add non-optional overloads of XCTAssertEqual and XCTAssertN…
2 parents 6bdeaf8 + e815550 commit 5bd36b5

File tree

3 files changed

+44
-6
lines changed

3 files changed

+44
-6
lines changed

Sources/XCTest/Public/XCTAssert.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,17 @@ public func XCTAssert(_ expression: @autoclosure () throws -> Boolean, _ message
156156
XCTAssertTrue(expression, message, file: file, line: line)
157157
}
158158

159+
public func XCTAssertEqual<T: Equatable>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
160+
_XCTEvaluateAssertion(.equal, message: message, file: file, line: line) {
161+
let (value1, value2) = (try expression1(), try expression2())
162+
if value1 == value2 {
163+
return .success
164+
} else {
165+
return .expectedFailure("(\"\(value1)\") is not equal to (\"\(value2)\")")
166+
}
167+
}
168+
}
169+
159170
public func XCTAssertEqual<T: Equatable>(_ expression1: @autoclosure () throws -> T?, _ expression2: @autoclosure () throws -> T?, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
160171
_XCTEvaluateAssertion(.equal, message: message, file: file, line: line) {
161172
let (value1, value2) = (try expression1(), try expression2())
@@ -288,6 +299,17 @@ public func XCTAssertNil(_ expression: @autoclosure () throws -> Any?, _ message
288299
}
289300
}
290301

302+
public func XCTAssertNotEqual<T: Equatable>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
303+
_XCTEvaluateAssertion(.notEqual, message: message, file: file, line: line) {
304+
let (value1, value2) = (try expression1(), try expression2())
305+
if value1 != value2 {
306+
return .success
307+
} else {
308+
return .expectedFailure("(\"\(value1)\") is equal to (\"\(value2)\")")
309+
}
310+
}
311+
}
312+
291313
public func XCTAssertNotEqual<T: Equatable>(_ expression1: @autoclosure () throws -> T?, _ expression2: @autoclosure () throws -> T?, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
292314
_XCTEvaluateAssertion(.notEqual, message: message, file: file, line: line) {
293315
let (value1, value2) = (try expression1(), try expression2())

Tests/Functional/ErrorHandling/main.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class ErrorHandling: XCTestCase {
6464
}
6565

6666
// CHECK: Test Case 'ErrorHandling.test_throwsErrorInAssertionButFailsWhenCheckingError' started at \d+:\d+:\d+\.\d+
67-
// CHECK: .*/ErrorHandling/main.swift:[[@LINE+11]]: error: ErrorHandling.test_throwsErrorInAssertionButFailsWhenCheckingError : XCTAssertEqual failed: \("Optional\("an error message"\)"\) is not equal to \("Optional\(""\)"\) -
67+
// CHECK: .*/ErrorHandling/main.swift:[[@LINE+11]]: error: ErrorHandling.test_throwsErrorInAssertionButFailsWhenCheckingError : XCTAssertEqual failed: \("an error message"\) is not equal to \(""\) -
6868
// CHECK: Test Case 'ErrorHandling.test_throwsErrorInAssertionButFailsWhenCheckingError' failed \(\d+\.\d+ seconds\).
6969
func test_throwsErrorInAssertionButFailsWhenCheckingError() {
7070
XCTAssertThrowsError(try functionThatDoesThrowError()) { error in

Tests/Functional/FailureMessagesTestCase/main.swift

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class FailureMessagesTestCase: XCTestCase {
1818
static var allTests = {
1919
return [
2020
("testAssert", testAssert),
21+
("testAssertEqualValues", testAssertEqualValues),
2122
("testAssertEqualOptionals", testAssertEqualOptionals),
2223
("testAssertEqualArraySlices", testAssertEqualArraySlices),
2324
("testAssertEqualContiguousArrays", testAssertEqualContiguousArrays),
@@ -30,6 +31,7 @@ class FailureMessagesTestCase: XCTestCase {
3031
("testAssertLessThan", testAssertLessThan),
3132
("testAssertLessThanOrEqual", testAssertLessThanOrEqual),
3233
("testAssertNil", testAssertNil),
34+
("testAssertNotEqualValues", testAssertNotEqualValues),
3335
("testAssertNotEqualOptionals", testAssertNotEqualOptionals),
3436
("testAssertNotEqualArraySlices", testAssertNotEqualArraySlices),
3537
("testAssertNotEqualContiguousArrays", testAssertNotEqualContiguousArrays),
@@ -49,11 +51,18 @@ class FailureMessagesTestCase: XCTestCase {
4951
XCTAssert(false, "message", file: "test.swift")
5052
}
5153

54+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualValues' started at \d+:\d+:\d+\.\d+
55+
// CHECK: test.swift:[[@LINE+3]]: error: FailureMessagesTestCase.testAssertEqualValues : XCTAssertEqual failed: \("1"\) is not equal to \("2"\) - message
56+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualValues' failed \(\d+\.\d+ seconds\).
57+
func testAssertEqualValues() {
58+
XCTAssertEqual(1, 2, "message", file: "test.swift")
59+
}
60+
5261
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualOptionals' started at \d+:\d+:\d+\.\d+
5362
// CHECK: test.swift:[[@LINE+3]]: error: FailureMessagesTestCase.testAssertEqualOptionals : XCTAssertEqual failed: \("Optional\(1\)"\) is not equal to \("Optional\(2\)"\) - message
5463
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualOptionals' failed \(\d+\.\d+ seconds\).
5564
func testAssertEqualOptionals() {
56-
XCTAssertEqual(1, 2, "message", file: "test.swift")
65+
XCTAssertEqual(Optional(1), Optional(2), "message", file: "test.swift")
5766
}
5867

5968
// CHECK: Test Case 'FailureMessagesTestCase.testAssertEqualArraySlices' started at \d+:\d+:\d+\.\d+
@@ -133,11 +142,18 @@ class FailureMessagesTestCase: XCTestCase {
133142
XCTAssertNil("helloworld", "message", file: "test.swift")
134143
}
135144

145+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualValues' started at \d+:\d+:\d+\.\d+
146+
// CHECK: test.swift:[[@LINE+3]]: error: FailureMessagesTestCase.testAssertNotEqualValues : XCTAssertNotEqual failed: \("1"\) is equal to \("1"\) - message
147+
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualValues' failed \(\d+\.\d+ seconds\).
148+
func testAssertNotEqualValues() {
149+
XCTAssertNotEqual(1, 1, "message", file: "test.swift")
150+
}
151+
136152
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualOptionals' started at \d+:\d+:\d+\.\d+
137153
// CHECK: test.swift:[[@LINE+3]]: error: FailureMessagesTestCase.testAssertNotEqualOptionals : XCTAssertNotEqual failed: \("Optional\(1\)"\) is equal to \("Optional\(1\)"\) - message
138154
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualOptionals' failed \(\d+\.\d+ seconds\).
139155
func testAssertNotEqualOptionals() {
140-
XCTAssertNotEqual(1, 1, "message", file: "test.swift")
156+
XCTAssertNotEqual(Optional(1), Optional(1), "message", file: "test.swift")
141157
}
142158

143159
// CHECK: Test Case 'FailureMessagesTestCase.testAssertNotEqualArraySlices' started at \d+:\d+:\d+\.\d+
@@ -197,11 +213,11 @@ class FailureMessagesTestCase: XCTestCase {
197213
}
198214
}
199215
// CHECK: Test Suite 'FailureMessagesTestCase' failed at \d+:\d+:\d+\.\d+
200-
// CHECK: \t Executed 22 tests, with 22 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
216+
// CHECK: \t Executed 24 tests, with 24 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
201217

202218
XCTMain([testCase(FailureMessagesTestCase.allTests)])
203219

204220
// CHECK: Test Suite '.*\.xctest' failed at \d+:\d+:\d+\.\d+
205-
// CHECK: \t Executed 22 tests, with 22 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
221+
// CHECK: \t Executed 24 tests, with 24 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
206222
// CHECK: Test Suite 'All tests' failed at \d+:\d+:\d+\.\d+
207-
// CHECK: \t Executed 22 tests, with 22 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds
223+
// CHECK: \t Executed 24 tests, with 24 failures \(0 unexpected\) in \d+\.\d+ \(\d+\.\d+\) seconds

0 commit comments

Comments
 (0)