@@ -15,9 +15,9 @@ import SwiftFoundation
15
15
import SwiftXCTest
16
16
#endif
17
17
18
- private struct Box {
19
- fileprivate let ns : NSCharacterSet
20
- fileprivate let swift : CharacterSet
18
+ private struct Box : Equatable {
19
+ private let ns : NSCharacterSet
20
+ private let swift : CharacterSet
21
21
22
22
private init ( ns: NSCharacterSet , swift: CharacterSet ) {
23
23
self . ns = ns
@@ -38,68 +38,22 @@ private struct Box {
38
38
return Box ( ns: NSCharacterSet . decimalDigits. _bridgeToObjectiveC ( ) ,
39
39
swift: CharacterSet . decimalDigits)
40
40
}
41
- }
42
-
43
- private func assertEqual( _ lhs: Box ,
44
- _ rhs: Box ,
45
- _ message: @autoclosure ( ) -> String = " " ,
46
- file: StaticString = #file,
47
- line: UInt = #line) {
48
-
49
- assert ( equal: true , lhs, rhs, message, file: file, line: line)
50
- }
51
-
52
- private func assertNotEqual( _ lhs: Box ,
53
- _ rhs: Box ,
54
- _ message: @autoclosure ( ) -> String = " " ,
55
- file: StaticString = #file,
56
- line: UInt = #line) {
57
-
58
- assert ( equal: false , lhs, rhs, message, file: file, line: line)
59
- }
60
41
61
- private func assert< T: Equatable > ( equal: Bool ,
62
- _ lhs: T ,
63
- _ rhs: T ,
64
- _ message: @autoclosure ( ) -> String = " " ,
65
- file: StaticString = #file,
66
- line: UInt = #line) {
67
-
68
- if equal {
69
- XCTAssertEqual ( lhs, rhs, message, file: file, line: line)
70
- }
71
- else {
72
- XCTAssertNotEqual ( lhs, rhs, message, file: file, line: line)
73
- }
74
- }
42
+ // MARK: Equatable
75
43
76
- private func assert( equal: Bool ,
77
- _ lhs: Box ,
78
- _ rhs: Box ,
79
- _ message: @autoclosure ( ) -> String = " " ,
80
- file: StaticString = #file,
81
- line: UInt = #line) {
82
-
83
- for pair in [ ( lhs, rhs) , ( rhs, lhs) ] {
84
- assert ( equal: equal, pair. 0 . ns, pair. 1 . ns, message, file: file, line: line)
85
- assert ( equal: equal, pair. 0 . swift, pair. 1 . swift, message, file: file, line: line)
86
-
87
- assert ( equal: equal,
88
- pair. 0 . ns. _bridgeToSwift ( ) ,
89
- pair. 1 . ns. _bridgeToSwift ( ) ,
90
- message,
91
- file: file,
92
- line: line)
93
-
94
- assert ( equal: equal,
95
- pair. 0 . swift. _bridgeToObjectiveC ( ) ,
96
- pair. 1 . swift. _bridgeToObjectiveC ( ) ,
97
- message,
98
- file: file,
99
- line: line)
100
-
101
- XCTAssertTrue ( pair. 0 . ns. isEqual ( pair. 1 . ns) == equal, message, file: file, line: line)
102
- XCTAssertTrue ( pair. 0 . ns. isEqual ( pair. 1 . swift) == equal, message, file: file, line: line)
44
+ static func == ( lhs: Box , rhs: Box ) -> Bool {
45
+ return lhs. ns == rhs. ns
46
+ && lhs. swift == rhs. swift
47
+ && lhs. ns. _bridgeToSwift ( ) == rhs. ns. _bridgeToSwift ( )
48
+ && lhs. swift. _bridgeToObjectiveC ( ) == rhs. swift. _bridgeToObjectiveC ( )
49
+ && lhs. ns. isEqual ( rhs. ns)
50
+ && lhs. ns. isEqual ( rhs. swift)
51
+ && lhs. ns. isEqual ( rhs. ns. _bridgeToSwift ( ) )
52
+ && lhs. ns. isEqual ( rhs. swift. _bridgeToObjectiveC ( ) )
53
+ && lhs. swift. _bridgeToObjectiveC ( ) . isEqual ( rhs. ns)
54
+ && lhs. swift. _bridgeToObjectiveC ( ) . isEqual ( rhs. swift)
55
+ && lhs. swift. _bridgeToObjectiveC ( ) . isEqual ( rhs. ns. _bridgeToSwift ( ) )
56
+ && lhs. swift. _bridgeToObjectiveC ( ) . isEqual ( rhs. swift. _bridgeToObjectiveC ( ) )
103
57
}
104
58
}
105
59
@@ -389,14 +343,14 @@ class TestNSCharacterSet : XCTestCase {
389
343
]
390
344
391
345
for pair in equalPairs {
392
- assertEqual ( Box ( charactersIn: pair. 0 ) , Box ( charactersIn: pair. 1 ) )
346
+ XCTAssertEqual ( Box ( charactersIn: pair. 0 ) , Box ( charactersIn: pair. 1 ) )
393
347
}
394
- assertEqual ( Box . alphanumerics, Box . alphanumerics)
348
+ XCTAssertEqual ( Box . alphanumerics, Box . alphanumerics)
395
349
396
350
for pair in notEqualPairs {
397
- assertNotEqual ( Box ( charactersIn: pair. 0 ) , Box ( charactersIn: pair. 1 ) )
351
+ XCTAssertNotEqual ( Box ( charactersIn: pair. 0 ) , Box ( charactersIn: pair. 1 ) )
398
352
}
399
- assertNotEqual ( Box . alphanumerics, Box . decimalDigits)
353
+ XCTAssertNotEqual ( Box . alphanumerics, Box . decimalDigits)
400
354
}
401
355
402
356
}
0 commit comments