Source

jaraco.json / jaraco / json / test_encoding.py

"""
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):
		self.items.append(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(MyItem(63))
	coll.append({'a': 'dict'})
	coll.append((1,2,3))
	
	serialized = encode(coll)
	assert isinstance(serialized, basestring)
	return serialized

def test_decode_serialized():
	"""
	Deserialize the object serialized above - it should behave like the original
	objects.
	"""
	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
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.