| 1 | import json as old_json |
| 2 | import x.json2 as json |
| 3 | |
| 4 | struct Legacy64BitNumbers { |
| 5 | signed i64 |
| 6 | unsigned u64 |
| 7 | } |
| 8 | |
| 9 | fn test_decode_float_numbers_into_64bit_integer_fields_matches_json_module() { |
| 10 | payload := '{"signed": -1756811041916.0, "unsigned": 1756811041916.0}' |
| 11 | expected := old_json.decode(Legacy64BitNumbers, payload)! |
| 12 | actual := json.decode[Legacy64BitNumbers](payload)! |
| 13 | assert actual == expected |
| 14 | } |
| 15 | |
| 16 | fn test_decode_float_strings_into_64bit_integer_fields_in_default_mode() { |
| 17 | payload := '{"signed": "-1756811041916.0", "unsigned": "1756811041916.0"}' |
| 18 | actual := json.decode[Legacy64BitNumbers](payload)! |
| 19 | assert actual.signed == i64(-1756811041916) |
| 20 | assert actual.unsigned == u64(1756811041916) |
| 21 | } |
| 22 | |