From d290f369d08990cba4b5c2e0d207f8603c5166b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Z=C3=BCger?= Date: Sun, 30 May 2021 14:28:13 +0200 Subject: [PATCH] tests/extmod/ujson: Add tests for dump/dumps separators argument. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Basically just copied ujson_dump(s).py and added various valid/invalid separator tests. Signed-off-by: Peter Züger --- tests/extmod/ujson_dump_separators.py | 62 ++++++++++++++++++++++++++ tests/extmod/ujson_dumps_separators.py | 60 +++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 tests/extmod/ujson_dump_separators.py create mode 100644 tests/extmod/ujson_dumps_separators.py diff --git a/tests/extmod/ujson_dump_separators.py b/tests/extmod/ujson_dump_separators.py new file mode 100644 index 0000000000..e19b99a26d --- /dev/null +++ b/tests/extmod/ujson_dump_separators.py @@ -0,0 +1,62 @@ +try: + from uio import StringIO + import ujson as json +except: + try: + from io import StringIO + import json + except ImportError: + print("SKIP") + raise SystemExit + +for sep in [ + None, + (", ", ": "), + (",", ": "), + (",", ":"), + [", ", ": "], + [",", ": "], + [",", ":"], +]: + s = StringIO() + json.dump(False, s, separators=sep) + print(s.getvalue()) + + s = StringIO() + json.dump({"a": (2, [3, None])}, s, separators=sep) + print(s.getvalue()) + + # dump to a small-int not allowed + try: + json.dump(123, 1, separators=sep) + except (AttributeError, OSError): # CPython and uPy have different errors + print("Exception") + + # dump to an object not allowed + try: + json.dump(123, {}, separators=sep) + except (AttributeError, OSError): # CPython and uPy have different errors + print("Exception") + + +try: + s = StringIO() + json.dump(False, s, separators={"a": 1}) +except (TypeError, ValueError): # CPython and uPy have different errors + print("Exception") + +# invalid separator types +for sep in [1, object()]: + try: + s = StringIO() + json.dump(False, s, separators=sep) + except TypeError: + print("Exception") + +# too many/ not enough separators +for sep in [(), (",", ":", "?"), (",",), []]: + try: + s = StringIO() + json.dump(False, s, separators=sep) + except ValueError: + print("Exception") diff --git a/tests/extmod/ujson_dumps_separators.py b/tests/extmod/ujson_dumps_separators.py new file mode 100644 index 0000000000..efb541fe8b --- /dev/null +++ b/tests/extmod/ujson_dumps_separators.py @@ -0,0 +1,60 @@ +try: + import ujson as json +except ImportError: + try: + import json + except ImportError: + print("SKIP") + raise SystemExit + +for sep in [ + None, + (", ", ": "), + (",", ": "), + (",", ":"), + [", ", ": "], + [",", ": "], + [",", ":"], +]: + print(json.dumps(False, separators=sep)) + print(json.dumps(True, separators=sep)) + print(json.dumps(None, separators=sep)) + print(json.dumps(1, separators=sep)) + print(json.dumps("abc", separators=sep)) + print(json.dumps("\x00\x01\x7e", separators=sep)) + print(json.dumps([], separators=sep)) + print(json.dumps([1], separators=sep)) + print(json.dumps([1, 2], separators=sep)) + print(json.dumps([1, True], separators=sep)) + print(json.dumps((), separators=sep)) + print(json.dumps((1,), separators=sep)) + print(json.dumps((1, 2), separators=sep)) + print(json.dumps((1, (2, 3)), separators=sep)) + print(json.dumps({}, separators=sep)) + print(json.dumps({"a": 1}, separators=sep)) + print(json.dumps({"a": (2, [3, None])}, separators=sep)) + print(json.dumps('"quoted"', separators=sep)) + print(json.dumps("space\n\r\tspace", separators=sep)) + print(json.dumps({None: -1}, separators=sep)) + print(json.dumps({False: 0}, separators=sep)) + print(json.dumps({True: 1}, separators=sep)) + print(json.dumps({1: 2}, separators=sep)) + +try: + json.dumps(False, separators={"a": 1}) +except (TypeError, ValueError): # CPython and uPy have different errors + print("Exception") + +# invalid separator types +for sep in [1, object()]: + try: + json.dumps(False, separators=sep) + except TypeError: + print("Exception") + +# too many/ not enough separators +for sep in [(), (",", ":", "?"), (",",), []]: + try: + json.dumps(False, separators=sep) + except ValueError: + print("Exception")