2 # Copyright (C) 2019 EfficiOS Inc.
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; only version 2
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 class _IntegerRangeTestCase
:
25 self
._rg
= self
._CLS
(self
._def
_lower
, self
._def
_upper
)
27 def test_create(self
):
28 self
.assertEqual(self
._rg
.lower
, self
._def
_lower
)
29 self
.assertEqual(self
._rg
.upper
, self
._def
_upper
)
31 def test_create_same(self
):
32 rg
= self
._CLS
(self
._def
_lower
, self
._def
_lower
)
33 self
.assertEqual(rg
.lower
, self
._def
_lower
)
34 self
.assertEqual(rg
.upper
, self
._def
_lower
)
36 def test_create_single(self
):
37 rg
= self
._CLS
(self
._def
_lower
)
38 self
.assertEqual(rg
.lower
, self
._def
_lower
)
39 self
.assertEqual(rg
.upper
, self
._def
_lower
)
41 def test_create_wrong_type_lower(self
):
42 with self
.assertRaises(TypeError):
43 self
._CLS
(19.3, self
._def
_upper
)
45 def test_create_wrong_type_lower(self
):
46 with self
.assertRaises(TypeError):
47 self
._CLS
(self
._def
_lower
, 19.3)
49 def test_create_out_of_bound_lower(self
):
50 with self
.assertRaises(ValueError):
51 self
._CLS
(self
._oob
_lower
, self
._def
_upper
)
53 def test_create_out_of_bound_upper(self
):
54 with self
.assertRaises(ValueError):
55 self
._CLS
(self
._def
_lower
, self
._oob
_upper
)
57 def test_create_lower_gt_upper(self
):
58 with self
.assertRaises(ValueError):
59 self
._CLS
(self
._def
_lower
, self
._def
_lower
- 1)
61 def test_contains_lower(self
):
62 self
.assertTrue(self
._rg
.contains(self
._def
_lower
))
64 def test_contains_upper(self
):
65 self
.assertTrue(self
._rg
.contains(self
._def
_upper
))
67 def test_contains_avg(self
):
68 avg
= (self
._def
_lower
+ self
._def
_upper
) // 2
69 self
.assertTrue(self
._rg
.contains(avg
))
71 def test_contains_wrong_type(self
):
72 with self
.assertRaises(TypeError):
73 self
._rg
.contains('allo')
75 def test_contains_out_of_bound(self
):
76 with self
.assertRaises(ValueError):
77 self
._rg
.contains(self
._oob
_upper
)
80 rg
= self
._CLS
(self
._def
_lower
, self
._def
_upper
)
81 self
.assertEqual(rg
, self
._rg
)
84 rg
= self
._CLS
(self
._def
_lower
, self
._def
_upper
- 1)
85 self
.assertNotEqual(rg
, self
._rg
)
87 def test_ne_other_type(self
):
88 self
.assertNotEqual(self
._rg
, 48)
91 class UnsignedIntegerRangeTestCase(_IntegerRangeTestCase
, unittest
.TestCase
):
92 _CLS
= bt2
.UnsignedIntegerRange
99 class SignedIntegerRangeTestCase(_IntegerRangeTestCase
, unittest
.TestCase
):
100 _CLS
= bt2
.SignedIntegerRange
103 _oob_lower
= -(1 << 63) - 1
107 class _IntegerRangeSetTestCase
:
109 self
._rs
= self
._CLS
((self
._range
1, self
._range
2, self
._range
3))
111 def test_create(self
):
112 self
.assertEqual(len(self
._rs
), 3)
113 self
.assertIn(self
._range
1, self
._rs
)
114 self
.assertIn(self
._range
2, self
._rs
)
115 self
.assertIn(self
._range
3, self
._rs
)
117 def test_create_tuples(self
):
120 (self
._range
1.lower
, self
._range
1.upper
),
121 (self
._range
2.lower
, self
._range
2.upper
),
122 (self
._range
3.lower
, self
._range
3.upper
),
125 self
.assertEqual(len(rs
), 3)
126 self
.assertIn(self
._range
1, rs
)
127 self
.assertIn(self
._range
2, rs
)
128 self
.assertIn(self
._range
3, rs
)
130 def test_create_single(self
):
131 rs
= self
._CLS
((self
._range
_same
.lower
,))
132 self
.assertEqual(len(rs
), 1)
133 self
.assertIn(self
._range
_same
, rs
)
135 def test_create_non_iter(self
):
136 with self
.assertRaises(TypeError):
137 self
._rs
= self
._CLS
(23)
139 def test_create_wrong_elem_type(self
):
140 with self
.assertRaises(TypeError):
141 self
._rs
= self
._CLS
((self
._range
1, self
._range
2, 'lel'))
144 self
.assertEqual(len(self
._rs
), 3)
146 def test_contains(self
):
147 rs
= self
._CLS
((self
._range
1, self
._range
2))
148 self
.assertIn(self
._range
1, rs
)
149 self
.assertIn(self
._range
2, rs
)
150 self
.assertNotIn(self
._range
3, rs
)
152 def test_contains_value(self
):
153 rs
= self
._CLS
((self
._range
1, self
._range
2))
154 self
.assertTrue(rs
.contains_value(self
._range
1.upper
))
155 self
.assertTrue(rs
.contains_value(self
._range
2.lower
))
156 self
.assertFalse(rs
.contains_value(self
._range
3.upper
))
158 def test_contains_value_wrong_type(self
):
159 with self
.assertRaises(TypeError):
160 self
._rs
.contains_value('meow')
163 range_list
= list(self
._rs
)
164 self
.assertIn(self
._range
1, range_list
)
165 self
.assertIn(self
._range
2, range_list
)
166 self
.assertIn(self
._range
3, range_list
)
168 def test_empty(self
):
170 self
.assertEqual(len(rs
), 0)
171 self
.assertEqual(len(list(rs
)), 0)
173 def test_add_range_obj(self
):
174 rs
= self
._CLS
((self
._range
1,))
175 self
.assertEqual(len(rs
), 1)
177 self
.assertEqual(len(rs
), 2)
178 self
.assertIn(self
._range
2, rs
)
180 def test_discard_not_implemented(self
):
181 with self
.assertRaises(NotImplementedError):
182 self
._rs
.discard(self
._range
2)
184 def test_eq_same_order(self
):
185 rs
= self
._CLS
((self
._range
1, self
._range
2, self
._range
3))
186 self
.assertEqual(self
._rs
, rs
)
188 def test_eq_diff_order(self
):
189 rs
= self
._CLS
((self
._range
1, self
._range
3, self
._range
2))
190 self
.assertEqual(self
._rs
, rs
)
192 def test_eq_same_addr(self
):
193 self
.assertEqual(self
._rs
, self
._rs
)
195 def test_ne_diff_len(self
):
196 rs
= self
._CLS
((self
._range
1, self
._range
2))
197 self
.assertNotEqual(self
._rs
, rs
)
199 def test_ne_diff_values(self
):
200 rs1
= self
._CLS
((self
._range
1, self
._range
2))
201 rs2
= self
._CLS
((self
._range
1, self
._range
3))
202 self
.assertNotEqual(rs1
, rs2
)
204 def test_ne_incompatible_type(self
):
205 self
.assertNotEqual(self
._rs
, object())
208 class UnsignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase
, unittest
.TestCase
):
209 _CLS
= bt2
.UnsignedIntegerRangeSet
212 self
._range
1 = bt2
.UnsignedIntegerRange(4, 192)
213 self
._range
2 = bt2
.UnsignedIntegerRange(17, 228)
214 self
._range
3 = bt2
.UnsignedIntegerRange(1000, 2000)
215 self
._range
_same
= bt2
.UnsignedIntegerRange(1300, 1300)
219 class SignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase
, unittest
.TestCase
):
220 _CLS
= bt2
.SignedIntegerRangeSet
223 self
._range
1 = bt2
.SignedIntegerRange(-1484, -17)
224 self
._range
2 = bt2
.SignedIntegerRange(-101, 1500)
225 self
._range
3 = bt2
.SignedIntegerRange(1948, 2019)
226 self
._range
_same
= bt2
.SignedIntegerRange(-1300, -1300)
230 if __name__
== '__main__':
This page took 0.034148 seconds and 4 git commands to generate.