Exemplo n.º 1
0
    def setUp(self):
        self.s = dna.Struct(b'AlembicObjectPath')
        self.s_char = dna.Struct(b'char', 1)
        self.s_float = dna.Struct(b'float', 4)
        self.s_uint64 = dna.Struct(b'uint64_t', 8)
        self.s_uint128 = dna.Struct(b'uint128_t', 16)  # non-supported type

        self.f_next = dna.Field(self.s, dna.Name(b'*next'), 8, 0)
        self.f_prev = dna.Field(self.s, dna.Name(b'*prev'), 8, 8)
        self.f_path = dna.Field(self.s_char, dna.Name(b'path[4096]'), 4096, 16)
        self.f_pointer = dna.Field(self.s_char, dna.Name(b'*ptr'), 3 * 8, 4112)
        self.f_number = dna.Field(self.s_uint64, dna.Name(b'numbah'), 8, 4136)
        self.f_floaty = dna.Field(self.s_float, dna.Name(b'floaty[2]'), 2 * 4,
                                  4144)
        self.f_flag = dna.Field(self.s_char, dna.Name(b'bitflag'), 1, 4152)
        self.f_bignum = dna.Field(self.s_uint128, dna.Name(b'bignum'), 16,
                                  4153)

        self.s.append_field(self.f_next)
        self.s.append_field(self.f_prev)
        self.s.append_field(self.f_path)
        self.s.append_field(self.f_pointer)
        self.s.append_field(self.f_number)
        self.s.append_field(self.f_floaty)
        self.s.append_field(self.f_flag)
        self.s.append_field(self.f_bignum)
Exemplo n.º 2
0
 def test_simple_name(self):
     n = dna.Name(b'Suzanne')
     self.assertEqual(n.name_full, b'Suzanne')
     self.assertEqual(n.name_only, b'Suzanne')
     self.assertFalse(n.is_pointer)
     self.assertFalse(n.is_method_pointer)
     self.assertEqual(n.array_size, 1)
Exemplo n.º 3
0
 def test_pointer_array(self):
     n = dna.Name(b'*mtex[18]')
     self.assertEqual(n.name_full, b'*mtex[18]')
     self.assertEqual(n.name_only, b'mtex')
     self.assertTrue(n.is_pointer)
     self.assertFalse(n.is_method_pointer)
     self.assertEqual(n.array_size, 18)
Exemplo n.º 4
0
 def test_nested_array(self):
     n = dna.Name(b'pattern_corners[4][2]')
     self.assertEqual(n.name_full, b'pattern_corners[4][2]')
     self.assertEqual(n.name_only, b'pattern_corners')
     self.assertFalse(n.is_pointer)
     self.assertFalse(n.is_method_pointer)
     self.assertEqual(n.array_size, 8)
Exemplo n.º 5
0
 def test_simple_array(self):
     n = dna.Name(b'flame_smoke_color[3]')
     self.assertEqual(n.name_full, b'flame_smoke_color[3]')
     self.assertEqual(n.name_only, b'flame_smoke_color')
     self.assertFalse(n.is_pointer)
     self.assertFalse(n.is_method_pointer)
     self.assertEqual(n.array_size, 3)
Exemplo n.º 6
0
 def test_method_pointer(self):
     n = dna.Name(b'(*delta_cache)()')
     self.assertEqual(n.name_full, b'(*delta_cache)()')
     self.assertEqual(n.name_only, b'delta_cache')
     self.assertTrue(n.is_pointer)
     self.assertTrue(n.is_method_pointer)
     self.assertEqual(n.array_size, 1)
Exemplo n.º 7
0
 def test_pointer(self):
     n = dna.Name(b'*marker')
     self.assertEqual(n.name_full, b'*marker')
     self.assertEqual(n.name_only, b'marker')
     self.assertTrue(n.is_pointer)
     self.assertFalse(n.is_method_pointer)
     self.assertEqual(n.array_size, 1)
Exemplo n.º 8
0
    def test_autosize(self):
        with self.assertRaises(ValueError):
            # Maybe it would be better to just return 0 on empty structs.
            # They are actually used in Blendfiles (for example
            # AbcArchiveHandle), but when actually loading from a blendfile
            # the size property is explicitly set anyway. The situation we
            # test here is for manually created Struct instances that don't
            # have any fields.
            dna.Struct(b'EmptyStruct').size

        # Create AlebicObjectPath as it is actually used in Blender 2.79a
        s = dna.Struct(b'AlembicObjectPath')
        f_next = dna.Field(s, dna.Name(b'*next'), 8, 0)
        f_prev = dna.Field(s, dna.Name(b'*prev'), 8, 8)
        f_path = dna.Field(self.s_char, dna.Name(b'path[4096]'), 4096, 16)
        s.append_field(f_next)
        s.append_field(f_prev)
        s.append_field(f_path)

        self.assertEqual(s.size, 4112)
Exemplo n.º 9
0
 def test_repr(self):
     self.assertEqual(repr(dna.Name(b'Suzanne')), "Name(b'Suzanne')")
     self.assertEqual(repr(dna.Name(b'*marker')), "Name(b'*marker')")
     self.assertEqual(repr(dna.Name(b'(*delta_cache)()')),
                      "Name(b'(*delta_cache)()')")
     self.assertEqual(repr(dna.Name(b'flame_smoke_color[3]')),
                      "Name(b'flame_smoke_color[3]')")
     self.assertEqual(repr(dna.Name(b'pattern_corners[4][2]')),
                      "Name(b'pattern_corners[4][2]')")
     self.assertEqual(repr(dna.Name(b'*mtex[18]')), "Name(b'*mtex[18]')")
Exemplo n.º 10
0
 def test_as_reference(self):
     n = dna.Name(b'(*delta_cache)()')
     self.assertEqual(n.as_reference(None), b'delta_cache')
     self.assertEqual(n.as_reference(b''), b'delta_cache')
     self.assertEqual(n.as_reference(b'parent'), b'parent.delta_cache')