+class OptionFieldTestCase(unittest.TestCase):
+ @staticmethod
+ def _const_value_setter(field):
+ field.value = {"opt_field": "hiboux"}
+
+ def _create_fc(self, tc):
+ fc = tc.create_option_without_selector_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"]
+ self._def_value = "hiboux"
+ self._def_const = create_const_field(
+ self._tc, self._create_fc(self._tc), self._const_value_setter
+ )["opt_field"]
+
+ def test_value_prop(self):
+ self._def.value = "hiboux"
+ self.assertEqual(self._def.field, "hiboux")
+ self.assertIs(type(self._def), bt2._OptionField)
+ self.assertIs(type(self._def.field), bt2._StringField)
+ self.assertTrue(self._def.has_field)
+
+ def test_const_value_prop(self):
+ self.assertEqual(self._def_const.field, "hiboux")
+ self.assertIs(type(self._def_const), bt2._OptionFieldConst)
+ self.assertIs(type(self._def_const.field), bt2._StringFieldConst)
+ self.assertTrue(self._def_const.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_false(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_false(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_const_field_prop(self):
+ with self.assertRaises(AttributeError):
+ self._def_const.has_field = False
+
+ self.assertEqual(self._def_const, self._def_value)
+ self.assertTrue(self._def_const.has_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_const_eq(self):
+ field = _create_field(self._tc, self._create_fc(self._tc))
+ field = field["opt_field"]
+ field.value = "hiboux"
+ self.assertEqual(self._def_const, field)
+ self.assertEqual(self._def_const, self._def_value)
+
+ 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))
+
+