|
| 1 | +import json |
| 2 | +import math |
1 | 3 | from datetime import datetime
|
2 | 4 | from unittest import TestCase
|
3 | 5 |
|
4 |
| -import tests |
5 | 6 | from json_urley import query_str_to_json_obj, json_obj_to_query_str, JsonUrleyError
|
6 | 7 |
|
7 | 8 |
|
@@ -400,3 +401,32 @@ def test_error_path_3(self):
|
400 | 401 | query_str = "value=1&value.child.grandchild=2"
|
401 | 402 | with self.assertRaises(JsonUrleyError):
|
402 | 403 | query_str_to_json_obj(query_str)
|
| 404 | + |
| 405 | + def test_uuid_convert(self): |
| 406 | + json_obj = {"id": "1194739a-8e75-47c1-98dd-887055a560c6"} |
| 407 | + query_str = json_obj_to_query_str(json_obj) |
| 408 | + expected_query_str = "id=1194739a-8e75-47c1-98dd-887055a560c6" |
| 409 | + self.assertEqual(query_str, expected_query_str) |
| 410 | + result = query_str_to_json_obj(query_str) |
| 411 | + self.assertEqual(json_obj, result) |
| 412 | + |
| 413 | + def test_special_number_str(self): |
| 414 | + numbers = ["NaN", "Infinity", "-Infinity"] |
| 415 | + for n in numbers: |
| 416 | + json_obj = {"id": n} |
| 417 | + query_str = json_obj_to_query_str(json_obj) |
| 418 | + expected_query_str = f"id~s={n}" |
| 419 | + self.assertEqual(query_str, expected_query_str) |
| 420 | + result = query_str_to_json_obj(query_str) |
| 421 | + self.assertEqual(json_obj, result) |
| 422 | + |
| 423 | + def test_special_number(self): |
| 424 | + numbers = [math.nan, math.inf, -math.inf] |
| 425 | + strings = ["NaN", "Infinity", "-Infinity"] |
| 426 | + for n, s in zip(numbers, strings): |
| 427 | + json_obj = {"id": n} |
| 428 | + query_str = json_obj_to_query_str(json_obj) |
| 429 | + expected_query_str = f"id={s}" |
| 430 | + self.assertEqual(query_str, expected_query_str) |
| 431 | + result = query_str_to_json_obj(query_str) |
| 432 | + self.assertEqual(json.dumps(json_obj), json.dumps(result)) |
0 commit comments