view test/test_burm.py @ 389:2ec730e45ea1

Added check for recursive struct
author Windel Bouwman
date Fri, 16 May 2014 12:29:31 +0200
parents 8c569fbe60e4
children
line wrap: on
line source

import unittest
import io
import argparse

from tree import Tree
import pyburg


class testBURG(unittest.TestCase):
    def testSample4(self):
        """ Test sample4 burg system """
        # Generate matcher from spec:
        buf = io.StringIO()
        args = argparse.Namespace(source=open('sample4.brg'), output=buf)
        pyburg.main(args)

        # Execute generated script into global scope:
        exec(buf.getvalue(), globals())

        # Sample tree:
        t = Tree('ASGNI',
             Tree('ADDRLP'),
             Tree('ADDI',
                  Tree('CVCI', Tree('INDIRC', Tree('ADDRLP'))),
                  Tree('CNSTI')
                 )
            )

        # Subclass generated matcher:
        class MyMatcher(Matcher):
            def __init__(self):
                super().__init__()
                self.trace = []

            def tr(self, r):
                self.trace.append(r)

        # Match tree:
        mm = MyMatcher()
        mm.gen(t)
        self.assertSequenceEqual([8,8,4,11,9,3,1], mm.trace)

if __name__ == '__main__':
    unittest.main()