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
self.assertTrue(expected_string_found)
+class OptionFieldTestCase(unittest.TestCase):
+ def _create_fc(self, tc):
+ fc = tc.create_option_field_class(tc.create_string_field_class())
+ top_fc = tc.create_structure_field_class()
+ top_fc.append_member('opt_field', fc)
+ return top_fc
+
+ def setUp(self):
+ self._tc = get_default_trace_class()
+ fld = _create_field(self._tc, self._create_fc(self._tc))
+ self._def = fld['opt_field']
+
+ def test_value_prop(self):
+ self._def.value = 'hiboux'
+ self.assertEqual(self._def.field, 'hiboux')
+ self.assertTrue(self._def.has_field)
+
+ def test_has_field_prop_true(self):
+ self._def.has_field = True
+ self.assertTrue(self._def.has_field)
+
+ def test_has_field_prop_true(self):
+ self._def.has_field = False
+ self.assertFalse(self._def.has_field)
+
+ def test_bool_op_true(self):
+ self._def.value = 'allo'
+ self.assertTrue(self._def)
+
+ def test_bool_op_true(self):
+ self._def.has_field = False
+ self.assertFalse(self._def)
+
+ def test_field_prop_existing(self):
+ self._def.value = 'meow'
+ field = self._def.field
+ self.assertEqual(field, 'meow')
+
+ def test_field_prop_none(self):
+ self._def.has_field = False
+ field = self._def.field
+ self.assertIsNone(field)
+
+ def test_field_prop_existing_then_none(self):
+ self._def.value = 'meow'
+ field = self._def.field
+ self.assertEqual(field, 'meow')
+ self._def.has_field = False
+ field = self._def.field
+ self.assertIsNone(field)
+
+ def test_eq(self):
+ field = _create_field(self._tc, self._create_fc(self._tc))
+ field = field['opt_field']
+ field.value = 'walk'
+ self._def.value = 'walk'
+ self.assertEqual(self._def, field)
+
+ def test_eq_invalid_type(self):
+ self._def.value = 'gerry'
+ self.assertNotEqual(self._def, 23)
+
+ def test_str_op(self):
+ self._def.value = 'marcel'
+ self.assertEqual(str(self._def), str(self._def.field))
+
+ def test_repr_op(self):
+ self._def.value = 'mireille'
+ self.assertEqual(repr(self._def), repr(self._def.field))
+
+
class VariantFieldTestCase(unittest.TestCase):
def _create_fc(self, tc):
ft0 = tc.create_signed_integer_field_class(32)
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
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'