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