X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tests%2Fbindings%2Fpython%2Fbt2%2Ftest_integer_range_set.py;h=808a4045c29c784146fa8061116a2715cb7fc4d7;hb=f5567ea88d172767b34373bc6e402da8bfd85ef8;hp=0e6940e5238be95aac72f828a443aca4b8fb1338;hpb=7a2a232886db556f09e7ea7123e44adaa2690cb3;p=babeltrace.git diff --git a/tests/bindings/python/bt2/test_integer_range_set.py b/tests/bindings/python/bt2/test_integer_range_set.py index 0e6940e5..808a4045 100644 --- a/tests/bindings/python/bt2/test_integer_range_set.py +++ b/tests/bindings/python/bt2/test_integer_range_set.py @@ -1,32 +1,52 @@ +# SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2019 EfficiOS Inc. # -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; only version 2 -# of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# import bt2 import unittest +from utils import get_default_trace_class, create_const_field + + +def get_const_signed_integer_range(int_ranges): + def range_setter(field): + field.value = 12 + + tc = get_default_trace_class() + fc = tc.create_signed_enumeration_field_class(32) + fc.add_mapping("something", bt2.SignedIntegerRangeSet(int_ranges)) + + return create_const_field(tc, fc, range_setter).cls["something"].ranges + + +def get_const_unsigned_integer_range(int_ranges): + def range_setter(field): + field.value = 12 + + tc = get_default_trace_class() + fc = tc.create_unsigned_enumeration_field_class(32) + fc.add_mapping("something", bt2.UnsignedIntegerRangeSet(int_ranges)) + + return create_const_field(tc, fc, range_setter).cls["something"].ranges + class _IntegerRangeTestCase: def setUp(self): self._rg = self._CLS(self._def_lower, self._def_upper) + self._const_rg = list( + self._GET_CONST_RANGE_SET([(self._def_lower, self._def_upper)]) + )[0] def test_create(self): self.assertEqual(self._rg.lower, self._def_lower) self.assertEqual(self._rg.upper, self._def_upper) + self.assertIs(type(self._rg), self._CLS) + + def test_const_create(self): + self.assertEqual(self._const_rg.lower, self._def_lower) + self.assertEqual(self._const_rg.upper, self._def_upper) + self.assertIs(type(self._const_rg), self._CONST_CLS) def test_create_same(self): rg = self._CLS(self._def_lower, self._def_lower) @@ -40,23 +60,23 @@ class _IntegerRangeTestCase: def test_create_wrong_type_lower(self): with self.assertRaises(TypeError): - rg = self._CLS(19.3, self._def_upper) + self._CLS(19.3, self._def_upper) - def test_create_wrong_type_lower(self): + def test_create_wrong_type_upper(self): with self.assertRaises(TypeError): - rg = self._CLS(self._def_lower, 19.3) + self._CLS(self._def_lower, 19.3) def test_create_out_of_bound_lower(self): with self.assertRaises(ValueError): - rg = self._CLS(self._oob_lower, self._def_upper) + self._CLS(self._oob_lower, self._def_upper) def test_create_out_of_bound_upper(self): with self.assertRaises(ValueError): - rg = self._CLS(self._def_lower, self._oob_upper) + self._CLS(self._def_lower, self._oob_upper) def test_create_lower_gt_upper(self): with self.assertRaises(ValueError): - rg = self._CLS(self._def_lower, self._def_lower - 1) + self._CLS(self._def_lower, self._def_lower - 1) def test_contains_lower(self): self.assertTrue(self._rg.contains(self._def_lower)) @@ -70,7 +90,7 @@ class _IntegerRangeTestCase: def test_contains_wrong_type(self): with self.assertRaises(TypeError): - self._rg.contains('allo') + self._rg.contains("allo") def test_contains_out_of_bound(self): with self.assertRaises(ValueError): @@ -80,16 +100,31 @@ class _IntegerRangeTestCase: rg = self._CLS(self._def_lower, self._def_upper) self.assertEqual(rg, self._rg) + def test_const_eq(self): + rg = list(self._GET_CONST_RANGE_SET([(self._def_lower, self._def_upper)]))[0] + self.assertEqual(rg, self._const_rg) + + def test_const_nonconst_eq(self): + self.assertEqual(self._rg, self._const_rg) + def test_ne(self): rg = self._CLS(self._def_lower, self._def_upper - 1) self.assertNotEqual(rg, self._rg) + def test_const_ne(self): + rg = list(self._GET_CONST_RANGE_SET([(self._def_lower, self._def_upper - 1)]))[ + 0 + ] + self.assertNotEqual(rg, self._const_rg) + def test_ne_other_type(self): self.assertNotEqual(self._rg, 48) class UnsignedIntegerRangeTestCase(_IntegerRangeTestCase, unittest.TestCase): _CLS = bt2.UnsignedIntegerRange + _CONST_CLS = bt2._UnsignedIntegerRangeConst + _GET_CONST_RANGE_SET = staticmethod(get_const_unsigned_integer_range) _def_lower = 23 _def_upper = 18293 _oob_lower = -1 @@ -98,6 +133,8 @@ class UnsignedIntegerRangeTestCase(_IntegerRangeTestCase, unittest.TestCase): class SignedIntegerRangeTestCase(_IntegerRangeTestCase, unittest.TestCase): _CLS = bt2.SignedIntegerRange + _CONST_CLS = bt2._SignedIntegerRangeConst + _GET_CONST_RANGE_SET = staticmethod(get_const_signed_integer_range) _def_lower = -184 _def_upper = 11547 _oob_lower = -(1 << 63) - 1 @@ -107,12 +144,23 @@ class SignedIntegerRangeTestCase(_IntegerRangeTestCase, unittest.TestCase): class _IntegerRangeSetTestCase: def setUp(self): self._rs = self._CLS((self._range1, self._range2, self._range3)) + self._const_rs = self._GET_CONST_RANGE_SET( + [self._range1, self._range2, self._range3] + ) def test_create(self): self.assertEqual(len(self._rs), 3) self.assertIn(self._range1, self._rs) self.assertIn(self._range2, self._rs) self.assertIn(self._range3, self._rs) + self.assertIs(type(self._range1), self._RANGE_CLS) + + def test_const_create(self): + self.assertEqual(len(self._const_rs), 3) + self.assertIn(self._range1, self._const_rs) + self.assertIn(self._range2, self._const_rs) + self.assertIn(self._range3, self._const_rs) + self.assertIs(type(self._range1), self._RANGE_CLS) def test_create_tuples(self): rs = self._CLS( @@ -138,7 +186,7 @@ class _IntegerRangeSetTestCase: def test_create_wrong_elem_type(self): with self.assertRaises(TypeError): - self._rs = self._CLS((self._range1, self._range2, 'lel')) + self._rs = self._CLS((self._range1, self._range2, "lel")) def test_len(self): self.assertEqual(len(self._rs), 3) @@ -157,7 +205,7 @@ class _IntegerRangeSetTestCase: def test_contains_value_wrong_type(self): with self.assertRaises(TypeError): - self._rs.contains_value('meow') + self._rs.contains_value("meow") def test_iter(self): range_list = list(self._rs) @@ -165,6 +213,18 @@ class _IntegerRangeSetTestCase: self.assertIn(self._range2, range_list) self.assertIn(self._range3, range_list) + for rg in range_list: + self.assertIs(type(rg), self._RANGE_CLS) + + def test_const_iter(self): + range_list = list(self._const_rs) + self.assertIn(self._range1, range_list) + self.assertIn(self._range2, range_list) + self.assertIn(self._range3, range_list) + + for rg in range_list: + self.assertIs(type(rg), self._CONST_RANGE_CLS) + def test_empty(self): rs = self._CLS() self.assertEqual(len(rs), 0) @@ -177,6 +237,10 @@ class _IntegerRangeSetTestCase: self.assertEqual(len(rs), 2) self.assertIn(self._range2, rs) + def test_const_add_range_obj(self): + with self.assertRaises(AttributeError): + self._const_rs.add((12, 4434)) + def test_discard_not_implemented(self): with self.assertRaises(NotImplementedError): self._rs.discard(self._range2) @@ -207,6 +271,10 @@ class _IntegerRangeSetTestCase: class UnsignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase, unittest.TestCase): _CLS = bt2.UnsignedIntegerRangeSet + _CONST_CLS = bt2._UnsignedIntegerRangeSetConst + _RANGE_CLS = bt2.UnsignedIntegerRange + _CONST_RANGE_CLS = bt2._UnsignedIntegerRangeConst + _GET_CONST_RANGE_SET = staticmethod(get_const_unsigned_integer_range) def setUp(self): self._range1 = bt2.UnsignedIntegerRange(4, 192) @@ -218,6 +286,10 @@ class UnsignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase, unittest.TestCas class SignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase, unittest.TestCase): _CLS = bt2.SignedIntegerRangeSet + _CONST_CLS = bt2._SignedIntegerRangeSetConst + _RANGE_CLS = bt2.SignedIntegerRange + _CONST_RANGE_CLS = bt2._SignedIntegerRangeConst + _GET_CONST_RANGE_SET = staticmethod(get_const_signed_integer_range) def setUp(self): self._range1 = bt2.SignedIntegerRange(-1484, -17) @@ -225,3 +297,7 @@ class SignedIntegerRangeSetTestCase(_IntegerRangeSetTestCase, unittest.TestCase) self._range3 = bt2.SignedIntegerRange(1948, 2019) self._range_same = bt2.SignedIntegerRange(-1300, -1300) super().setUp() + + +if __name__ == "__main__": + unittest.main()