Skip to content

Commit e80d3b2

Browse files
authored
Merge pull request #1591 from cheec/testindexset
2 parents 0da7da2 + d0b58d1 commit e80d3b2

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

TestFoundation/TestIndexSet.swift

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,20 +139,49 @@ class TestIndexSet : XCTestCase {
139139
}
140140

141141
func test_removal() {
142-
let removalSet = NSMutableIndexSet(indexesIn: NSRange(location: 0, length: 10))
142+
var removalSet = NSMutableIndexSet(indexesIn: NSRange(location: 0, length: 10))
143143
removalSet.remove(0)
144144
removalSet.remove(in: NSRange(location: 9, length: 5))
145145
removalSet.remove(in: NSRange(location: 2, length: 4))
146146
XCTAssertEqual(removalSet.count, 4)
147147
XCTAssertEqual(removalSet.firstIndex, 1)
148148
XCTAssertEqual(removalSet.lastIndex, 8)
149149

150-
var additionSet = IndexSet()
151-
additionSet.insert(1)
152-
additionSet.insert(integersIn: 6..<9)
150+
var expected = IndexSet()
151+
expected.insert(1)
152+
expected.insert(integersIn: 6..<9)
153+
XCTAssertTrue(removalSet.isEqual(to: expected))
154+
155+
// Removing a non-existent element has no effect
156+
removalSet.remove(9)
157+
XCTAssertTrue(removalSet.isEqual(to: expected))
158+
159+
removalSet.removeAllIndexes()
153160

154-
XCTAssertTrue(removalSet.isEqual(to: additionSet))
161+
expected = IndexSet()
162+
XCTAssertTrue(removalSet.isEqual(to: expected))
155163

164+
// Set removal
165+
removalSet = NSMutableIndexSet(indexesIn: NSRange(location: 0, length: 10))
166+
removalSet.remove(IndexSet(integersIn: 8..<11))
167+
removalSet.remove(IndexSet(integersIn: 0..<2))
168+
removalSet.remove(IndexSet(integersIn: 4..<6))
169+
XCTAssertEqual(removalSet.count, 4)
170+
XCTAssertEqual(removalSet.firstIndex, 2)
171+
XCTAssertEqual(removalSet.lastIndex, 7)
172+
173+
expected = IndexSet()
174+
expected.insert(integersIn: 2..<4)
175+
expected.insert(integersIn: 6..<8)
176+
XCTAssertTrue(removalSet.isEqual(to: expected))
177+
178+
// Removing an empty set has no effect
179+
removalSet.remove(IndexSet())
180+
XCTAssertTrue(removalSet.isEqual(to: expected))
181+
182+
// Removing non-existent elements has no effect
183+
removalSet.remove(IndexSet(integersIn: 0..<2))
184+
XCTAssertTrue(removalSet.isEqual(to: expected))
156185
}
157186

158187
func test_addition() {

0 commit comments

Comments
 (0)