xref: /aosp_15_r20/external/antlr/runtime/Python3/unittests/testrecognizers.py (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotimport sys
2*16467b97STreehugger Robotimport unittest
3*16467b97STreehugger Robot
4*16467b97STreehugger Robotimport antlr3
5*16467b97STreehugger Robot
6*16467b97STreehugger Robot
7*16467b97STreehugger Robotclass TestBaseRecognizer(unittest.TestCase):
8*16467b97STreehugger Robot    """Tests for BaseRecognizer class"""
9*16467b97STreehugger Robot
10*16467b97STreehugger Robot    def testGetRuleInvocationStack(self):
11*16467b97STreehugger Robot        """BaseRecognizer._getRuleInvocationStack()"""
12*16467b97STreehugger Robot
13*16467b97STreehugger Robot        rules = antlr3.BaseRecognizer._getRuleInvocationStack(__name__)
14*16467b97STreehugger Robot        self.assertEqual(
15*16467b97STreehugger Robot            rules,
16*16467b97STreehugger Robot            ['testGetRuleInvocationStack']
17*16467b97STreehugger Robot            )
18*16467b97STreehugger Robot
19*16467b97STreehugger Robot
20*16467b97STreehugger Robotclass TestTokenSource(unittest.TestCase):
21*16467b97STreehugger Robot    """Testcase to the antlr3.TokenSource class"""
22*16467b97STreehugger Robot
23*16467b97STreehugger Robot
24*16467b97STreehugger Robot    def testIteratorInterface(self):
25*16467b97STreehugger Robot        """TokenSource.next()"""
26*16467b97STreehugger Robot
27*16467b97STreehugger Robot        class TrivialToken(object):
28*16467b97STreehugger Robot            def __init__(self, type):
29*16467b97STreehugger Robot                self.type = type
30*16467b97STreehugger Robot
31*16467b97STreehugger Robot        class TestSource(antlr3.TokenSource):
32*16467b97STreehugger Robot            def __init__(self):
33*16467b97STreehugger Robot                self.tokens = [
34*16467b97STreehugger Robot                    TrivialToken(1),
35*16467b97STreehugger Robot                    TrivialToken(2),
36*16467b97STreehugger Robot                    TrivialToken(3),
37*16467b97STreehugger Robot                    TrivialToken(4),
38*16467b97STreehugger Robot                    TrivialToken(antlr3.EOF),
39*16467b97STreehugger Robot                    ]
40*16467b97STreehugger Robot
41*16467b97STreehugger Robot            def nextToken(self):
42*16467b97STreehugger Robot                return self.tokens.pop(0)
43*16467b97STreehugger Robot
44*16467b97STreehugger Robot
45*16467b97STreehugger Robot        src = TestSource()
46*16467b97STreehugger Robot        tokens = []
47*16467b97STreehugger Robot        for token in src:
48*16467b97STreehugger Robot            tokens.append(token.type)
49*16467b97STreehugger Robot
50*16467b97STreehugger Robot        self.assertEqual(tokens, [1, 2, 3, 4])
51*16467b97STreehugger Robot
52*16467b97STreehugger Robot
53*16467b97STreehugger Robot
54*16467b97STreehugger Robotclass TestLexer(unittest.TestCase):
55*16467b97STreehugger Robot
56*16467b97STreehugger Robot    def testInit(self):
57*16467b97STreehugger Robot        """Lexer.__init__()"""
58*16467b97STreehugger Robot
59*16467b97STreehugger Robot        class TLexer(antlr3.Lexer):
60*16467b97STreehugger Robot            api_version = 'HEAD'
61*16467b97STreehugger Robot
62*16467b97STreehugger Robot        stream = antlr3.StringStream('foo')
63*16467b97STreehugger Robot        TLexer(stream)
64*16467b97STreehugger Robot
65*16467b97STreehugger Robot
66*16467b97STreehugger Robotif __name__ == "__main__":
67*16467b97STreehugger Robot    unittest.main(testRunner=unittest.TextTestRunner(verbosity=2))
68