-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfrozenset.lua
More file actions
163 lines (163 loc) · 8.22 KB
/
frozenset.lua
File metadata and controls
163 lines (163 loc) · 8.22 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
local s = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 1, 2, 3, nil)}))
assert(bool({}, (len(merge_kwargs({}, {}), s) == 5)))
assert(bool({}, (operator_in(0, s))))
assert(bool({}, (operator_in(1, s))))
assert(bool({}, (operator_in(2, s))))
assert(bool({}, (operator_in(3, s))))
assert(bool({}, (operator_in(nil, s))))
s = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 1, 2, 3, nil)}))
local sc = s.copy(merge_kwargs({}, {}))
assert(bool({}, (len(merge_kwargs({}, {}), s) == 5)))
assert(bool({}, (len(merge_kwargs({}, {}), sc) == 5)))
assert(bool({}, (operator_is(s, sc))))
local s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6, nil)}))
local s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8, nil)}))
local s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
local s1_2 = s1.difference(merge_kwargs({}, {}), s2)
assert(bool({}, (len(merge_kwargs({}, {}), s1_2) == 3)))
assert(bool({}, (operator_in(1, s1_2))))
assert(bool({}, (operator_in(3, s1_2))))
assert(bool({}, (operator_in(5, s1_2))))
local s1_2_3 = s1.difference(merge_kwargs({}, {}), s2, s3)
assert(bool({}, (len(merge_kwargs({}, {}), s1_2_3) == 2)))
assert(bool({}, (operator_in(1, s1_2_3))))
assert(bool({}, (operator_in(5, s1_2_3))))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6, nil)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8, nil)}))
s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
local s1and2 = s1.intersection(merge_kwargs({}, {}), s2)
assert(bool({}, (len(merge_kwargs({}, {}), s1and2) == 4)))
assert(bool({}, (operator_in(2, s1and2))))
assert(bool({}, (operator_in(4, s1and2))))
assert(bool({}, (operator_in(6, s1and2))))
assert(bool({}, (operator_in(nil, s1and2))))
assert(bool({}, (not operator_in(1, s1and2))))
assert(bool({}, (not operator_in(3, s1and2))))
assert(bool({}, (not operator_in(5, s1and2))))
assert(bool({}, (not operator_in(8, s1and2))))
local s1and2and3 = s1.intersection(merge_kwargs({}, {}), s2, s3)
assert(bool({}, (len(merge_kwargs({}, {}), s1and2and3) == 0)))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6, nil)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8, nil)}))
s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
assert(bool({}, not bool({}, s1.isdisjoint(merge_kwargs({}, {}), s2))))
assert(bool({}, not bool({}, s1.isdisjoint(merge_kwargs({}, {}), s3))))
assert(bool({}, s2.isdisjoint(merge_kwargs({}, {}), s3)))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6, nil)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
local s4 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 6)}))
assert(bool({}, s1.issubset(merge_kwargs({}, {}), s1)))
assert(bool({}, not bool({}, s1.issubset(merge_kwargs({}, {}), s2))))
assert(bool({}, not bool({}, s1.issubset(merge_kwargs({}, {}), s3))))
assert(bool({}, not bool({}, s1.issubset(merge_kwargs({}, {}), s4))))
assert(bool({}, s4.issubset(merge_kwargs({}, {}), s1)))
assert(bool({}, s4.issubset(merge_kwargs({}, {}), s2)))
assert(bool({}, not bool({}, s4.issubset(merge_kwargs({}, {}), s3))))
assert(bool({}, s4.issubset(merge_kwargs({}, {}), s4)))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6, nil)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
s4 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 6)}))
assert(bool({}, s1.issuperset(merge_kwargs({}, {}), s1)))
assert(bool({}, not bool({}, s1.issuperset(merge_kwargs({}, {}), s2))))
assert(bool({}, not bool({}, s1.issuperset(merge_kwargs({}, {}), s3))))
assert(bool({}, s1.issuperset(merge_kwargs({}, {}), s4)))
assert(bool({}, not bool({}, s4.issuperset(merge_kwargs({}, {}), s1))))
assert(bool({}, not bool({}, s4.issuperset(merge_kwargs({}, {}), s2))))
assert(bool({}, not bool({}, s4.issuperset(merge_kwargs({}, {}), s3))))
assert(bool({}, s4.issuperset(merge_kwargs({}, {}), s4)))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
s4 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 6)}))
local s1_sym_s1 = s1.symmetric_difference(merge_kwargs({}, {}), s1)
local s1_sym_s2 = s1.symmetric_difference(merge_kwargs({}, {}), s2)
local s1_sym_s3 = s1.symmetric_difference(merge_kwargs({}, {}), s3)
local s1_sym_s4 = s1.symmetric_difference(merge_kwargs({}, {}), s4)
assert(bool({}, (len(merge_kwargs({}, {}), s1_sym_s1) == 0)))
assert(bool({}, (len(merge_kwargs({}, {}), s1_sym_s2) == 4)))
assert(bool({}, (operator_in(1, s1_sym_s2))))
assert(bool({}, (operator_in(3, s1_sym_s2))))
assert(bool({}, (operator_in(5, s1_sym_s2))))
assert(bool({}, (operator_in(8, s1_sym_s2))))
assert(bool({}, (len(merge_kwargs({}, {}), s1_sym_s3) == 7)))
assert(bool({}, (operator_in(1, s1_sym_s3))))
assert(bool({}, (operator_in(2, s1_sym_s3))))
assert(bool({}, (operator_in(4, s1_sym_s3))))
assert(bool({}, (operator_in(5, s1_sym_s3))))
assert(bool({}, (operator_in(6, s1_sym_s3))))
assert(bool({}, (operator_in(0, s1_sym_s3))))
assert(bool({}, (operator_in(10, s1_sym_s3))))
assert(bool({}, (len(merge_kwargs({}, {}), s1_sym_s4) == 4)))
assert(bool({}, (operator_in(1, s1_sym_s4))))
assert(bool({}, (operator_in(3, s1_sym_s4))))
assert(bool({}, (operator_in(4, s1_sym_s4))))
assert(bool({}, (operator_in(5, s1_sym_s4))))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s3 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(0, 10, 3)}))
local s1_union_s2s3 = s1.union(merge_kwargs({}, {}), s2, s3)
assert(bool({}, (len(merge_kwargs({}, {}), s1_union_s2s3) == 9)))
assert(bool({}, (operator_in(1, s1_union_s2s3))))
assert(bool({}, (operator_in(2, s1_union_s2s3))))
assert(bool({}, (operator_in(3, s1_union_s2s3))))
assert(bool({}, (operator_in(4, s1_union_s2s3))))
assert(bool({}, (operator_in(5, s1_union_s2s3))))
assert(bool({}, (operator_in(6, s1_union_s2s3))))
assert(bool({}, (operator_in(8, s1_union_s2s3))))
assert(bool({}, (operator_in(0, s1_union_s2s3))))
assert(bool({}, (operator_in(10, s1_union_s2s3))))
s = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
assert(bool({}, (operator_in(1, s))))
assert(bool({}, (not operator_in(7, s))))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s = (bit.bor(s1, s2))
assert(bool({}, (len(merge_kwargs({}, {}), s) == 7)))
assert(bool({}, (operator_in(1, s))))
assert(bool({}, (operator_in(2, s))))
assert(bool({}, (operator_in(3, s))))
assert(bool({}, (operator_in(4, s))))
assert(bool({}, (operator_in(5, s))))
assert(bool({}, (operator_in(6, s))))
assert(bool({}, (operator_in(8, s))))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s = (bit.band(s1, s2))
assert(bool({}, (len(merge_kwargs({}, {}), s) == 3)))
assert(bool({}, (operator_in(2, s))))
assert(bool({}, (operator_in(4, s))))
assert(bool({}, (operator_in(6, s))))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s = (s1 - s2)
assert(bool({}, (len(merge_kwargs({}, {}), s) == 3)))
assert(bool({}, (operator_in(1, s))))
assert(bool({}, (operator_in(3, s))))
assert(bool({}, (operator_in(5, s))))
s1 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(1, 2, 3, 4, 5, 6)}))
s2 = frozenset(merge_kwargs({}, {}), set({}, {_to_null(2, 4, 6, 8)}))
s = (bit.bxor(s1, s2))
assert(bool({}, (len(merge_kwargs({}, {}), s) == 4)))
assert(bool({}, (operator_in(1, s))))
assert(bool({}, (operator_in(3, s))))
assert(bool({}, (operator_in(5, s))))
assert(bool({}, (operator_in(8, s))))
return {
s = s,
sc = sc,
s1 = s1,
s2 = s2,
s3 = s3,
s1_2 = s1_2,
s1_2_3 = s1_2_3,
s1and2 = s1and2,
s1and2and3 = s1and2and3,
s4 = s4,
s1_sym_s1 = s1_sym_s1,
s1_sym_s2 = s1_sym_s2,
s1_sym_s3 = s1_sym_s3,
s1_sym_s4 = s1_sym_s4,
s1_union_s2s3 = s1_union_s2s3,
}