Skip to content

Commit ad620ff

Browse files
committed
SR-7195: Add round-trip serialisation test case.
1 parent 72e7bbd commit ad620ff

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

TestFoundation/TestJSONSerialization.swift

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1244,6 +1244,23 @@ extension TestJSONSerialization {
12441244
XCTAssertEqual(try trySerialize([-Double.greatestFiniteMagnitude]), "[-1.7976931348623157e+308]")
12451245
XCTAssertEqual(try trySerialize([Double.greatestFiniteMagnitude]), "[1.7976931348623157e+308]")
12461246
XCTAssertEqual(try trySerialize([Double(-1.0), Double(1.0)]), "[-1,1]")
1247+
1248+
// Test round-tripping Double values
1249+
let value1 = 7.7087009966199993
1250+
let value2 = 7.7087009966200002
1251+
let dict1 = ["value": value1]
1252+
let dict2 = ["value": value2]
1253+
let jsonData1 = try! JSONSerialization.data(withJSONObject: dict1)
1254+
let jsonData2 = try! JSONSerialization.data(withJSONObject: dict2)
1255+
let jsonString1 = String(decoding: jsonData1, as: UTF8.self)
1256+
let jsonString2 = String(decoding: jsonData2, as: UTF8.self)
1257+
1258+
XCTAssertEqual(jsonString1, "{\"value\":7.708700996619999}")
1259+
XCTAssertEqual(jsonString2, "{\"value\":7.70870099662}")
1260+
let decodedDict1 = try! JSONSerialization.jsonObject(with: jsonData1) as! [String : Double]
1261+
let decodedDict2 = try! JSONSerialization.jsonObject(with: jsonData2) as! [String : Double]
1262+
XCTAssertEqual(decodedDict1["value"], value1)
1263+
XCTAssertEqual(decodedDict2["value"], value2)
12471264
}
12481265

12491266
func test_serialize_Decimal() {

0 commit comments

Comments
 (0)