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_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_pset_constructor(): container = pset() assert len(container) == 0 container = pset((0, "1", 2)) assert len(container) == 3 container = pset([0, "1", 2]) assert len(container) == 3 container = pset(range(5)) assert len(container) == 5 container = pset(map(lambda x: x, range(10))) assert len(container) == 10
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_set(): set_0 = pset() assert len(set_0) == 0 assert hash(set_0) == -4800647303603446203 set_1 = set_0.add(0) assert 0 in set_1 assert len(set_1) == 1 assert hash(set_1) == -8559946577813192710 set_2 = set_1.add("1") assert 0 in set_2 assert "1" in set_2 assert len(set_2) == 2 set_3 = set_2.add(2) assert 0 in set_3 assert "1" in set_3 assert 2 in set_3 assert len(set_3) == 3 set_4 = set_3.remove(2) assert 0 in set_2 assert "1" in set_2 assert len(set_4) == 2 assert set_0 != set_1 assert set_1 != set_2 assert set_2 != set_3 assert set_3 != set_4 assert set_2 == set_4 assert hash(set_2) == hash(set_4)
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_literalish_works(): assert s(1, 2) == pset([1, 2])
def test_iter(): container = pset() for element in range(100): container.add(element) for index, element in enumerate(sorted(container)): assert index == element
def test_iterable(): """ PSets can be created from iterables even though they can't be len() hinted. """ assert pset(iter("a")) == pset(iter("a"))
def test_str(): rep = str(pset([1, 2, 3])) assert eval(rep) == eval("pset([1, 2, 3])")
def test_contains(): s = pset([1, 2, 3]) assert 2 in s assert 4 not in s
def test_is_iterable(): assert sum(pset([1, 2, 3])) == 6