@@ -38,7 +38,7 @@ final class CompactedTests: XCTestCase {
38
38
39
39
func testCollectionTraversals( ) {
40
40
for array in self . tests {
41
- validateIndexTraversals ( array)
41
+ validateIndexTraversals ( array. compacted ( ) )
42
42
}
43
43
}
44
44
@@ -55,14 +55,27 @@ final class CompactedTests: XCTestCase {
55
55
}
56
56
57
57
func testCollectionHashableConformances( ) {
58
- for array in self . tests {
59
- let seq = array. eraseToAnyHashableSequence ( )
60
- XCTAssertEqualHashValue (
61
- seq. compacted ( ) , seq. compactMap ( { $0 } ) . compacted ( )
62
- )
63
- XCTAssertEqualHashValue (
64
- array. compacted ( ) , array. compactMap ( { $0 } ) . compacted ( )
65
- )
58
+ for array1 in self . tests {
59
+ for array2 in self . tests {
60
+ // For non-equal Collections and Sequences that produce the same
61
+ // compacted, the compacted wrapper should produce the same hash.
62
+ // e.g. [1, 2, 3, nil, nil, 4].compacted() should produce the
63
+ // same hash as [1, nil, 2, nil, 3, 4].compacted()
64
+ guard !array1. elementsEqual ( array2) &&
65
+ array1. compacted ( ) == array2. compacted ( ) else {
66
+ continue
67
+ }
68
+
69
+ let seq = array1. eraseToAnyHashableSequence ( )
70
+ let seq2 = array2. eraseToAnyHashableSequence ( )
71
+
72
+ XCTAssertEqualHashValue (
73
+ seq. compacted ( ) , seq2. compacted ( )
74
+ )
75
+ XCTAssertEqualHashValue (
76
+ array1. compacted ( ) , array2. compacted ( )
77
+ )
78
+ }
66
79
}
67
80
}
68
81
}
0 commit comments