X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=tests%2Fbindings%2Fpython%2Fbt2%2Ftest_integer_range_set.py;h=9205c658d0a10357955a3938a97c448e27401c73;hp=4c5ee1f325bff247d5c30479181d3425431c6504;hb=0235b0db7de5bcacdb3650c92461f2ce5eb2143d;hpb=d14ddbbab48ce07804d4252228fceee692d5dea4 diff --git a/tests/bindings/python/bt2/test_integer_range_set.py b/tests/bindings/python/bt2/test_integer_range_set.py index 4c5ee1f3..9205c658 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) @@ -42,7 +62,7 @@ class _IntegerRangeTestCase: with self.assertRaises(TypeError): 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): self._CLS(self._def_lower, 19.3) @@ -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( @@ -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)