about summary refs log tree commit diff stats
path: root/test/expression/expression_helper.py
diff options
context:
space:
mode:
authorCamille Mougey <camille.mougey@cea.fr>2014-12-09 18:01:17 +0100
committerCamille Mougey <camille.mougey@cea.fr>2014-12-09 18:01:17 +0100
commite369e5a00f1e1f0e3254d626d327b94ebfa81318 (patch)
tree7e05ebda39db30f3b218ede5a2c0d4946bd073b3 /test/expression/expression_helper.py
parent2633d9387d5e43af9ae0491dc3de553b4aa82b48 (diff)
downloadmiasm-e369e5a00f1e1f0e3254d626d327b94ebfa81318.tar.gz
miasm-e369e5a00f1e1f0e3254d626d327b94ebfa81318.zip
Test: Add a regression test for Variables_Identifier
Diffstat (limited to 'test/expression/expression_helper.py')
-rw-r--r--test/expression/expression_helper.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/expression/expression_helper.py b/test/expression/expression_helper.py
new file mode 100644
index 00000000..3ff6f5da
--- /dev/null
+++ b/test/expression/expression_helper.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import unittest
+
+
+class TestExpressionExpressionHelper(unittest.TestCase):
+
+    def test_Variables_Identifier(self):
+        import miasm2.expression.expression as m2_expr
+        from miasm2.expression.expression_helper import Variables_Identifier
+
+        # Build a complex expression
+        cst = m2_expr.ExprInt16(0x100)
+        eax = m2_expr.ExprId("EAX")
+        ebx = m2_expr.ExprId("EBX")
+        ax = eax[0:16]
+        expr = eax + ebx
+        expr = m2_expr.ExprCompose([(ax, 0, 16), (expr[16:32], 16, 32)])
+        expr2 = m2_expr.ExprMem((eax + ebx) ^ (eax), size=16)
+        expr2 = expr2 | ax | expr2 | cst
+        exprf = expr - expr + m2_expr.ExprCompose([(expr2, 0, 16),
+                                                   (cst, 16, 32)])
+
+        # Identify variables
+        vi = Variables_Identifier(exprf)
+
+        # Use __str__
+        print vi
+
+        # Test the result
+        new_expr = vi.equation
+        ## Force replace in the variable dependency order
+        for var_id, var_value in reversed(vi.vars.items()):
+            new_expr = new_expr.replace_expr({var_id: var_value})
+        self.assertEqual(exprf, new_expr)
+
+if __name__ == '__main__':
+    testcase = TestExpressionExpressionHelper
+    testsuite = unittest.TestLoader().loadTestsFromTestCase(testcase)
+    report = unittest.TextTestRunner(verbosity=2).run(testsuite)
+    exit(len(report.errors + report.failures))
+