summaryrefslogtreecommitdiff
path: root/test/base/test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/base/test_utils.py')
-rw-r--r--test/base/test_utils.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/base/test_utils.py b/test/base/test_utils.py
index 27945f236..0ef86545b 100644
--- a/test/base/test_utils.py
+++ b/test/base/test_utils.py
@@ -343,6 +343,23 @@ class ImmutableDictTest(fixtures.TestBase):
i2 = util.immutabledict({"a": 42, 42: "a"})
eq_(str(i2), "immutabledict({'a': 42, 42: 'a'})")
+ @testing.requires.python39
+ def test_pep584(self):
+ i = util.immutabledict({"a": 2})
+ with expect_raises_message(TypeError, "object is immutable"):
+ i |= {"b": 42}
+ eq_(i, {"a": 2})
+
+ i2 = i | {"x": 3}
+ eq_(i, {"a": 2})
+ eq_(i2, {"a": 2, "x": 3})
+ is_true(isinstance(i2, util.immutabledict))
+
+ i2 = {"x": 3} | i2
+ eq_(i, {"a": 2})
+ eq_(i2, {"a": 2, "x": 3})
+ is_true(isinstance(i2, util.immutabledict))
+
class ImmutableTest(fixtures.TestBase):
@combinations(util.immutabledict({1: 2, 3: 4}), util.FacadeDict({2: 3}))