@@ -508,6 +508,8 @@ class TestNSData: XCTestCase {
508
508
( " test_sliceHash " , test_sliceHash) ,
509
509
( " test_slice_resize_growth " , test_slice_resize_growth) ,
510
510
// ("test_sliceEnumeration", test_sliceEnumeration),
511
+ ( " test_sliceInsertion " , test_sliceInsertion) ,
512
+ ( " test_sliceDeletion " , test_sliceDeletion) ,
511
513
]
512
514
}
513
515
@@ -3952,5 +3954,31 @@ extension TestNSData {
3952
3954
XCTAssertEqual(Data(bytes: [0]), regionData[2]) //fails
3953
3955
}
3954
3956
*/
3957
+
3958
+ func test_sliceInsertion( ) {
3959
+ // https://bugs.swift.org/browse/SR-5810
3960
+ let baseData = Data ( [ 0 , 1 , 2 , 3 , 4 , 5 ] )
3961
+ var sliceData = baseData [ 2 ..< 4 ]
3962
+ let sliceDataEndIndexBeforeInsertion = sliceData. endIndex
3963
+ let elementToInsert : UInt8 = 0x07
3964
+ sliceData. insert ( elementToInsert, at: sliceData. startIndex)
3965
+ XCTAssertEqual ( sliceData. first, elementToInsert)
3966
+ XCTAssertEqual ( sliceData. startIndex, 2 )
3967
+ XCTAssertEqual ( sliceDataEndIndexBeforeInsertion, 4 )
3968
+ XCTAssertEqual ( sliceData. endIndex, sliceDataEndIndexBeforeInsertion + 1 )
3969
+ }
3970
+
3971
+ func test_sliceDeletion( ) {
3972
+ // https://bugs.swift.org/browse/SR-5810
3973
+ let baseData = Data ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ] )
3974
+ let sliceData = baseData [ 2 ..< 6 ]
3975
+ var mutableSliceData = sliceData
3976
+ let numberOfElementsToDelete = 2
3977
+ let subrangeToDelete = mutableSliceData. startIndex..< mutableSliceData. startIndex. advanced ( by: numberOfElementsToDelete)
3978
+ mutableSliceData. removeSubrange ( subrangeToDelete)
3979
+ XCTAssertEqual ( sliceData [ sliceData. startIndex + numberOfElementsToDelete] , mutableSliceData. first)
3980
+ XCTAssertEqual ( mutableSliceData. startIndex, 2 )
3981
+ XCTAssertEqual ( mutableSliceData. endIndex, sliceData. endIndex - numberOfElementsToDelete)
3982
+ }
3955
3983
}
3956
3984
0 commit comments