aboutsummaryrefslogtreecommitdiffstats
path: root/3rdparty/pybind11/tests/test_stl_binders.py
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/pybind11/tests/test_stl_binders.py')
-rw-r--r--3rdparty/pybind11/tests/test_stl_binders.py48
1 files changed, 34 insertions, 14 deletions
diff --git a/3rdparty/pybind11/tests/test_stl_binders.py b/3rdparty/pybind11/tests/test_stl_binders.py
index 84132a2b..d5e9ccce 100644
--- a/3rdparty/pybind11/tests/test_stl_binders.py
+++ b/3rdparty/pybind11/tests/test_stl_binders.py
@@ -1,8 +1,5 @@
-# -*- coding: utf-8 -*-
import pytest
-import env # noqa: F401
-
from pybind11_tests import stl_binders as m
@@ -75,18 +72,13 @@ def test_vector_buffer():
assert v[1] == 2
v[2] = 5
mv = memoryview(v) # We expose the buffer interface
- if not env.PY2:
- assert mv[2] == 5
- mv[2] = 6
- else:
- assert mv[2] == "\x05"
- mv[2] = "\x06"
+ assert mv[2] == 5
+ mv[2] = 6
assert v[2] == 6
- if not env.PY2:
- mv = memoryview(b)
- v = m.VectorUChar(mv[::2])
- assert v[1] == 3
+ mv = memoryview(b)
+ v = m.VectorUChar(mv[::2])
+ assert v[1] == 3
with pytest.raises(RuntimeError) as excinfo:
m.create_undeclstruct() # Undeclared struct contents, no buffer interface
@@ -161,15 +153,43 @@ def test_map_string_double():
mm["b"] = 2.5
assert list(mm) == ["a", "b"]
- assert list(mm.items()) == [("a", 1), ("b", 2.5)]
assert str(mm) == "MapStringDouble{a: 1, b: 2.5}"
+ assert "b" in mm
+ assert "c" not in mm
+ assert 123 not in mm
+
+ # Check that keys, values, items are views, not merely iterable
+ keys = mm.keys()
+ values = mm.values()
+ items = mm.items()
+ assert list(keys) == ["a", "b"]
+ assert len(keys) == 2
+ assert "a" in keys
+ assert "c" not in keys
+ assert 123 not in keys
+ assert list(items) == [("a", 1), ("b", 2.5)]
+ assert len(items) == 2
+ assert ("b", 2.5) in items
+ assert "hello" not in items
+ assert ("b", 2.5, None) not in items
+ assert list(values) == [1, 2.5]
+ assert len(values) == 2
+ assert 1 in values
+ assert 2 not in values
+ # Check that views update when the map is updated
+ mm["c"] = -1
+ assert list(keys) == ["a", "b", "c"]
+ assert list(values) == [1, 2.5, -1]
+ assert list(items) == [("a", 1), ("b", 2.5), ("c", -1)]
um = m.UnorderedMapStringDouble()
um["ua"] = 1.1
um["ub"] = 2.6
assert sorted(list(um)) == ["ua", "ub"]
+ assert list(um.keys()) == list(um)
assert sorted(list(um.items())) == [("ua", 1.1), ("ub", 2.6)]
+ assert list(zip(um.keys(), um.values())) == list(um.items())
assert "UnorderedMapStringDouble" in str(um)