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}]
Esempio n. 4
0
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} ] )