circuitpython/tests/extmod/json_loads.py
Damien George 7729e80fdd all: Go back to using default ruff quote style.
Commit dc2fcfcc55 seems to have accidentally
changed the ruff quote style to "preserve", instead of keeping it at the
default which is "double".

Put it back to the default and update relevant .py files with this rule.

Signed-off-by: Damien George <damien@micropython.org>
2025-07-24 12:48:18 +10:00

97 lines
2.1 KiB
Python

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")
# incomplete object declaration
try:
my_print(json.loads('{"a":0,'))
except ValueError:
print("ValueError")
# incomplete nested array declaration
try:
my_print(json.loads('{"a":0, ['))
except ValueError:
print("ValueError")
# incomplete array declaration
try:
my_print(json.loads("[0,"))
except ValueError:
print("ValueError")
# incomplete nested object declaration
try:
my_print(json.loads('[0, {"a":0, '))
except ValueError:
print("ValueError")