jaraco.json / jaraco / json /

Test encoding to json and decoding from json.

from jaraco.json.main import encode, decode

class MyCollection(object):
	A list of items, specifically not subclassed from list to demonstrate
	a custom collection.
	def __init__(self):
		self.items = []

	def append(self, item):

class MyItem(object):
	def __init__(self, value):
		self.value = value

def test_encode_object():
	Serialize an object with nested objects into json.
	coll = MyCollection()
	coll.append({'a': 'dict'})
	serialized = encode(coll)
	assert isinstance(serialized, basestring)
	return serialized

def test_decode_serialized():
	Deserialize the object serialized above - it should behave like the original
	serialized = test_encode_object()
	coll = decode(serialized)
	assert len(coll.items) == 3
	custom, d, t = coll.items
	assert isinstance(custom, MyItem)
	assert 'a' in d
	assert t == range(1,4)
	assert custom.value == 63