@@ -206,7 +206,6 @@ class TestNSData: XCTestCase {
206
206
( " test_dataHash " , test_dataHash) ,
207
207
( " test_genericBuffers " , test_genericBuffers) ,
208
208
( " test_writeFailure " , test_writeFailure) ,
209
- ( " testBasicConstruction " , testBasicConstruction) ,
210
209
( " testBridgingDefault " , testBridgingDefault) ,
211
210
( " testBridgingMutable " , testBridgingMutable) ,
212
211
( " testCopyBytes_oversized " , testCopyBytes_oversized) ,
@@ -248,8 +247,14 @@ class TestNSData: XCTestCase {
248
247
( " test_initializeWithBase64EncodedStringGetsDecodedData " , test_initializeWithBase64EncodedStringGetsDecodedData) ,
249
248
( " test_base64DecodeWithPadding1 " , test_base64DecodeWithPadding1) ,
250
249
( " test_base64DecodeWithPadding2 " , test_base64DecodeWithPadding2) ,
251
- ( " test_rangeOfData " , test_rangeOfData) ,
252
- ( " test_initMutableDataWithLength " , test_initMutableDataWithLength) ,
250
+ ( " test_rangeOfData " , test_rangeOfData) ,
251
+ ( " test_initNSMutableData() " , test_initNSMutableData) ,
252
+ ( " test_initNSMutableDataWithLength " , test_initNSMutableDataWithLength) ,
253
+ ( " test_initNSMutableDataWithCapacity " , test_initNSMutableDataWithCapacity) ,
254
+ ( " test_initNSMutableDataFromData " , test_initNSMutableDataFromData) ,
255
+ ( " test_initNSMutableDataFromBytes " , test_initNSMutableDataFromBytes) ,
256
+ ( " test_initNSMutableDataContentsOf " , test_initNSMutableDataContentsOf) ,
257
+ ( " test_initNSMutableDataBase64 " , test_initNSMutableDataBase64) ,
253
258
( " test_replaceBytes " , test_replaceBytes) ,
254
259
( " test_replaceBytesWithNil " , test_replaceBytesWithNil) ,
255
260
( " test_initDataWithCapacity " , test_initDataWithCapacity) ,
@@ -811,12 +816,116 @@ class TestNSData: XCTestCase {
811
816
812
817
}
813
818
814
- func test_initMutableDataWithLength( ) {
819
+ // Check all of the NSMutableData constructors are available.
820
+ func test_initNSMutableData( ) {
821
+ let mData = NSMutableData ( )
822
+ XCTAssertNotNil ( mData)
823
+ XCTAssertEqual ( mData. length, 0 )
824
+ }
825
+
826
+ func test_initNSMutableDataWithLength( ) {
815
827
let mData = NSMutableData ( length: 30 )
816
828
XCTAssertNotNil ( mData)
817
829
XCTAssertEqual ( mData!. length, 30 )
818
830
}
819
831
832
+ func test_initNSMutableDataWithCapacity( ) {
833
+ let mData = NSMutableData ( capacity: 30 )
834
+ XCTAssertNotNil ( mData)
835
+ XCTAssertEqual ( mData!. length, 0 )
836
+ }
837
+
838
+ func test_initNSMutableDataFromData( ) {
839
+ let data = Data ( bytes: [ 1 , 2 , 3 ] )
840
+ let mData = NSMutableData ( data: data)
841
+ XCTAssertEqual ( mData. length, 3 )
842
+ XCTAssertEqual ( NSData ( data: data) , mData)
843
+ }
844
+
845
+ func test_initNSMutableDataFromBytes( ) {
846
+ let data = Data ( [ 1 , 2 , 3 , 4 , 5 , 6 ] )
847
+ var testBytes : [ UInt8 ] = [ 1 , 2 , 3 , 4 , 5 , 6 ]
848
+
849
+ let md1 = NSMutableData ( bytes: & testBytes, length: testBytes. count)
850
+ XCTAssertEqual ( md1, NSData ( data: data) )
851
+
852
+ let md2 = NSMutableData ( bytes: nil , length: 0 )
853
+ XCTAssertEqual ( md2. length, 0 )
854
+
855
+ let testBuffer = malloc ( testBytes. count) !
856
+ let md3 = NSMutableData ( bytesNoCopy: testBuffer, length: testBytes. count)
857
+ md3. replaceBytes ( in: NSRange ( location: 0 , length: testBytes. count) , withBytes: & testBytes)
858
+ XCTAssertEqual ( md3, NSData ( data: data) )
859
+
860
+ let md4 = NSMutableData ( bytesNoCopy: & testBytes, length: testBytes. count, deallocator: nil )
861
+ XCTAssertEqual ( md4. length, testBytes. count)
862
+
863
+ let md5 = NSMutableData ( bytesNoCopy: & testBytes, length: testBytes. count, freeWhenDone: false )
864
+ XCTAssertEqual ( md5, NSData ( data: data) )
865
+ }
866
+
867
+ func test_initNSMutableDataContentsOf( ) {
868
+ let testDir = testBundle ( ) . resourcePath
869
+ let filename = testDir!. appending ( " /NSStringTestData.txt " )
870
+ let url = URL ( fileURLWithPath: filename)
871
+
872
+ func testText( _ mData: NSMutableData ? ) {
873
+ guard let mData = mData else {
874
+ XCTFail ( " Contents of file are Nil " )
875
+ return
876
+ }
877
+ if let txt = String ( data: Data ( referencing: mData) , encoding: . ascii) {
878
+ XCTAssertEqual ( txt, " swift-corelibs-foundation " )
879
+ } else {
880
+ XCTFail ( " Cant convert to string " )
881
+ }
882
+ }
883
+
884
+ let contents1 = NSMutableData ( contentsOfFile: filename)
885
+ XCTAssertNotNil ( contents1)
886
+ testText ( contents1)
887
+
888
+ let contents2 = try ? NSMutableData ( contentsOfFile: filename, options: [ ] )
889
+ XCTAssertNotNil ( contents2)
890
+ testText ( contents2)
891
+
892
+ let contents3 = NSMutableData ( contentsOf: url)
893
+ XCTAssertNotNil ( contents3)
894
+ testText ( contents3)
895
+
896
+ let contents4 = try ? NSMutableData ( contentsOf: url, options: [ ] )
897
+ XCTAssertNotNil ( contents4)
898
+ testText ( contents4)
899
+
900
+ // Test failure to read
901
+ let badFilename = " does not exist "
902
+ let badUrl = URL ( fileURLWithPath: badFilename)
903
+
904
+ XCTAssertNil ( NSMutableData ( contentsOfFile: badFilename) )
905
+ XCTAssertNil ( try ? NSMutableData ( contentsOfFile: badFilename, options: [ ] ) )
906
+ XCTAssertNil ( NSMutableData ( contentsOf: badUrl) )
907
+ XCTAssertNil ( try ? NSMutableData ( contentsOf: badUrl, options: [ ] ) )
908
+ }
909
+
910
+ func test_initNSMutableDataBase64( ) {
911
+ let srcData = Data ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] )
912
+ let base64Data = srcData. base64EncodedData ( )
913
+ let base64String = srcData. base64EncodedString ( )
914
+ XCTAssertEqual ( base64String, " AQIDBAUGBwgJAA== " )
915
+
916
+ let mData1 = NSMutableData ( base64Encoded: base64Data)
917
+ XCTAssertNotNil ( mData1)
918
+ XCTAssertEqual ( mData1!, NSData ( data: srcData) )
919
+
920
+ let mData2 = NSMutableData ( base64Encoded: base64String)
921
+ XCTAssertNotNil ( mData2)
922
+ XCTAssertEqual ( mData2!, NSData ( data: srcData) )
923
+
924
+ // Test bad input
925
+ XCTAssertNil ( NSMutableData ( base64Encoded: Data ( [ 1 , 2 , 3 ] ) , options: [ ] ) )
926
+ XCTAssertNil ( NSMutableData ( base64Encoded: " x " , options: [ ] ) )
927
+ }
928
+
820
929
func test_replaceBytes( ) {
821
930
var data = Data ( bytes: [ 0 , 0 , 0 , 0 , 0 ] )
822
931
let newData = Data ( bytes: [ 1 , 2 , 3 , 4 , 5 ] )
0 commit comments