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()