summaryrefslogtreecommitdiff
path: root/python/test
diff options
context:
space:
mode:
authorINADA Naoki <songofacandy@gmail.com>2010-10-26 01:26:06 +0900
committerINADA Naoki <songofacandy@gmail.com>2010-10-26 01:26:06 +0900
commit70982e204cb53b996e4f7bd4fd078b6fa91307df (patch)
tree4c4cfeb183b502670101f5b6cf550063f015050c /python/test
parent2af7df58657b6e85c5d69f8127972cf254a064ec (diff)
downloadmsgpack-python-70982e204cb53b996e4f7bd4fd078b6fa91307df.tar.gz
Add `object_hook` option to unpack and `default` option to pack.
(see simplejson for how to use).
Diffstat (limited to 'python/test')
-rw-r--r--python/test/test_obj.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/python/test/test_obj.py b/python/test/test_obj.py
new file mode 100644
index 0000000..64a6390
--- /dev/null
+++ b/python/test/test_obj.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+from nose import main
+from nose.tools import *
+
+from msgpack import packs, unpacks
+
+def _decode_complex(obj):
+ if '__complex__' in obj:
+ return complex(obj['real'], obj['imag'])
+ return obj
+
+def _encode_complex(obj):
+ if isinstance(obj, complex):
+ return {'__complex__': True, 'real': 1, 'imag': 2}
+ return obj
+
+def test_encode_hook():
+ packed = packs([3, 1+2j], default=_encode_complex)
+ unpacked = unpacks(packed)
+ eq_(unpacked[1], {'__complex__': True, 'real': 1, 'imag': 2})
+
+def test_decode_hook():
+ packed = packs([3, {'__complex__': True, 'real': 1, 'imag': 2}])
+ unpacked = unpacks(packed, object_hook=_decode_complex)
+ eq_(unpacked[1], 1+2j)
+
+if __name__ == '__main__':
+ #main()
+ test_decode_hook()