forked from Rust-related/RustPython
147 lines
3.4 KiB
Python
147 lines
3.4 KiB
Python
from testutils import assert_raises, assertRaises
|
|
|
|
assert set([1,2]) == set([1,2])
|
|
assert not set([1,2,3]) == set([1,2])
|
|
|
|
assert set([1,2,3]) >= set([1,2])
|
|
assert set([1,2]) >= set([1,2])
|
|
assert not set([1,3]) >= set([1,2])
|
|
|
|
assert set([1,2,3]).issuperset(set([1,2]))
|
|
assert set([1,2]).issuperset(set([1,2]))
|
|
assert not set([1,3]).issuperset(set([1,2]))
|
|
|
|
assert set([1,2,3]) > set([1,2])
|
|
assert not set([1,2]) > set([1,2])
|
|
assert not set([1,3]) > set([1,2])
|
|
|
|
assert set([1,2]) <= set([1,2,3])
|
|
assert set([1,2]) <= set([1,2])
|
|
assert not set([1,3]) <= set([1,2])
|
|
|
|
assert set([1,2]).issubset(set([1,2,3]))
|
|
assert set([1,2]).issubset(set([1,2]))
|
|
assert not set([1,3]).issubset(set([1,2]))
|
|
|
|
assert set([1,2]) < set([1,2,3])
|
|
assert not set([1,2]) < set([1,2])
|
|
assert not set([1,3]) < set([1,2])
|
|
|
|
class Hashable(object):
|
|
def __init__(self, obj):
|
|
self.obj = obj
|
|
|
|
def __repr__(self):
|
|
return repr(self.obj)
|
|
|
|
def __hash__(self):
|
|
return id(self)
|
|
|
|
|
|
recursive = set()
|
|
recursive.add(Hashable(recursive))
|
|
assert repr(recursive) == "{set(...)}"
|
|
|
|
a = set([1, 2, 3])
|
|
assert len(a) == 3
|
|
a.clear()
|
|
assert len(a) == 0
|
|
|
|
assert set([1,2,3]).union(set([4,5])) == set([1,2,3,4,5])
|
|
assert set([1,2,3]).union(set([1,2,3,4,5])) == set([1,2,3,4,5])
|
|
|
|
assert set([1,2,3]) | set([4,5]) == set([1,2,3,4,5])
|
|
assert set([1,2,3]) | set([1,2,3,4,5]) == set([1,2,3,4,5])
|
|
|
|
assert set([1,2,3]).intersection(set([1,2])) == set([1,2])
|
|
assert set([1,2,3]).intersection(set([5,6])) == set([])
|
|
|
|
assert set([1,2,3]) & set([4,5]) == set([])
|
|
assert set([1,2,3]) & set([1,2,3,4,5]) == set([1,2,3])
|
|
|
|
assert set([1,2,3]).difference(set([1,2])) == set([3])
|
|
assert set([1,2,3]).difference(set([5,6])) == set([1,2,3])
|
|
|
|
assert set([1,2,3]) - set([4,5]) == set([1,2,3])
|
|
assert set([1,2,3]) - set([1,2,3,4,5]) == set([])
|
|
|
|
assert set([1,2,3]).symmetric_difference(set([1,2])) == set([3])
|
|
assert set([1,2,3]).symmetric_difference(set([5,6])) == set([1,2,3,5,6])
|
|
|
|
assert set([1,2,3]) ^ set([4,5]) == set([1,2,3,4,5])
|
|
assert set([1,2,3]) ^ set([1,2,3,4,5]) == set([4,5])
|
|
|
|
assert_raises(TypeError, lambda: set([[]]))
|
|
assert_raises(TypeError, lambda: set().add([]))
|
|
|
|
a = set([1, 2, 3])
|
|
assert a.discard(1) is None
|
|
assert not 1 in a
|
|
assert a.discard(42) is None
|
|
|
|
a = set([1,2,3])
|
|
b = a.copy()
|
|
assert len(a) == 3
|
|
assert len(b) == 3
|
|
b.clear()
|
|
assert len(a) == 3
|
|
assert len(b) == 0
|
|
|
|
a = set([1,2])
|
|
b = a.pop()
|
|
assert b in [1,2]
|
|
c = a.pop()
|
|
assert (c in [1,2] and c != b)
|
|
assert_raises(KeyError, lambda: a.pop())
|
|
|
|
a = set([1,2,3])
|
|
a.update([3,4,5])
|
|
assert a == set([1,2,3,4,5])
|
|
assert_raises(TypeError, lambda: a.update(1))
|
|
|
|
a = set([1,2,3])
|
|
b = set()
|
|
for e in a:
|
|
assert e == 1 or e == 2 or e == 3
|
|
b.add(e)
|
|
assert a == b
|
|
|
|
a = set([1,2,3])
|
|
a |= set([3,4,5])
|
|
assert a == set([1,2,3,4,5])
|
|
with assertRaises(TypeError):
|
|
a |= 1
|
|
|
|
a = set([1,2,3])
|
|
a.intersection_update([2,3,4,5])
|
|
assert a == set([2,3])
|
|
assert_raises(TypeError, lambda: a.intersection_update(1))
|
|
|
|
a = set([1,2,3])
|
|
a &= set([2,3,4,5])
|
|
assert a == set([2,3])
|
|
with assertRaises(TypeError):
|
|
a &= 1
|
|
|
|
a = set([1,2,3])
|
|
a.difference_update([3,4,5])
|
|
assert a == set([1,2])
|
|
assert_raises(TypeError, lambda: a.difference_update(1))
|
|
|
|
a = set([1,2,3])
|
|
a -= set([3,4,5])
|
|
assert a == set([1,2])
|
|
with assertRaises(TypeError):
|
|
a -= 1
|
|
|
|
a = set([1,2,3])
|
|
a.symmetric_difference_update([3,4,5])
|
|
assert a == set([1,2,4,5])
|
|
assert_raises(TypeError, lambda: a.difference_update(1))
|
|
|
|
a = set([1,2,3])
|
|
a ^= set([3,4,5])
|
|
assert a == set([1,2,4,5])
|
|
with assertRaises(TypeError):
|
|
a ^= 1
|