diff options
| author | Camille Mougey <camille.mougey@cea.fr> | 2014-12-09 18:01:17 +0100 |
|---|---|---|
| committer | Camille Mougey <camille.mougey@cea.fr> | 2014-12-09 18:01:17 +0100 |
| commit | e369e5a00f1e1f0e3254d626d327b94ebfa81318 (patch) | |
| tree | 7e05ebda39db30f3b218ede5a2c0d4946bd073b3 /test/expression/expression_helper.py | |
| parent | 2633d9387d5e43af9ae0491dc3de553b4aa82b48 (diff) | |
| download | miasm-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.py | 43 |
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)) + |