def test_types_module( self ):
        type_registry_registry = builtin_type_registry_registry()
        used_modules1, typedefs1, registry1 = load_types_file(
            self.meta_type_registry, type_registry_registry, self.make_fpath('test_module1.types'))

        self.assertTrue(registry1.has_name('some_int'))
        self.assertEqual(tInt, registry1.get_name('some_int'))

        self.assertTrue(registry1.has_name('object'))
        object_t = registry1.get_name('object')

        self.assertTrue(registry1.has_name('simple_class'))
        simple_class = registry1.get_name('simple_class')
        self.assertEqual(TClass(object_t, 'simple_2', TRecord([])), simple_class)

        self.assertTrue(registry1.has_name('text_object'))
        self.assertEqual(TClass(object_t, 'text_2', TRecord(base=simple_class, fields=[Field('text', tString)])),
                         registry1.get_name('text_object'))

        self.assertEqual([], used_modules1)

        type_registry_registry.register('test_module1', registry1)

        used_modules2, typedefs2, registry2 = load_types_file(
            self.meta_type_registry, type_registry_registry, self.make_fpath('test_module2.types'))
示例#2
0
def test_yacc( fpaths ):
    type_registry_registry = builtin_type_registry_registry()
    for fpath in fpaths:
        print('%s:' % fpath)
        dir, fname = os.path.split(fpath)
        module_name = os.path.splitext(fname)[0]
        with open(fpath) as f:
            input = f.read()
        print('parsing:')
        used_modules, typedefs, type_registry = parse_type_module(
            make_meta_type_registry(), type_registry_registry, fpath, input, debug=True)
        print('used modules:', used_modules)
        print('typedefs:', typedefs)
        for name, t in type_registry.items():
            print('type %s: %s' % (name, t))
        if typedefs:
            pprint(TList(tTypeDef), typedefs)
        type_registry_registry.register(module_name, type_registry)