import unittest from minijson import dumps, loads, dumps_object, loads_object, EncodingError, DecodingError class TestMiniJSON(unittest.TestCase): def test_exceptions(self): a = {} for i in range(65535): a[i] = i*2 self.assertRaises(EncodingError, lambda: dumps(a)) a = [] for i in range(65535): a.append(i) self.assertRaises(EncodingError, lambda: dumps(a)) def test_dumps(self): v = {"name": "land", "operator_id": "dupa", "parameters": {"lat": 45.22999954223633, "lon": 54.79999923706055, "alt": 234}} b = dumps(v) print(f'Serialized {b}') c = loads(b) print(f'Recovered {c}') self.assertEqual(v, c) def test_loads_exception(self): b = b'\x1A' self.assertRaises(DecodingError, lambda: loads(b)) def test_loads(self): a = loads(b'\x0B\x03\x04name\x84land\x0Boperator_id\x84dupa\x0Aparameters\x0B\x03\x03lat\x09B4\xeb\x85\x03lon\x09B[33\x03alt\x09Cj\x00\x00') self.assertEqual(a, {"name": "land", "operator_id": "dupa", "parameters": {"lat": 45.22999954223633, "lon": 54.79999923706055, "alt": 234}}) def test_dumps_loads_object(self): class Test: def __init__(self, a): self.a = a a = Test(2) b = dumps_object(a) c = loads_object(b, Test) self.assertEqual(a.a, c.a) self.assertIsInstance(c, Test)