msgpack-python/test/test_extension.py

25 lines
747 B
Python
Raw Normal View History

import array
import msgpack
def test_extension_type():
class MyPacker(msgpack.Packer):
def handle_extended_type(self, obj):
if isinstance(obj, array.array):
fmt = "ext 32"
typecode = 123 # application specific typecode
data = obj.tostring()
return fmt, typecode, data
class MyUnpacker(msgpack.Unpacker):
def handle_extended_type(self, typecode, data):
assert typecode == 123
obj = array.array('d')
obj.fromstring(data)
return obj
obj = [42, 'hello', array.array('d', [1.1, 2.2, 3.3])]
s = msgpack.packb(obj, MyPacker)
obj2 = msgpack.unpackb(s, MyUnpacker)
assert obj == obj2