bt2: field.py: add index check in `selected_option_index` setter of `_VariantField`
[babeltrace.git] / tests / bindings / python / bt2 / test_field.py
index 429fe2eea37089444eefd1e38b8e4778f99f25a1..5a338801245dfad89ac374b0c93d7e6af528a5d9 100644 (file)
@@ -126,6 +126,52 @@ def _create_struct_array_field(tc, length):
     return packet.context_field[field_name]
 
 
+class BitArrayFieldTestCase(unittest.TestCase):
+    def _create_field(self):
+        return _create_field(self._tc, self._tc.create_bit_array_field_class(24))
+
+    def setUp(self):
+        self._tc = get_default_trace_class()
+        self._def_value = 15497
+        self._def = self._create_field()
+        self._def.value_as_integer = self._def_value
+        self._def_new_value = 101542
+
+    def test_assign_invalid_type(self):
+        with self.assertRaises(TypeError):
+            self._def.value_as_integer = 'onze'
+
+    def test_assign(self):
+        self._def.value_as_integer = 199
+        self.assertEqual(self._def.value_as_integer, 199)
+
+    def test_assign_masked(self):
+        self._def.value_as_integer = 0xE1549BB
+        self.assertEqual(self._def.value_as_integer, 0xE1549BB & ((1 << 24) - 1))
+
+    def test_eq(self):
+        other = self._create_field()
+        other.value_as_integer = self._def_value
+        self.assertEqual(self._def, other)
+
+    def test_ne_same_type(self):
+        other = self._create_field()
+        other.value_as_integer = self._def_value - 1
+        self.assertNotEqual(self._def, other)
+
+    def test_ne_diff_type(self):
+        self.assertNotEqual(self._def, self._def_value)
+
+    def test_len(self):
+        self.assertEqual(len(self._def), 24)
+
+    def test_str(self):
+        self.assertEqual(str(self._def), str(self._def_value))
+
+    def test_repr(self):
+        self.assertEqual(repr(self._def), repr(self._def_value))
+
+
 # Base class for numeric field test cases.
 #
 # To be compatible with this base class, a derived class must, in its
@@ -1924,6 +1970,14 @@ class VariantFieldTestCase(unittest.TestCase):
         self._def.selected_option_index = 2
         self.assertEqual(self._def.selected_option_index, 2)
 
+    def test_selected_option_index_above_range(self):
+        with self.assertRaises(IndexError):
+            self._def.selected_option_index = 4
+
+    def test_selected_option_index_below_range(self):
+        with self.assertRaises(IndexError):
+            self._def.selected_option_index = -1
+
     def test_selected_option(self):
         self._def.selected_option_index = 2
         self._def.value = -17.34
@@ -1942,6 +1996,9 @@ class VariantFieldTestCase(unittest.TestCase):
         self._def.value = 1774
         self.assertEqual(self._def, field)
 
+    def test_len(self):
+        self.assertEqual(len(self._def), 4)
+
     def test_eq_invalid_type(self):
         self._def.selected_option_index = 1
         self._def.value = 'gerry'
This page took 0.023687 seconds and 4 git commands to generate.