Beispiel #1
0
 def setUp(self):
     self.tempdir = tempfile.mkdtemp()
     self.generator = ObjectiveCGenerator(self.tempdir)
Beispiel #2
0
class TestObjectiveCGenerator(unittest.TestCase):
    def setUp(self):
        self.tempdir = tempfile.mkdtemp()
        self.generator = ObjectiveCGenerator(self.tempdir)

    def tearDown(self):
        shutil.rmtree(self.tempdir)

    def test_generate_enum(self):
        enum = Enum('Number', value_names=['ONE', 'TWO'])
        module = Module('test.module')
        module.add_definition(enum)
        module.link()

        header = self.generator._generate_header(enum)
        impl = self.generator._generate_impl(enum)
        assert header
        assert impl

    def test_generate_message(self):
        enum = Enum('Type')
        subtype = enum.create_value('SUBTYPE')

        base = Message('Base')
        base.create_field('type', enum, is_discriminator=True)

        msg = Message('Message', base=base, discriminator_value=subtype)
        msg.create_field('field', NativeType.BOOL)

        module = Module('test.module')
        module.add_definition(enum)
        module.add_definition(base)
        module.add_definition(msg)
        module.link()

        header = self.generator._generate_header(msg)
        impl = self.generator._generate_impl(msg)
        assert header
        assert impl

    def test_generate_interface(self):
        exc = Message('Exception', is_exception=True)

        iface = Interface('Interface', exc=exc)
        iface.create_method('method0', NativeType.INT32, [('arg', NativeType.INT32)])
        iface.create_method('method1', NativeType.STRING, [('name', NativeType.STRING)])

        module = Module('test.module')
        module.add_definition(exc)
        module.add_definition(iface)
        module.link()

        header = self.generator._generate_header(iface)
        impl = self.generator._generate_impl(iface)
        assert header
        assert impl

    def test_generate_package(self):
        msg = Message('Message')
        iface = Interface('Interface')
        module0 = Module('module0', definitions=[msg])
        module1 = Module('module1', definitions=[iface])

        package = Package('test', modules=[module0, module1])
        package.compile()

        code = self.generator._generate_package(package)
        assert code