Skip to content

Commit e1b2b0a

Browse files
author
Matt Zanchelli
committed
Allow providing a custom message to XCTAssertUnorderedEqualSequences
1 parent 9d9687f commit e1b2b0a

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

Tests/SwiftAlgorithmsTests/TestUtilities.swift

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,15 @@ func XCTAssertEqualSequences<S1: Sequence, S2: Sequence>(
8989
func XCTAssertUnorderedEqualSequences<S1: Sequence, S2: Sequence>(
9090
_ expression1: @autoclosure () throws -> S1,
9191
_ expression2: @autoclosure () throws -> S2,
92+
_ message: @autoclosure () -> String = "",
9293
file: StaticString = #file, line: UInt = #line
9394
) rethrows where S1.Element: Equatable, S1.Element == S2.Element {
95+
func fail(_ reason: String) {
96+
let message = message()
97+
XCTFail(message.isEmpty ? reason : "\(message) - \(reason)",
98+
file: file, line: line)
99+
}
100+
94101
var s1 = Array(try expression1())
95102
var missing: [S1.Element] = []
96103
for elt in try expression2() {
@@ -101,15 +108,14 @@ func XCTAssertUnorderedEqualSequences<S1: Sequence, S2: Sequence>(
101108
s1.remove(at: idx)
102109
}
103110

104-
XCTAssertTrue(
105-
missing.isEmpty, "first sequence missing '\(missing)' elements from second sequence",
106-
file: file, line: line
107-
)
111+
if !missing.isEmpty {
112+
fail("first sequence missing '\(missing)' elements from second sequence")
113+
}
114+
115+
if !s1.isEmpty {
116+
fail("first sequence contains \(s1) missing from second sequence")
117+
}
108118

109-
XCTAssertTrue(
110-
s1.isEmpty, "first sequence contains \(s1) missing from second sequence",
111-
file: file, line: line
112-
)
113119
}
114120

115121
func XCTAssertEqualSequences<S1: Sequence, S2: Sequence>(

0 commit comments

Comments
 (0)