diff python/testir.py @ 277:046017431c6a

Started register allocator
author Windel Bouwman
date Thu, 26 Sep 2013 21:14:25 +0200
parents ea93e0a7a31e
children 2ccd57b1d78c
line wrap: on
line diff
--- a/python/testir.py	Mon Sep 16 21:51:17 2013 +0200
+++ b/python/testir.py	Thu Sep 26 21:14:25 2013 +0200
@@ -26,6 +26,29 @@
         #self.assertEqual(3, r)
 
 
+class PatternMatchTestCase(unittest.TestCase):
+    def testSimpleTree(self):
+        t = ir.Term('x')
+        pat = ir.Binop(ir.Const(2), '+', t)
+        res, mp = ir.match_tree(ir.Binop(ir.Const(2), '+', 3), pat)
+        self.assertTrue(res)
+        self.assertIn(t, mp)
+        self.assertEqual(3, mp[t])
+
+    def testSimpleTree2(self):
+        t = ir.Term('x')
+        t2 = ir.Term('y')
+        pat = ir.Binop(ir.Const(2), '+', ir.Binop(t, '-', t2))
+        res, mp = ir.match_tree(ir.Binop(ir.Const(2), '+', ir.Binop(2,'-',3)), pat)
+        self.assertTrue(res)
+        self.assertIn(t, mp)
+        self.assertEqual(2, mp[t])
+        self.assertIn(t2, mp)
+        self.assertEqual(3, mp[t2])
+        res, mp = ir.match_tree(ir.Const(2), pat)
+        self.assertFalse(res)
+
+
 class ConstantFolderTestCase(unittest.TestCase):
     def setUp(self):
         self.b = ir.Builder()