diff options
Diffstat (limited to 'tests/extmod/json_loads.py')
| -rw-r--r-- | tests/extmod/json_loads.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/extmod/json_loads.py b/tests/extmod/json_loads.py new file mode 100644 index 000000000..f9073c121 --- /dev/null +++ b/tests/extmod/json_loads.py @@ -0,0 +1,73 @@ +try: + import json +except ImportError: + print("SKIP") + raise SystemExit + + +def my_print(o): + if isinstance(o, dict): + print("sorted dict", sorted(o.items())) + else: + print(o) + + +my_print(json.loads("null")) +my_print(json.loads("false")) +my_print(json.loads("true")) +my_print(json.loads("1")) +my_print(json.loads("-2")) +my_print(json.loads('"abc\\u0064e"')) +my_print(json.loads("[]")) +my_print(json.loads("[null]")) +my_print(json.loads("[null,false,true]")) +my_print(json.loads(" [ null , false , true ] ")) +my_print(json.loads("{}")) +my_print(json.loads('{"a":true}')) +my_print(json.loads('{"a":null, "b":false, "c":true}')) +my_print(json.loads('{"a":[], "b":[1], "c":{"3":4}}')) +my_print(json.loads('"abc\\bdef"')) +my_print(json.loads('"abc\\fdef"')) +my_print(json.loads('"abc\\ndef"')) +my_print(json.loads('"abc\\rdef"')) +my_print(json.loads('"abc\\tdef"')) +my_print(json.loads('"abc\\uabcd"')) + +# whitespace handling +my_print(json.loads('{\n\t"a":[]\r\n, "b":[1], "c":{"3":4} \n\r\t\r\r\r\n}')) + +# loading nothing should raise exception +try: + json.loads("") +except ValueError: + print("ValueError") + +# string which is not closed +try: + my_print(json.loads('"abc')) +except ValueError: + print("ValueError") + +# unaccompanied closing brace +try: + my_print(json.loads("]")) +except ValueError: + print("ValueError") + +# unspecified object type +try: + my_print(json.loads("a")) +except ValueError: + print("ValueError") + +# bad property name +try: + my_print(json.loads('{{}:"abc"}')) +except ValueError: + print("ValueError") + +# unexpected characters after white space +try: + my_print(json.loads("[null] a")) +except ValueError: + print("ValueError") |
