bt2: add `ComponentDescriptor` class and test
[babeltrace.git] / tests / bindings / python / bt2 / test_integer_range_set.py
CommitLineData
19bb8b5a
PP
1#
2# Copyright (C) 2019 EfficiOS Inc.
3#
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
7# of the License.
8#
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.
13#
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.
17#
18
19import bt2
20import unittest
21
22
23class _IntegerRangeTestCase:
24 def setUp(self):
25 self._rg = self._CLS(self._def_lower, self._def_upper)
26
27 def test_create(self):
28 self.assertEqual(self._rg.lower, self._def_lower)
29 self.assertEqual(self._rg.upper, self._def_upper)
30
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)
35
36 def test_create_wrong_type_lower(self):
37 with self.assertRaises(TypeError):
38 rg = self._CLS(19.3, self._def_upper)
39
40 def test_create_wrong_type_lower(self):
41 with self.assertRaises(TypeError):
42 rg = self._CLS(self._def_lower, 19.3)
43
44 def test_create_out_of_bound_lower(self):
45 with self.assertRaises(ValueError):
46 rg = self._CLS(self._oob_lower, self._def_upper)
47
48 def test_create_out_of_bound_upper(self):
49 with self.assertRaises(ValueError):
50 rg = self._CLS(self._def_lower, self._oob_upper)
51
52 def test_create_lower_gt_upper(self):
53 with self.assertRaises(ValueError):
54 rg = self._CLS(self._def_lower, self._def_lower - 1)
55
56 def test_contains_lower(self):
57 self.assertTrue(self._rg.contains(self._def_lower))
58
59 def test_contains_upper(self):
60 self.assertTrue(self._rg.contains(self._def_upper))
61
62 def test_contains_avg(self):
63 avg = (self._def_lower + self._def_upper) // 2
64 self.assertTrue(self._rg.contains(avg))
65
66 def test_contains_wrong_type(self):
67 with self.assertRaises(TypeError):
68 self._rg.contains('allo')
69
70 def test_contains_out_of_bound(self):
71 with self.assertRaises(ValueError):
72 self._rg.contains(self._oob_upper)
73
74 def test_eq(self):
75 rg = self._CLS(self._def_lower, self._def_upper)
76 self.assertEqual(rg, self._rg)
77
78 def test_ne(self):
79 rg = self._CLS(self._def_lower, self._def_upper - 1)
80 self.assertNotEqual(rg, self._rg)
81
82 def test_ne_other_type(self):
83 self.assertNotEqual(self._rg, 48)
84
85
86class UnsignedIntegerRangeTestCase(_IntegerRangeTestCase, unittest.TestCase):
87 _CLS = bt2.UnsignedIntegerRange
88 _def_lower = 23
89 _def_upper = 18293
90 _oob_lower = -1
91 _oob_upper = 1 << 64
92
93
94class SignedIntegerRangeTestCase(_IntegerRangeTestCase, unittest.TestCase):
95 _CLS = bt2.SignedIntegerRange
96 _def_lower = -184
97 _def_upper = 11547
98 _oob_lower = -(1 << 63) - 1
99 _oob_upper = 1 << 63
100
101
102class _IntegerRangeSetTestCase:
103 def setUp(self):
104 self._rs = self._CLS((self._range1, self._range2, self._range3))
105
106 def test_create(self):
107 self.assertEqual(len(self._rs), 3)
108 self.assertIn(self._range1, self._rs)
109 self.assertIn(self._range2, self._rs)
110 self.assertIn(self._range3, self._rs)
111
112 def test_create_tuples(self):
cfbd7cf3
FD
113 rs = self._CLS(
114 (
115 (self._range1.lower, self._range1.upper),
116 (self._range2.lower, self._range2.upper),
117 (self._range3.lower, self._range3.upper),
118 )
119 )
19bb8b5a
PP
120 self.assertEqual(len(rs), 3)
121 self.assertIn(self._range1, rs)
122 self.assertIn(self._range2, rs)
123 self.assertIn(self._range3, rs)
124
125 def test_create_non_iter(self):
126 with self.assertRaises(TypeError):
127 self._rs = self._CLS(23)
128
129 def test_create_wrong_elem_type(self):
130 with self.assertRaises(TypeError):
131 self._rs = self._CLS((self._range1, self._range2, 17))
132
133 def test_len(self):
134 self.assertEqual(len(self._rs), 3)
135
136 def test_contains(self):
137 rs = self._CLS((self._range1, self._range2))
138 self.assertIn(self._range1, rs)
139 self.assertIn(self._range2, rs)
140 self.assertNotIn(self._range3, rs)
141
142 def test_contains_value(self):
143 rs = self._CLS((self._range1, self._range2))
144 self.assertTrue(rs.contains_value(self._range1.upper))
145 self.assertTrue(rs.contains_value(self._range2.lower))
146 self.assertFalse(rs.contains_value(self._range3.upper))
147
148 def test_contains_value_wrong_type(self):
149 with self.assertRaises(TypeError):
150 self._rs.contains_value('meow')
151
152 def test_iter(self):
153 range_list = list(self._rs)
154 self.assertIn(self._range1, range_list)
155 self.assertIn(self._range2, range_list)
156 self.assertIn(self._range3, range_list)
157
158 def test_empty(self):
159 rs = self._CLS()
160 self.assertEqual(len(rs), 0)
161 self.assertEqual(len(list(rs)), 0)
162
163 def test_add_range_obj(self):
164 rs = self._CLS((self._range1,))
165 self.assertEqual(len(rs), 1)
166 rs.add(self._range2)
167 self.assertEqual(len(rs), 2)
168 self.assertIn(self._range2, rs)
169
170 def test_discard_not_implemented(self):
171 with self.assertRaises(NotImplementedError):
172 self._rs.discard(self._range2)
173
174 def test_eq_same_order(self):
175 rs = self._CLS((self._range1, self._range2, self._range3))
176 self.assertEqual(self._rs, rs)
177
178 def test_eq_diff_order(self):
179 rs = self._CLS((self._range1, self._range3, self._range2))
180 self.assertEqual(self._rs, rs)
181
182 def test_eq_same_addr(self):
183 self.assertEqual(self._rs, self._rs)
184
185 def test_ne_diff_len(self):
186 rs = self._CLS((self._range1, self._range2))
187 self.assertNotEqual(self._rs, rs)
188
189 def test_ne_diff_values(self):
190 rs1 = self._CLS((self._range1, self._range2))
191 rs2 = self._CLS((self._range1, self._range3))
192 self.assertNotEqual(rs1, rs2)
193
194 def test_ne_incompatible_type(self):
195 self.assertNotEqual(self._rs, object())
196
197
198class UnsignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase, unittest.TestCase):
199 _CLS = bt2.UnsignedIntegerRangeSet
200
201 def setUp(self):
202 self._range1 = bt2.UnsignedIntegerRange(4, 192)
203 self._range2 = bt2.UnsignedIntegerRange(17, 228)
204 self._range3 = bt2.UnsignedIntegerRange(1000, 2000)
205 super().setUp()
206
207
208class SignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase, unittest.TestCase):
209 _CLS = bt2.SignedIntegerRangeSet
210
211 def setUp(self):
212 self._range1 = bt2.SignedIntegerRange(-1484, -17)
213 self._range2 = bt2.SignedIntegerRange(-101, 1500)
214 self._range3 = bt2.SignedIntegerRange(1948, 2019)
215 super().setUp()
This page took 0.031139 seconds and 4 git commands to generate.