Move to kernel style SPDX license identifiers
[babeltrace.git] / tests / bindings / python / bt2 / test_integer_range_set.py
index 0e6940e5238be95aac72f828a443aca4b8fb1338..9205c658d0a10357955a3938a97c448e27401c73 100644 (file)
@@ -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))
@@ -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)
@@ -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()
This page took 0.026222 seconds and 4 git commands to generate.