@@ -27,7 +27,9 @@ class TestNSURLRequest : XCTestCase {
27
27
( " test_mutableCopy_1 " , test_mutableCopy_1) ,
28
28
( " test_mutableCopy_2 " , test_mutableCopy_2) ,
29
29
( " test_mutableCopy_3 " , test_mutableCopy_3) ,
30
- ( " test_NSCoding " , test_NSCoding) ,
30
+ ( " test_NSCoding_1 " , test_NSCoding_1) ,
31
+ ( " test_NSCoding_2 " , test_NSCoding_2) ,
32
+ ( " test_NSCoding_3 " , test_NSCoding_3)
31
33
]
32
34
}
33
35
@@ -205,12 +207,37 @@ class TestNSURLRequest : XCTestCase {
205
207
XCTAssertNil ( originalRequest. allHTTPHeaderFields)
206
208
}
207
209
208
- func test_NSCoding ( ) {
210
+ func test_NSCoding_1 ( ) {
209
211
let url = URL ( string: " https://apple.com " ) !
210
-
211
212
let requestA = NSURLRequest ( url: url)
212
- XCTAssertEqual ( requestA. url, url)
213
213
let requestB = NSKeyedUnarchiver . unarchiveObject ( with: NSKeyedArchiver . archivedData ( withRootObject: requestA) ) as! NSURLRequest
214
214
XCTAssertEqual ( requestA, requestB, " Archived then unarchived url request must be equal. " )
215
215
}
216
+
217
+ func test_NSCoding_2( ) {
218
+ let url = URL ( string: " https://apple.com " ) !
219
+ let requestA = NSMutableURLRequest ( url: url)
220
+ //Also checks crash on NSData.bytes
221
+ requestA. httpBody = Data ( )
222
+ let requestB = NSKeyedUnarchiver . unarchiveObject ( with: NSKeyedArchiver . archivedData ( withRootObject: requestA) ) as! NSURLRequest
223
+ XCTAssertEqual ( requestA, requestB, " Archived then unarchived url request must be equal. " )
224
+ //Check `.httpBody` as it is not checked in `isEqual(_:)`
225
+ XCTAssertEqual ( requestB. httpBody, requestA. httpBody)
226
+ }
227
+
228
+ func test_NSCoding_3( ) {
229
+ let url = URL ( string: " https://apple.com " ) !
230
+ let urlForDocument = URL ( string: " http://ibm.com " ) !
231
+
232
+ let requestA = NSMutableURLRequest ( url: url)
233
+ requestA. mainDocumentURL = urlForDocument
234
+ //Also checks crash on NSData.bytes
235
+ requestA. httpBody = Data ( bytes: [ 1 , 2 , 3 ] )
236
+ let requestB = NSKeyedUnarchiver . unarchiveObject ( with: NSKeyedArchiver . archivedData ( withRootObject: requestA) ) as! NSURLRequest
237
+ XCTAssertEqual ( requestA, requestB, " Archived then unarchived url request must be equal. " )
238
+ //Check `.httpBody` as it is not checked in `isEqual(_:)`
239
+ XCTAssertNotNil ( requestB. httpBody)
240
+ XCTAssertEqual ( 3 , requestB. httpBody!. count)
241
+ XCTAssertEqual ( requestB. httpBody, requestA. httpBody)
242
+ }
216
243
}
0 commit comments