def test_encode_circular(self): thing = {} thing['me'] = thing encoded = jsog.encode(thing) self.assertTrue(encoded['@id']) self.assertTrue(encoded['me']['@ref'] == encoded['@id'])
def test_decode_circular(self): thing = {} thing['me'] = thing encoded = jsog.encode(thing) back = jsog.decode(encoded) self.assertFalse('@id' in back) self.assertTrue(back['me'] is back)
def test_encode_reference(self): inner = { "foo": "bar" } outer = { "inner1": inner, "inner2": inner } encoded = jsog.encode(outer) inner1 = encoded['inner1'] inner2 = encoded['inner2'] # one has @id, one has @ref self.assertNotEqual('@id' in inner1, '@id' in inner2) self.assertNotEqual('@ref' in inner1, '@ref' in inner2) if '@id' in inner1: self.assertEqual(inner1['@id'], inner2['@ref']) else: self.assertEqual(inner1['@ref'], inner2['@id'])
def test_encode_null(self): encoded = jsog.encode(None) self.assertEqual(encoded, None)