Mercurial > lcfOS
diff python/testc3.py @ 205:d77cb5962cc5
Added some handcoded arm code generation
author | Windel Bouwman |
---|---|
date | Sun, 23 Jun 2013 18:23:18 +0200 |
parents | de3a68f677a5 |
children | 003c8a976fff |
line wrap: on
line diff
--- a/python/testc3.py Fri Jun 21 15:01:08 2013 +0200 +++ b/python/testc3.py Sun Jun 23 18:23:18 2013 +0200 @@ -56,28 +56,6 @@ """ -testsrc2 = """ -package test2; - -function void tst() -{ - var int a, b; - a = 2 * 33 - 12; - b = a * 2 + 13; - a = b + a; - if (a > b and b == 3) - { - var int x = a; - x = b * 2 - a; - a = x*x; - } - else - { - a = b + a; - } -} - -""" def c3compile(src, diag): # Structures: @@ -101,6 +79,11 @@ c3compile(testsrc, diag) class testLexer(unittest.TestCase): + def testUnexpectedCharacter(self): + snippet = """ var s \u6c34 """ + with self.assertRaises(ppci.CompilerError): + list(c3.lexer.tokenize(snippet)) + def testBlockComment(self): snippet = """ /* Demo */ @@ -108,6 +91,7 @@ """ toks = ['var', 'ID', 'ID', '=', 'NUMBER', ';', 'END'] self.assertSequenceEqual([tok.typ for tok in c3.lexer.tokenize(snippet)], toks) + def testBlockCommentMultiLine(self): snippet = """ /* Demo @@ -138,8 +122,8 @@ self.diag.clear() ir = self.builder.build(snippet) assert len(self.diag.diags) == 2 - assert self.diag.diags[0].loc.row == 5 - assert self.diag.diags[1].loc.row == 6 + self.assertEqual(5, self.diag.diags[0].loc.row) + self.assertEqual(6, self.diag.diags[1].loc.row) def testExpressions(self): snippet = """ @@ -161,17 +145,20 @@ self.assertEqual(self.diag.diags[1].loc.row, 9) self.assertEqual(self.diag.diags[2].loc.row, 10) self.assertFalse(ircode) + def testEmpty(self): snippet = """ package A """ ircode = self.builder.build(snippet) self.assertFalse(ircode) + def testEmpty2(self): snippet = "" self.diag.clear() ircode = self.builder.build(snippet) self.assertFalse(ircode) + def testRedefine(self): snippet = """ package test; @@ -184,6 +171,7 @@ self.assertFalse(ircode) self.assertEqual(len(self.diag.diags), 1) self.assertEqual(self.diag.diags[0].loc.row, 5) + def testWhile(self): snippet = """ package tstwhile; @@ -196,6 +184,14 @@ i = i + 3; a = a + i; } + + while(true) + { + } + + while(false) + { + } } """ ircode = self.builder.build(snippet) @@ -228,11 +224,34 @@ if not ircode: self.diag.printErrors(snippet) self.assertTrue(ircode) + def test2(self): - # testsrc2 is valid code: - self.diag.clear() - ir = self.builder.build(testsrc2) - self.assertTrue(ir) + # testsrc2 is valid code: + testsrc2 = """ + package test2; + + function void tst() + { + var int a, b; + a = 2 * 33 - 12; + b = a * 2 + 13; + a = b + a; + if (a > b and b == 3) + { + var int x = a; + x = b * 2 - a; + a = x*x; + } + else + { + a = b + a; + } + } + + """ + self.diag.clear() + ir = self.builder.build(testsrc2) + self.assertTrue(ir) if __name__ == '__main__': do()