def test_encoding_methods(self): converter = JsonConverter() def encoder(obj): return {"a": [val * 2 for val in obj.a]} def decoder(obj): obj["a"] = [val // 2 for val in obj["a"]] return A(**obj) converter.register(A, encoder=encoder, decoder=decoder) a = A([1, 2, 3]) res = converter.dumps(a) res_dict = json.loads(res) self.assertEqual(res_dict, { "__id__": "pelita.test.A", "__value__": { "a": [2, 4, 6] } }) reencoded = converter.loads(res) self.assertEqual(a, reencoded)
def test_double_identifier(self): class AA(A): pass converter = JsonConverter() converter.register(A) self.assertRaises(ValueError, converter.register, AA)
def test_unknown(self): converter = JsonConverter() converter.register(A) unknown_json = """{"__id__": "unknown", "__value__": {"a": [2, 4, 6]}}""" res_with_converter = converter.loads(unknown_json) res_without_converter = converter.loads(unknown_json) self.assertEqual(res_with_converter, res_without_converter)
def test_unknown(self): converter = JsonConverter() converter.register(A) unknown_json = """{"__id__": "unknown", "__value__": {"a": [2, 4, 6]}}""" res_with_converter = converter.loads(unknown_json) res_without_converter = converter.loads(unknown_json) self.assertEqual(res_with_converter, res_without_converter)
def test_can_decode(self): converter = JsonConverter() converter.register(A) json_code = """{"__id__": "pelita.test.A", "__value__": {"a": ["1", "2", "3"]}}""" decoded = converter.loads(json_code) a = A(['1', '2', '3']) self.assertEqual(decoded, a)
def test_can_decode(self): converter = JsonConverter() converter.register(A) json_code = """{"__id__": "pelita.test.A", "__value__": {"a": ["1", "2", "3"]}}""" decoded = converter.loads(json_code) a = A(['1', '2', '3']) self.assertEqual(decoded, a)
def test_can_encode(self): converter = JsonConverter() converter.register(A) a = A(['1', '2', '3']) encoded = converter.dumps(a) should_be = {"__id__": "pelita.test.A", "__value__": {"a": ["1", "2", "3"]}} decoded = json.loads(encoded) self.assertEqual(decoded, should_be)
def test_can_recode_nested(self): converter = JsonConverter() converter.register(A, encoder=A._to_json_dict, decoder=A._from_json_dict) converter.register(B) a1 = A(1) a2 = A("2") a3 = A(['1', '2', '3']) bb = B("B", a1, a2, a3) dumped = converter.dumps(bb) loaded = converter.loads(dumped) self.assertEqual(bb, loaded)
def test_can_encode(self): converter = JsonConverter() converter.register(A) a = A(['1', '2', '3']) encoded = converter.dumps(a) should_be = { "__id__": "pelita.test.A", "__value__": { "a": ["1", "2", "3"] } } decoded = json.loads(encoded) self.assertEqual(decoded, should_be)
def test_can_recode_nested(self): converter = JsonConverter() converter.register(A, encoder=A._to_json_dict, decoder=A._from_json_dict) converter.register(B) a1 = A(1) a2 = A("2") a3 = A(['1', '2', '3']) bb = B("B", a1, a2, a3) dumped = converter.dumps(bb) loaded = converter.loads(dumped) self.assertEqual(bb, loaded)
def test_encoding_methods(self): converter = JsonConverter() def encoder(obj): return {"a": [val * 2 for val in obj.a]} def decoder(obj): obj["a"] = [val // 2 for val in obj["a"]] return A(**obj) converter.register(A, encoder=encoder, decoder=decoder) a = A([1, 2, 3]) res = converter.dumps(a) res_dict = json.loads(res) self.assertEqual(res_dict, {"__id__": "pelita.test.A", "__value__": {"a": [2, 4, 6]}}) reencoded = converter.loads(res) self.assertEqual(a, reencoded)
def test_double_identifier(self): class AA(A): pass converter = JsonConverter() converter.register(A) self.assertRaises(ValueError, converter.register, AA)