1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
import unittest
from tatsu.codegen import CodeGenerator, ModelRenderer
from tatsu.objectmodel import Node
class Generator(CodeGenerator):
def __init__(self):
super().__init__()
def _find_renderer_class(self, node):
name = node.__class__.__name__
return getattr(self, name, None)
class Super(ModelRenderer):
template = 'OK {sub}'
class Sub(ModelRenderer):
template = 'and OK too'
class Sub(Node):
pass
class Super(Node):
def __init__(self, ctx):
super().__init__(ctx=ctx)
self.sub = Sub(ctx=ctx)
class TestCodegen(unittest.TestCase):
def test_basic_codegen(self):
model = Super(self)
gen = Generator()
result = gen.render(model)
self.assertEqual('OK and OK too', result)
def suite():
return unittest.TestLoader().loadTestsFromTestCase(TestCodegen)
|