コード例 #1
0
 def test_create_full(self):
     ft = bt2.EnumerationFieldType(size=24, alignment=16,
                                   byte_order=bt2.ByteOrder.BIG_ENDIAN,
                                   is_signed=True, base=bt2.Base.OCTAL,
                                   encoding=bt2.Encoding.NONE,
                                   mapped_clock_class=None)
     self.assertEqual(ft.size, 24)
     self.assertEqual(ft.alignment, 16)
     self.assertEqual(ft.byte_order, bt2.ByteOrder.BIG_ENDIAN)
     self.assertTrue(ft.is_signed)
     self.assertEqual(ft.base, bt2.Base.OCTAL)
     self.assertEqual(ft.encoding, bt2.Encoding.NONE)
コード例 #2
0
 def test_iadd(self):
     struct_ft = bt2.StructureFieldType()
     c_field_type = bt2.StringFieldType()
     d_field_type = bt2.EnumerationFieldType(size=32)
     e_field_type = bt2.StructureFieldType()
     struct_ft.append_field('c_string', c_field_type)
     struct_ft.append_field('d_enum', d_field_type)
     struct_ft.append_field('e_struct', e_field_type)
     a_field_type = bt2.FloatingPointNumberFieldType()
     b_field_type = bt2.IntegerFieldType(17)
     self._ft.append_field('a_float', a_field_type)
     self._ft.append_field('b_int', b_field_type)
     self._ft += struct_ft
     self.assertEqual(self._ft['a_float'], a_field_type)
     self.assertEqual(self._ft['b_int'], b_field_type)
     self.assertEqual(self._ft['c_string'], c_field_type)
     self.assertEqual(self._ft['d_enum'], d_field_type)
     self.assertEqual(self._ft['e_struct'], e_field_type)
コード例 #3
0
    def test_type(self):
        int_ft = bt2.IntegerFieldType(32)

        enum_ft = bt2.EnumerationFieldType(int_ft)
        enum_ft.append_mapping('corner', 23)
        enum_ft.append_mapping('zoom', 17, 20)
        enum_ft.append_mapping('mellotron', 1001)
        enum_ft.append_mapping('giorgio', 2000, 3000)

        array_ft = bt2.ArrayFieldType(int_ft, 5)
        seq_ft = bt2.SequenceFieldType(int_ft, 'the_len_field')
        float_ft = bt2.FloatingPointNumberFieldType()

        struct_ft = bt2.StructureFieldType()
        struct_ft.append_field('a', int_ft)
        struct_ft.append_field('b', int_ft)
        struct_ft.append_field('c', int_ft)

        _string_ft = bt2.StringFieldType()

        variant_ft = bt2.VariantFieldType('tag', enum_ft)
        variant_ft.append_field('corner', int_ft)
        variant_ft.append_field('zoom', array_ft)
        variant_ft.append_field('mellotron', float_ft)
        variant_ft.append_field('giorgio', struct_ft)

        expected_types = {
            babeltrace.CTFTypeId.INTEGER: int_ft,
            babeltrace.CTFTypeId.FLOAT: float_ft,
            babeltrace.CTFTypeId.ENUM: enum_ft,
            babeltrace.CTFTypeId.STRING: _string_ft,
            babeltrace.CTFTypeId.STRUCT: struct_ft,
            babeltrace.CTFTypeId.VARIANT: variant_ft,
            babeltrace.CTFTypeId.ARRAY: array_ft,
            babeltrace.CTFTypeId.SEQUENCE: seq_ft,
        }

        for type_id, ft in expected_types.items():
            declaration = self._get_declaration(ft)
            self.assertIsNotNone(declaration)
            self.assertEqual(declaration.type, type_id)
コード例 #4
0
 def test_iadd(self):
     enum_ft = bt2.EnumerationFieldType(size=16)
     enum_ft.append_mapping('c', 4, 5)
     enum_ft.append_mapping('d', 6, 18)
     enum_ft.append_mapping('e', 20, 27)
     self._ft.append_mapping('a', 0, 2)
     self._ft.append_mapping('b', 3)
     self._ft += enum_ft
     self.assertEqual(self._ft[0].name, 'a')
     self.assertEqual(self._ft[0].lower, 0)
     self.assertEqual(self._ft[0].upper, 2)
     self.assertEqual(self._ft[1].name, 'b')
     self.assertEqual(self._ft[1].lower, 3)
     self.assertEqual(self._ft[1].upper, 3)
     self.assertEqual(self._ft[2].name, 'c')
     self.assertEqual(self._ft[2].lower, 4)
     self.assertEqual(self._ft[2].upper, 5)
     self.assertEqual(self._ft[3].name, 'd')
     self.assertEqual(self._ft[3].lower, 6)
     self.assertEqual(self._ft[3].upper, 18)
     self.assertEqual(self._ft[4].name, 'e')
     self.assertEqual(self._ft[4].lower, 20)
     self.assertEqual(self._ft[4].upper, 27)
コード例 #5
0
 def test_find_by_value_unsigned(self):
     self._test_find_by_value(bt2.EnumerationFieldType(size=8))
コード例 #6
0
 def test_find_by_value_signed(self):
     self._test_find_by_value(bt2.EnumerationFieldType(size=8, is_signed=True))
コード例 #7
0
 def test_mapping_eq_invalid(self):
     enum1 = bt2.EnumerationFieldType(size=32)
     enum1.append_mapping('b', 1, 3)
     self.assertNotEqual(enum1[0], 23)
コード例 #8
0
 def test_mapping_eq(self):
     enum1 = bt2.EnumerationFieldType(size=32)
     enum2 = bt2.EnumerationFieldType(size=16)
     enum1.append_mapping('b', 1, 3)
     enum2.append_mapping('b', 1, 3)
     self.assertEqual(enum1[0], enum2[0])
コード例 #9
0
 def test_integer_field_type_prop(self):
     int_ft = bt2.IntegerFieldType(23)
     enum_ft = bt2.EnumerationFieldType(int_ft)
     self.assertEqual(enum_ft.integer_field_type.addr, int_ft.addr)
コード例 #10
0
 def test_create_from_invalid_ft(self):
     with self.assertRaises(TypeError):
         ft = bt2.FloatingPointNumberFieldType()
         self._ft = bt2.EnumerationFieldType(ft)
コード例 #11
0
 def test_create_from_invalid_type(self):
     with self.assertRaises(TypeError):
         self._ft = bt2.EnumerationFieldType('coucou')
コード例 #12
0
 def test_create_from_int_ft(self):
     int_ft = bt2.IntegerFieldType(23)
     self._ft = bt2.EnumerationFieldType(int_ft)
コード例 #13
0
 def setUp(self):
     self._ft = bt2.EnumerationFieldType(size=35)