@@ -51,17 +51,24 @@ func expectRoundTripEquality<T : Codable>(of value: T, encode: (T) throws -> Dat
51
51
XCTAssertEqual ( value, decoded, " Decoded \( T . self) < \( decoded) > not equal to original < \( value) > " )
52
52
}
53
53
54
- func expectRoundTripEqualityThroughJSON< T : Codable > ( for value: T ,
55
- encoder: JSONEncoder = JSONEncoder ( ) ,
56
- decoder: JSONDecoder = JSONDecoder ( ) ) where T : Equatable {
54
+ func expectRoundTripEqualityThroughJSON< T : Codable > ( for value: T ) where T : Equatable {
55
+ let inf = " INF " , negInf = " -INF " , nan = " NaN "
57
56
let encode = { ( _ value: T ) throws -> Data in
57
+ let encoder = JSONEncoder ( )
58
+ encoder. nonConformingFloatEncodingStrategy = . convertToString( positiveInfinity: inf,
59
+ negativeInfinity: negInf,
60
+ nan: nan)
58
61
return try encoder. encode ( value)
59
62
}
60
-
63
+
61
64
let decode = { ( _ data: Data ) throws -> T in
65
+ let decoder = JSONDecoder ( )
66
+ decoder. nonConformingFloatDecodingStrategy = . convertFromString( positiveInfinity: inf,
67
+ negativeInfinity: negInf,
68
+ nan: nan)
62
69
return try decoder. decode ( T . self, from: data)
63
70
}
64
-
71
+
65
72
expectRoundTripEquality ( of: value, encode: encode, decode: decode)
66
73
}
67
74
@@ -261,6 +268,7 @@ class TestCodable : XCTestCase {
261
268
CGRect . zero,
262
269
CGRect ( origin: CGPoint ( x: 10 , y: 20 ) , size: CGSize ( width: 30 , height: 40 ) ) ,
263
270
CGRect ( origin: CGPoint ( x: - 10 , y: - 20 ) , size: CGSize ( width: - 30 , height: - 40 ) ) ,
271
+ CGRect . null,
264
272
// Disabled due to limit on magnitude in JSON. See SR-5346
265
273
// CGRect.infinite
266
274
]
@@ -269,20 +277,6 @@ class TestCodable : XCTestCase {
269
277
for rect in cgrectValues {
270
278
expectRoundTripEqualityThroughJSON ( for: rect)
271
279
}
272
-
273
- do {
274
- let rect = CGRect . null
275
- let encoder = JSONEncoder ( )
276
- let decoder = JSONDecoder ( )
277
- let inf = " INF " , negInf = " -INF " , nan = " NaN "
278
- encoder. nonConformingFloatEncodingStrategy = . convertToString( positiveInfinity: inf,
279
- negativeInfinity: negInf,
280
- nan: nan)
281
- decoder. nonConformingFloatDecodingStrategy = . convertFromString( positiveInfinity: inf,
282
- negativeInfinity: negInf,
283
- nan: nan)
284
- expectRoundTripEqualityThroughJSON ( for: rect, encoder: encoder, decoder: decoder)
285
- }
286
280
}
287
281
288
282
}
0 commit comments