/
tests.py
74 lines (56 loc) · 2.22 KB
/
tests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import unittest
from typeset import PredicateSet, TypeSet
class PredicateSetTestCase(unittest.TestCase):
def test_contains(self):
int_set = PredicateSet(lambda x: isinstance(x, int))
self.assertTrue(all(x in int_set for x in range(-10, 10)))
def test_difference(self):
a = PredicateSet(lambda x: x in set(range(2)))
b = PredicateSet(lambda x: x in set(range(1, 3)))
self.assertIn(0, a.difference(b))
self.assertNotIn(1, a.difference(b))
self.assertNotIn(2, a.difference(b))
self.assertIn(0, a - b)
self.assertNotIn(1, a - b)
self.assertNotIn(2, a - b)
def test_intersection(self):
a = PredicateSet(lambda x: x in set(range(2)))
b = PredicateSet(lambda x: x in set(range(1, 3)))
self.assertNotIn(0, a.intersection(b))
self.assertIn(1, a.intersection(b))
self.assertNotIn(2, a.intersection(b))
self.assertNotIn(0, a & b)
self.assertIn(1, a & b)
self.assertNotIn(2, a & b)
def test_symmetric_difference(self):
a = PredicateSet(lambda x: x in set(range(2)))
b = PredicateSet(lambda x: x in set(range(1, 3)))
self.assertIn(0, a.symmetric_difference(b))
self.assertNotIn(1, a.symmetric_difference(b))
self.assertIn(2, a .symmetric_difference(b))
self.assertIn(0, a ^ b)
self.assertNotIn(1, a ^ b)
self.assertIn(2, a ^ b)
def test_union(self):
a = PredicateSet(lambda x: x in set(range(2)))
b = PredicateSet(lambda x: x in set(range(1, 3)))
self.assertIn(0, a.union(b))
self.assertIn(1, a.union(b))
self.assertIn(2, a.union(b))
self.assertIn(0, a | b)
self.assertIn(1, a | b)
self.assertIn(2, a | b)
class TypeSetTestCase(unittest.TestCase):
def test_instantiation(self):
class A(metaclass=TypeSet):
pass
self.assertTrue(isinstance(A(), A))
def test_self_intersect_union(self):
class A(metaclass=TypeSet):
pass
self.assertTrue(A & A == A)
self.assertTrue(A | A == A)
self.assertTrue(A.intersection(A) == A)
self.assertTrue(A.union(A) == A)
if __name__ == '__main__':
unittest.main()