test_pickling.py revision 12037
1import pytest 2 3try: 4 import cPickle as pickle # Use cPickle on Python 2.7 5except ImportError: 6 import pickle 7 8 9def test_roundtrip(): 10 from pybind11_tests import Pickleable 11 12 p = Pickleable("test_value") 13 p.setExtra1(15) 14 p.setExtra2(48) 15 16 data = pickle.dumps(p, 2) # Must use pickle protocol >= 2 17 p2 = pickle.loads(data) 18 assert p2.value() == p.value() 19 assert p2.extra1() == p.extra1() 20 assert p2.extra2() == p.extra2() 21 22 23@pytest.unsupported_on_pypy 24def test_roundtrip_with_dict(): 25 from pybind11_tests import PickleableWithDict 26 27 p = PickleableWithDict("test_value") 28 p.extra = 15 29 p.dynamic = "Attribute" 30 31 data = pickle.dumps(p, pickle.HIGHEST_PROTOCOL) 32 p2 = pickle.loads(data) 33 assert p2.value == p.value 34 assert p2.extra == p.extra 35 assert p2.dynamic == p.dynamic 36