aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/pyrsistent/py3/tests/set_test.py
diff options
context:
space:
mode:
authorshmel1k <shmel1k@ydb.tech>2023-11-26 18:16:14 +0300
committershmel1k <shmel1k@ydb.tech>2023-11-26 18:43:30 +0300
commitb8cf9e88f4c5c64d9406af533d8948deb050d695 (patch)
tree218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/pyrsistent/py3/tests/set_test.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz
add kikimr_configure
Diffstat (limited to 'contrib/python/pyrsistent/py3/tests/set_test.py')
-rw-r--r--contrib/python/pyrsistent/py3/tests/set_test.py181
1 files changed, 181 insertions, 0 deletions
diff --git a/contrib/python/pyrsistent/py3/tests/set_test.py b/contrib/python/pyrsistent/py3/tests/set_test.py
new file mode 100644
index 0000000000..f605ee0d5e
--- /dev/null
+++ b/contrib/python/pyrsistent/py3/tests/set_test.py
@@ -0,0 +1,181 @@
+from pyrsistent import pset, s
+import pytest
+import pickle
+
+def test_key_is_tuple():
+ with pytest.raises(KeyError):
+ pset().remove((1,1))
+
+def test_literalish_works():
+ assert s() is pset()
+ assert s(1, 2) == pset([1, 2])
+
+
+def test_supports_hash():
+ assert hash(s(1, 2)) == hash(s(1, 2))
+
+
+def test_empty_truthiness():
+ assert s(1)
+ assert not s()
+
+
+def test_contains_elements_that_it_was_initialized_with():
+ initial = [1, 2, 3]
+ s = pset(initial)
+
+ assert set(s) == set(initial)
+ assert len(s) == len(set(initial))
+
+
+def test_is_immutable():
+ s1 = pset([1])
+ s2 = s1.add(2)
+
+ assert s1 == pset([1])
+ assert s2 == pset([1, 2])
+
+ s3 = s2.remove(1)
+ assert s2 == pset([1, 2])
+ assert s3 == pset([2])
+
+
+def test_remove_when_not_present():
+ s1 = s(1, 2, 3)
+ with pytest.raises(KeyError):
+ s1.remove(4)
+
+
+def test_discard():
+ s1 = s(1, 2, 3)
+ assert s1.discard(3) == s(1, 2)
+ assert s1.discard(4) is s1
+
+
+def test_is_iterable():
+ assert sum(pset([1, 2, 3])) == 6
+
+
+def test_contains():
+ s = pset([1, 2, 3])
+
+ assert 2 in s
+ assert 4 not in s
+
+
+def test_supports_set_operations():
+ s1 = pset([1, 2, 3])
+ s2 = pset([3, 4, 5])
+
+ assert s1 | s2 == s(1, 2, 3, 4, 5)
+ assert s1.union(s2) == s1 | s2
+
+ assert s1 & s2 == s(3)
+ assert s1.intersection(s2) == s1 & s2
+
+ assert s1 - s2 == s(1, 2)
+ assert s1.difference(s2) == s1 - s2
+
+ assert s1 ^ s2 == s(1, 2, 4, 5)
+ assert s1.symmetric_difference(s2) == s1 ^ s2
+
+
+def test_supports_set_comparisons():
+ s1 = s(1, 2, 3)
+ s3 = s(1, 2)
+ s4 = s(1, 2, 3)
+
+ assert s(1, 2, 3, 3, 5) == s(1, 2, 3, 5)
+ assert s1 != s3
+
+ assert s3 < s1
+ assert s3 <= s1
+ assert s3 <= s4
+
+ assert s1 > s3
+ assert s1 >= s3
+ assert s4 >= s3
+
+
+def test_str():
+ rep = str(pset([1, 2, 3]))
+ assert rep == "pset([1, 2, 3])"
+
+
+def test_is_disjoint():
+ s1 = pset([1, 2, 3])
+ s2 = pset([3, 4, 5])
+ s3 = pset([4, 5])
+
+ assert not s1.isdisjoint(s2)
+ assert s1.isdisjoint(s3)
+
+
+def test_evolver_simple_add():
+ x = s(1, 2, 3)
+ e = x.evolver()
+ assert not e.is_dirty()
+
+ e.add(4)
+ assert e.is_dirty()
+
+ x2 = e.persistent()
+ assert not e.is_dirty()
+ assert x2 == s(1, 2, 3, 4)
+ assert x == s(1, 2, 3)
+
+def test_evolver_simple_remove():
+ x = s(1, 2, 3)
+ e = x.evolver()
+ e.remove(2)
+
+ x2 = e.persistent()
+ assert x2 == s(1, 3)
+ assert x == s(1, 2, 3)
+
+
+def test_evolver_no_update_produces_same_pset():
+ x = s(1, 2, 3)
+ e = x.evolver()
+ assert e.persistent() is x
+
+
+def test_evolver_len():
+ x = s(1, 2, 3)
+ e = x.evolver()
+ assert len(e) == 3
+
+
+def test_copy_returns_reference_to_self():
+ s1 = s(10)
+ assert s1.copy() is s1
+
+
+def test_pickling_empty_set():
+ assert pickle.loads(pickle.dumps(s(), -1)) == s()
+
+
+def test_pickling_non_empty_map():
+ assert pickle.loads(pickle.dumps(s(1, 2), -1)) == s(1, 2)
+
+
+def test_supports_weakref():
+ import weakref
+ weakref.ref(s(1))
+
+
+def test_update():
+ assert s(1, 2, 3).update([3, 4, 4, 5]) == s(1, 2, 3, 4, 5)
+
+
+def test_update_no_elements():
+ s1 = s(1, 2)
+ assert s1.update([]) is s1
+
+
+def test_iterable():
+ """
+ PSets can be created from iterables even though they can't be len() hinted.
+ """
+
+ assert pset(iter("a")) == pset(iter("a"))