You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
791 B

  1. try:
  2. import cPickle as pickle # Use cPickle on Python 2.7
  3. except ImportError:
  4. import pickle
  5. def test_roundtrip():
  6. from pybind11_tests import Pickleable
  7. p = Pickleable("test_value")
  8. p.setExtra1(15)
  9. p.setExtra2(48)
  10. data = pickle.dumps(p, 2) # Must use pickle protocol >= 2
  11. p2 = pickle.loads(data)
  12. assert p2.value() == p.value()
  13. assert p2.extra1() == p.extra1()
  14. assert p2.extra2() == p.extra2()
  15. def test_roundtrip_with_dict():
  16. from pybind11_tests import PickleableWithDict
  17. p = PickleableWithDict("test_value")
  18. p.extra = 15
  19. p.dynamic = "Attribute"
  20. data = pickle.dumps(p, pickle.HIGHEST_PROTOCOL)
  21. p2 = pickle.loads(data)
  22. assert p2.value == p.value
  23. assert p2.extra == p.extra
  24. assert p2.dynamic == p.dynamic