class MathSet_operations_test(object): def setUp(self): self.x = MathSet(['a', 1, [1, 2], {'a', 'b', '8'}]) self.y = MathSet(['b', -2, [3.5, 2.25], {'/', '_'}]) self.small2_listnum = MathSet([[1, 2], 0.2]) self.small1_set = MathSet([{-1, 1}]) def tearDown(self): self.x = None self.y = None def test_mul(self): assert self.small2_listnum * self.small1_set == \ MathSet([([1,2], {-1, 1}), (0.2, {-1, 1})]) assert self.small2_listnum * self.small2_listnum == \ MathSet([([1,2], [1,2]), ([1,2], 0.2), (0.2, [1,2]), (0.2, 0.2)]) def test_sub(self): assert self.small2_listnum - self.small2_listnum == MathSet() assert self.small1_set - self.small2_listnum == self.small1_set assert self.x - self.small2_listnum == \ MathSet(['a', 1, {'a', 'b', '8'} ] ) def test_isub(self): q = MathSet(self.small2_listnum) q -= self.small2_listnum assert q == MathSet() q = MathSet(self.small2_listnum) q -= MathSet() assert q == q def test_add_unhashable(self): self.small1_set.add([1, 2]) assert self.small1_set == MathSet([{-1, 1}, [1, 2]]) def test_pop(self): # These tests could be improved by seeding random number # generation to ensure determinism. assert self.small1_set.pop() == {-1, 1} assert self.small1_set == MathSet() original = MathSet(self.small2_listnum) q = self.small2_listnum.pop() assert len(self.small2_listnum) + 1 == len(original) self.small2_listnum.add(q) assert self.small2_listnum == original def test_intersection(self): assert self.x.intersection(self.small2_listnum) == MathSet([[1, 2]]) assert self.x.intersection(MathSet()) == MathSet() def test_intersects(self): assert self.x.intersects(self.small2_listnum) assert not self.small2_listnum.intersects(self.small1_set)
class MathSet_operations_test: def setUp(self): self.x = MathSet(["a", 1, [1, 2], {"a", "b", "8"}]) self.y = MathSet(["b", -2, [3.5, 2.25], {"/", "_"}]) self.small2_listnum = MathSet([[1, 2], 0.2]) self.small1_set = MathSet([{-1, 1}]) def tearDown(self): self.x = None self.y = None def test_mul(self): assert self.small2_listnum * self.small1_set == MathSet([([1, 2], {-1, 1}), (0.2, {-1, 1})]) assert self.small2_listnum * self.small2_listnum == MathSet( [([1, 2], [1, 2]), ([1, 2], 0.2), (0.2, [1, 2]), (0.2, 0.2)] ) def test_sub(self): assert self.small2_listnum - self.small2_listnum == MathSet() assert self.small1_set - self.small2_listnum == self.small1_set assert self.x - self.small2_listnum == MathSet(["a", 1, {"a", "b", "8"}]) def test_isub(self): q = MathSet(self.small2_listnum) q -= self.small2_listnum assert q == MathSet() q = MathSet(self.small2_listnum) q -= MathSet() assert q == q def test_add_unhashable(self): self.small1_set.add([1, 2]) assert self.small1_set == MathSet([{-1, 1}, [1, 2]]) def test_pop(self): # These tests could be improved by seeding random number # generation to ensure determinism. assert self.small1_set.pop() == {-1, 1} assert self.small1_set == MathSet() original = MathSet(self.small2_listnum) q = self.small2_listnum.pop() assert len(self.small2_listnum) + 1 == len(original) self.small2_listnum.add(q) assert self.small2_listnum == original def test_intersection(self): assert self.x.intersection(self.small2_listnum) == MathSet([[1, 2]]) assert self.x.intersection(MathSet()) == MathSet() def test_intersects(self): assert self.x.intersects(self.small2_listnum) assert not self.small2_listnum.intersects(self.small1_set)
def mathset_test(): s = MathSet([1, 2, [1, 2]]) q = MathSet() q.add(1) q |= [1, 2] q |= ["a", 3, {3}] c = s | s d = s | q assert c is not s assert q._set == {"a", 1, 2, 3} assert q._list == [{3}] assert c._set == {1, 2} assert c._list == [[1, 2]] assert d._set == {1, 2, 3, "a"} assert d._list == [[1, 2], {3}] assert isinstance(s, Iterable) assert 1 in s assert 2 in s assert [1, 2] in s assert 5 not in q assert len(s) == 3 s.remove([1, 2]) assert [1, 2] not in s assert s._set == {1, 2} assert s._list == [] assert len(s) == 2 for item in s: print (item) """Mutable""" a = MathSet() b = MathSet([{"a": 1}]) a |= b assert a._set == set() assert a._list == [{"a": 1}]
def mathset_test(): s = MathSet([1,2,[1,2] ] ) q = MathSet() q.add(1) q |= [1,2] q |= ['a', 3, {3}] c = s | s d = s | q assert(c is not s) assert(q._set == {'a',1,2,3} ) assert(q._list == [{3} ] ) assert(c._set == {1,2} ) assert(c._list == [[1,2] ] ) assert(d._set == {1,2,3,'a'} ) assert(d._list == [[1,2], {3} ] ) assert(isinstance(s, Iterable) ) assert(1 in s) assert(2 in s) assert([1, 2] in s) assert(5 not in q) assert(len(s) == 3) s.remove([1,2] ) assert([1,2] not in s) assert(s._set == {1,2} ) assert(s._list == []) assert(len(s) == 2) for item in s: print(item) """Mutable""" a = MathSet() b = MathSet([{'a':1} ] ) a |= b assert(a._set == set() ) assert(a._list == [{'a':1} ] )