| 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()
|
|---|