コード例 #1
0
ファイル: test_ClassDef.py プロジェクト: markreidvfx/pyaaf
    def test_classdef(self):

        f = aaf.open()
        class_id = AUID.from_urn_smpte_ul("urn:smpte:ul:060e2b34.02060101.0d010101.01015900")
        parent_classdef = f.dictionary.lookup_classdef("InterchangeObject")
        sub_descriptor_classdef = aaf.define.ClassDef(f,
                                     class_id, parent_classdef, "SubDescriptor", False)

        f.dictionary.register_def(sub_descriptor_classdef)

        ame_id = AUID.from_urn_smpte_ul("urn:smpte:ul:060e2b34.01040101.0e040301.01000000")
        typedef_pairs = [('did', 'UInt8'),('sdid', 'UInt8')]
        ame_typdef = aaf.define.TypeDefRecord(f, typedef_pairs, ame_id, 'AvidManifestElement')
        f.dictionary.register_def(ame_typdef)

        ama_id = AUID.from_urn_smpte_ul("urn:smpte:ul:060e2b34.01040101.0e040402.01000000")
        ama_typdef = aaf.define.TypeDefVariableArray(f, ame_typdef, ama_id, "AvidManifestArray")
        f.dictionary.register_def(ama_typdef)

        class_id = AUID.from_urn_smpte_ul("urn:smpte:ul:060e2b34.02060101.0d010101.01015c00")
        parent_classdef = f.dictionary.lookup_classdef("DataEssenceDescriptor")
        ancd_classdef = aaf.define.ClassDef(f,
                                    class_id, parent_classdef, "ANCDataDescriptor", True)

        prop_id = AUID.from_urn_smpte_ul("urn:smpte:ul:060e2b34.01010101.0e040101.01010105")
        ancd_classdef.register_optional_propertydef(ama_typdef, prop_id, 'ManifestArray')

        f.dictionary.register_def(ancd_classdef)


        desc = f.create.ANCDataDescriptor()
        self.assertEqual(desc.classdef().name, 'ANCDataDescriptor')

        desc['Length'].value = 10
        self.assertEqual(desc['Length'].value, 10)

        manifest = [{'did':0, 'sdid':1}, {'did':1, 'sdid':2}, {'did':3, 'sdid':4}]
        desc['ManifestArray'].value = manifest
        self.assertEqual(list(desc['ManifestArray'].value), manifest)

        self.assertRaises(RuntimeError, f.create.SubDescriptor)

        f.save("test.xml")