@@ -159,11 +159,11 @@ internal struct RemoveLastNTest {
159
159
}
160
160
}
161
161
162
- internal struct RemoveSubrangeTest {
163
- let collection : [ OpaqueValue < Int > ]
164
- let rangeSelection : RangeSelection
165
- let expected : [ Int ]
166
- let loc : SourceLoc
162
+ public struct RemoveSubrangeTest {
163
+ public let collection : [ OpaqueValue < Int > ]
164
+ public let rangeSelection : RangeSelection
165
+ public let expected : [ Int ]
166
+ public let loc : SourceLoc
167
167
168
168
internal init (
169
169
collection: [ Int ] , rangeSelection: RangeSelection , expected: [ Int ] ,
@@ -394,6 +394,48 @@ public let replaceRangeTests: [ReplaceSubrangeTest] = [
394
394
closedExpected: [ 1010 , 8080 , 9090 ] ) ,
395
395
]
396
396
397
+ public let removeRangeTests : [ RemoveSubrangeTest ] = [
398
+ RemoveSubrangeTest (
399
+ collection: [ ] ,
400
+ rangeSelection: . emptyRange,
401
+ expected: [ ] ) ,
402
+
403
+ RemoveSubrangeTest (
404
+ collection: [ 1010 ] ,
405
+ rangeSelection: . middle,
406
+ expected: [ ] ) ,
407
+
408
+ RemoveSubrangeTest (
409
+ collection: [ 1010 , 2020 , 3030 , 4040 ] ,
410
+ rangeSelection: . leftHalf,
411
+ expected: [ 3030 , 4040 ] ) ,
412
+
413
+ RemoveSubrangeTest (
414
+ collection: [ 1010 , 2020 , 3030 , 4040 ] ,
415
+ rangeSelection: . rightHalf,
416
+ expected: [ 1010 , 2020 ] ) ,
417
+
418
+ RemoveSubrangeTest (
419
+ collection: [ 1010 , 2020 , 3030 , 4040 , 5050 ] ,
420
+ rangeSelection: . middle,
421
+ expected: [ 1010 , 5050 ] ) ,
422
+
423
+ RemoveSubrangeTest (
424
+ collection: [ 1010 , 2020 , 3030 , 4040 , 5050 , 6060 ] ,
425
+ rangeSelection: . leftHalf,
426
+ expected: [ 4040 , 5050 , 6060 ] ) ,
427
+
428
+ RemoveSubrangeTest (
429
+ collection: [ 1010 , 2020 , 3030 , 4040 , 5050 , 6060 ] ,
430
+ rangeSelection: . rightHalf,
431
+ expected: [ 1010 , 2020 , 3030 ] ) ,
432
+
433
+ RemoveSubrangeTest (
434
+ collection: [ 1010 , 2020 , 3030 , 4040 , 5050 , 6060 ] ,
435
+ rangeSelection: . middle,
436
+ expected: [ 1010 , 6060 ] ) ,
437
+ ]
438
+
397
439
extension TestSuite {
398
440
/// Adds a set of tests for `RangeReplaceableCollection`.
399
441
///
@@ -808,50 +850,8 @@ self.test("\(testNamePrefix).removeFirst(n: Int)/removeTooMany/semantics") {
808
850
// removeSubrange()
809
851
//===----------------------------------------------------------------------===//
810
852
811
- self . test ( " \( testNamePrefix) .removeSubrange()/semantics " ) {
812
- let tests : [ RemoveSubrangeTest ] = [
813
- RemoveSubrangeTest (
814
- collection: [ ] ,
815
- rangeSelection: . emptyRange,
816
- expected: [ ] ) ,
817
-
818
- RemoveSubrangeTest (
819
- collection: [ 1010 ] ,
820
- rangeSelection: . middle,
821
- expected: [ ] ) ,
822
-
823
- RemoveSubrangeTest (
824
- collection: [ 1010 , 2020 , 3030 , 4040 ] ,
825
- rangeSelection: . leftHalf,
826
- expected: [ 3030 , 4040 ] ) ,
827
-
828
- RemoveSubrangeTest (
829
- collection: [ 1010 , 2020 , 3030 , 4040 ] ,
830
- rangeSelection: . rightHalf,
831
- expected: [ 1010 , 2020 ] ) ,
832
-
833
- RemoveSubrangeTest (
834
- collection: [ 1010 , 2020 , 3030 , 4040 , 5050 ] ,
835
- rangeSelection: . middle,
836
- expected: [ 1010 , 5050 ] ) ,
837
-
838
- RemoveSubrangeTest (
839
- collection: [ 1010 , 2020 , 3030 , 4040 , 5050 , 6060 ] ,
840
- rangeSelection: . leftHalf,
841
- expected: [ 4040 , 5050 , 6060 ] ) ,
842
-
843
- RemoveSubrangeTest (
844
- collection: [ 1010 , 2020 , 3030 , 4040 , 5050 , 6060 ] ,
845
- rangeSelection: . rightHalf,
846
- expected: [ 1010 , 2020 , 3030 ] ) ,
847
-
848
- RemoveSubrangeTest (
849
- collection: [ 1010 , 2020 , 3030 , 4040 , 5050 , 6060 ] ,
850
- rangeSelection: . middle,
851
- expected: [ 1010 , 6060 ] ) ,
852
- ]
853
-
854
- for test in tests {
853
+ self . test ( " \( testNamePrefix) .removeSubrange()/range/semantics " ) {
854
+ for test in removeRangeTests {
855
855
var c = makeWrappedCollection ( test. collection)
856
856
let rangeToRemove = test. rangeSelection. range ( in: c)
857
857
c. removeSubrange ( rangeToRemove)
@@ -862,6 +862,18 @@ self.test("\(testNamePrefix).removeSubrange()/semantics") {
862
862
}
863
863
}
864
864
865
+ self . test ( " \( testNamePrefix) .replaceSubrange()/closedRange/semantics " ) {
866
+ for test in removeRangeTests. filter ( { !$0. rangeSelection. isEmpty } ) {
867
+ var c = makeWrappedCollection ( test. collection)
868
+ let rangeToRemove = test. rangeSelection. closedRange ( in: c)
869
+ c. removeSubrange ( rangeToRemove)
870
+ expectEqualSequence (
871
+ test. expected,
872
+ c. map { extractValue ( $0) . value } ,
873
+ stackTrace: SourceLocStack ( ) . with ( test. loc) )
874
+ }
875
+ }
876
+
865
877
//===----------------------------------------------------------------------===//
866
878
// removeAll()
867
879
//===----------------------------------------------------------------------===//
0 commit comments