1 | # Copyright (C) 2003-2007, 2009, 2010 Nominum, Inc.
|
---|
2 | #
|
---|
3 | # Permission to use, copy, modify, and distribute this software and its
|
---|
4 | # documentation for any purpose with or without fee is hereby granted,
|
---|
5 | # provided that the above copyright notice and this permission notice
|
---|
6 | # appear in all copies.
|
---|
7 | #
|
---|
8 | # THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
|
---|
9 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
---|
10 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
---|
11 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
---|
12 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
---|
13 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
---|
14 | # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
---|
15 |
|
---|
16 | import unittest
|
---|
17 |
|
---|
18 | import dns.set
|
---|
19 |
|
---|
20 | # for convenience
|
---|
21 | S = dns.set.Set
|
---|
22 |
|
---|
23 | class SimpleSetTestCase(unittest.TestCase):
|
---|
24 |
|
---|
25 | def testLen1(self):
|
---|
26 | s1 = S()
|
---|
27 | self.failUnless(len(s1) == 0)
|
---|
28 |
|
---|
29 | def testLen2(self):
|
---|
30 | s1 = S([1, 2, 3])
|
---|
31 | self.failUnless(len(s1) == 3)
|
---|
32 |
|
---|
33 | def testLen3(self):
|
---|
34 | s1 = S([1, 2, 3, 3, 3])
|
---|
35 | self.failUnless(len(s1) == 3)
|
---|
36 |
|
---|
37 | def testUnion1(self):
|
---|
38 | s1 = S([1, 2, 3])
|
---|
39 | s2 = S([1, 2, 3])
|
---|
40 | e = S([1, 2, 3])
|
---|
41 | self.failUnless(s1 | s2 == e)
|
---|
42 |
|
---|
43 | def testUnion2(self):
|
---|
44 | s1 = S([1, 2, 3])
|
---|
45 | s2 = S([])
|
---|
46 | e = S([1, 2, 3])
|
---|
47 | self.failUnless(s1 | s2 == e)
|
---|
48 |
|
---|
49 | def testUnion3(self):
|
---|
50 | s1 = S([1, 2, 3])
|
---|
51 | s2 = S([3, 4])
|
---|
52 | e = S([1, 2, 3, 4])
|
---|
53 | self.failUnless(s1 | s2 == e)
|
---|
54 |
|
---|
55 | def testIntersection1(self):
|
---|
56 | s1 = S([1, 2, 3])
|
---|
57 | s2 = S([1, 2, 3])
|
---|
58 | e = S([1, 2, 3])
|
---|
59 | self.failUnless(s1 & s2 == e)
|
---|
60 |
|
---|
61 | def testIntersection2(self):
|
---|
62 | s1 = S([0, 1, 2, 3])
|
---|
63 | s2 = S([1, 2, 3, 4])
|
---|
64 | e = S([1, 2, 3])
|
---|
65 | self.failUnless(s1 & s2 == e)
|
---|
66 |
|
---|
67 | def testIntersection3(self):
|
---|
68 | s1 = S([1, 2, 3])
|
---|
69 | s2 = S([])
|
---|
70 | e = S([])
|
---|
71 | self.failUnless(s1 & s2 == e)
|
---|
72 |
|
---|
73 | def testIntersection4(self):
|
---|
74 | s1 = S([1, 2, 3])
|
---|
75 | s2 = S([5, 4])
|
---|
76 | e = S([])
|
---|
77 | self.failUnless(s1 & s2 == e)
|
---|
78 |
|
---|
79 | def testDifference1(self):
|
---|
80 | s1 = S([1, 2, 3])
|
---|
81 | s2 = S([5, 4])
|
---|
82 | e = S([1, 2, 3])
|
---|
83 | self.failUnless(s1 - s2 == e)
|
---|
84 |
|
---|
85 | def testDifference2(self):
|
---|
86 | s1 = S([1, 2, 3])
|
---|
87 | s2 = S([])
|
---|
88 | e = S([1, 2, 3])
|
---|
89 | self.failUnless(s1 - s2 == e)
|
---|
90 |
|
---|
91 | def testDifference3(self):
|
---|
92 | s1 = S([1, 2, 3])
|
---|
93 | s2 = S([3, 2])
|
---|
94 | e = S([1])
|
---|
95 | self.failUnless(s1 - s2 == e)
|
---|
96 |
|
---|
97 | def testDifference4(self):
|
---|
98 | s1 = S([1, 2, 3])
|
---|
99 | s2 = S([3, 2, 1])
|
---|
100 | e = S([])
|
---|
101 | self.failUnless(s1 - s2 == e)
|
---|
102 |
|
---|
103 | def testSubset1(self):
|
---|
104 | s1 = S([1, 2, 3])
|
---|
105 | s2 = S([3, 2, 1])
|
---|
106 | self.failUnless(s1.issubset(s2))
|
---|
107 |
|
---|
108 | def testSubset2(self):
|
---|
109 | s1 = S([1, 2, 3])
|
---|
110 | self.failUnless(s1.issubset(s1))
|
---|
111 |
|
---|
112 | def testSubset3(self):
|
---|
113 | s1 = S([])
|
---|
114 | s2 = S([1, 2, 3])
|
---|
115 | self.failUnless(s1.issubset(s2))
|
---|
116 |
|
---|
117 | def testSubset4(self):
|
---|
118 | s1 = S([1])
|
---|
119 | s2 = S([1, 2, 3])
|
---|
120 | self.failUnless(s1.issubset(s2))
|
---|
121 |
|
---|
122 | def testSubset5(self):
|
---|
123 | s1 = S([])
|
---|
124 | s2 = S([])
|
---|
125 | self.failUnless(s1.issubset(s2))
|
---|
126 |
|
---|
127 | def testSubset6(self):
|
---|
128 | s1 = S([1, 4])
|
---|
129 | s2 = S([1, 2, 3])
|
---|
130 | self.failUnless(not s1.issubset(s2))
|
---|
131 |
|
---|
132 | def testSuperset1(self):
|
---|
133 | s1 = S([1, 2, 3])
|
---|
134 | s2 = S([3, 2, 1])
|
---|
135 | self.failUnless(s1.issuperset(s2))
|
---|
136 |
|
---|
137 | def testSuperset2(self):
|
---|
138 | s1 = S([1, 2, 3])
|
---|
139 | self.failUnless(s1.issuperset(s1))
|
---|
140 |
|
---|
141 | def testSuperset3(self):
|
---|
142 | s1 = S([1, 2, 3])
|
---|
143 | s2 = S([])
|
---|
144 | self.failUnless(s1.issuperset(s2))
|
---|
145 |
|
---|
146 | def testSuperset4(self):
|
---|
147 | s1 = S([1, 2, 3])
|
---|
148 | s2 = S([1])
|
---|
149 | self.failUnless(s1.issuperset(s2))
|
---|
150 |
|
---|
151 | def testSuperset5(self):
|
---|
152 | s1 = S([])
|
---|
153 | s2 = S([])
|
---|
154 | self.failUnless(s1.issuperset(s2))
|
---|
155 |
|
---|
156 | def testSuperset6(self):
|
---|
157 | s1 = S([1, 2, 3])
|
---|
158 | s2 = S([1, 4])
|
---|
159 | self.failUnless(not s1.issuperset(s2))
|
---|
160 |
|
---|
161 | def testUpdate1(self):
|
---|
162 | s1 = S([1, 2, 3])
|
---|
163 | u = (4, 5, 6)
|
---|
164 | e = S([1, 2, 3, 4, 5, 6])
|
---|
165 | s1.update(u)
|
---|
166 | self.failUnless(s1 == e)
|
---|
167 |
|
---|
168 | def testUpdate2(self):
|
---|
169 | s1 = S([1, 2, 3])
|
---|
170 | u = []
|
---|
171 | e = S([1, 2, 3])
|
---|
172 | s1.update(u)
|
---|
173 | self.failUnless(s1 == e)
|
---|
174 |
|
---|
175 | def testGetitem(self):
|
---|
176 | s1 = S([1, 2, 3])
|
---|
177 | i0 = s1[0]
|
---|
178 | i1 = s1[1]
|
---|
179 | i2 = s1[2]
|
---|
180 | s2 = S([i0, i1, i2])
|
---|
181 | self.failUnless(s1 == s2)
|
---|
182 |
|
---|
183 | def testGetslice(self):
|
---|
184 | s1 = S([1, 2, 3])
|
---|
185 | slice = s1[0:2]
|
---|
186 | self.failUnless(len(slice) == 2)
|
---|
187 | item = s1[2]
|
---|
188 | slice.append(item)
|
---|
189 | s2 = S(slice)
|
---|
190 | self.failUnless(s1 == s2)
|
---|
191 |
|
---|
192 | def testDelitem(self):
|
---|
193 | s1 = S([1, 2, 3])
|
---|
194 | del s1[0]
|
---|
195 | i1 = s1[0]
|
---|
196 | i2 = s1[1]
|
---|
197 | self.failUnless(i1 != i2)
|
---|
198 | self.failUnless(i1 == 1 or i1 == 2 or i1 == 3)
|
---|
199 | self.failUnless(i2 == 1 or i2 == 2 or i2 == 3)
|
---|
200 |
|
---|
201 | def testDelslice(self):
|
---|
202 | s1 = S([1, 2, 3])
|
---|
203 | del s1[0:2]
|
---|
204 | i1 = s1[0]
|
---|
205 | self.failUnless(i1 == 1 or i1 == 2 or i1 == 3)
|
---|
206 |
|
---|
207 | if __name__ == '__main__':
|
---|
208 | unittest.main()
|
---|