diff options
author | David Shah <dave@ds0.me> | 2020-07-27 13:50:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-27 13:50:42 +0100 |
commit | b39a2a502065ec1407417ffacdac2154385bf80f (patch) | |
tree | 3349c93ac87f5758009c53b3e2eb5b9a130cd0d6 /3rdparty/pybind11/tests/test_pickling.py | |
parent | e6991ad5dc79f6118838f091cc05f10d3377eb4a (diff) | |
parent | fe398ab983aee9283f61c288dc98d94542c30332 (diff) | |
download | nextpnr-b39a2a502065ec1407417ffacdac2154385bf80f.tar.gz nextpnr-b39a2a502065ec1407417ffacdac2154385bf80f.tar.bz2 nextpnr-b39a2a502065ec1407417ffacdac2154385bf80f.zip |
Merge pull request #477 from YosysHQ/pybind11
Move to pybind11
Diffstat (limited to '3rdparty/pybind11/tests/test_pickling.py')
-rw-r--r-- | 3rdparty/pybind11/tests/test_pickling.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/3rdparty/pybind11/tests/test_pickling.py b/3rdparty/pybind11/tests/test_pickling.py new file mode 100644 index 00000000..5ae05aaa --- /dev/null +++ b/3rdparty/pybind11/tests/test_pickling.py @@ -0,0 +1,42 @@ +import pytest +from pybind11_tests import pickling as m + +try: + import cPickle as pickle # Use cPickle on Python 2.7 +except ImportError: + import pickle + + +@pytest.mark.parametrize("cls_name", ["Pickleable", "PickleableNew"]) +def test_roundtrip(cls_name): + cls = getattr(m, cls_name) + p = cls("test_value") + p.setExtra1(15) + p.setExtra2(48) + + data = pickle.dumps(p, 2) # Must use pickle protocol >= 2 + p2 = pickle.loads(data) + assert p2.value() == p.value() + assert p2.extra1() == p.extra1() + assert p2.extra2() == p.extra2() + + +@pytest.unsupported_on_pypy +@pytest.mark.parametrize("cls_name", ["PickleableWithDict", "PickleableWithDictNew"]) +def test_roundtrip_with_dict(cls_name): + cls = getattr(m, cls_name) + p = cls("test_value") + p.extra = 15 + p.dynamic = "Attribute" + + data = pickle.dumps(p, pickle.HIGHEST_PROTOCOL) + p2 = pickle.loads(data) + assert p2.value == p.value + assert p2.extra == p.extra + assert p2.dynamic == p.dynamic + + +def test_enum_pickle(): + from pybind11_tests import enums as e + data = pickle.dumps(e.EOne, 2) + assert e.EOne == pickle.loads(data) |