1import unittest
2import textwrap
3import antlr3
4import testbase
5
6class T(testbase.ANTLRTest):
7    def testRewrite(self):
8        self.compileGrammar()
9
10        input = textwrap.dedent(
11            '''\
12            method foo() {
13              i = 3;
14              k = i;
15              i = k*4;
16            }
17
18            method bar() {
19              j = i*2;
20            }
21            ''')
22
23        cStream = antlr3.StringStream(input)
24        lexer = self.getLexer(cStream)
25        tStream = antlr3.TokenRewriteStream(lexer)
26        parser = self.getParser(tStream)
27        parser.program()
28
29        expectedOutput = textwrap.dedent('''\
30        public class Wrapper {
31        public void foo() {
32        int k;
33        int i;
34          i = 3;
35          k = i;
36          i = k*4;
37        }
38
39        public void bar() {
40        int j;
41          j = i*2;
42        }
43        }
44
45        ''')
46
47        self.failUnlessEqual(
48            str(tStream),
49            expectedOutput
50            )
51
52
53if __name__ == '__main__':
54    unittest.main()
55
56