about summary refs log tree commit diff stats
path: root/test/expression/expression_helper.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2015-02-10 11:17:41 +0100
committerserpilliere <serpilliere@users.noreply.github.com>2015-02-10 11:17:41 +0100
commit3884615ff5555f41c45f8811946a13d2eb6911f9 (patch)
tree029b04b802c2cfc200216a683879a5afa2f51d54 /test/expression/expression_helper.py
parent4070252c4889800dad164d1962edea741e5b3b3b (diff)
parent388b74c92f518584e0351af894588d90a48624ce (diff)
downloadmiasm-3884615ff5555f41c45f8811946a13d2eb6911f9.tar.gz
miasm-3884615ff5555f41c45f8811946a13d2eb6911f9.zip
Merge pull request #52 from commial/ida-symbol_exec
Ida symbol exec
Diffstat (limited to 'test/expression/expression_helper.py')
-rw-r--r--test/expression/expression_helper.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/expression/expression_helper.py b/test/expression/expression_helper.py
index 3ff6f5da..514a9a51 100644
--- a/test/expression/expression_helper.py
+++ b/test/expression/expression_helper.py
@@ -30,11 +30,55 @@ class TestExpressionExpressionHelper(unittest.TestCase):
 
         # 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)
 
+        # Test prefix
+        vi = Variables_Identifier(exprf, var_prefix="prefix_v")
+
+        ## 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)
+
+        # Test an identify on an expression already containing identifier
+        vi = Variables_Identifier(exprf)
+        vi2 = Variables_Identifier(vi.equation)
+
+        ## Test the result
+        new_expr = vi2.equation
+        ### Force replace in the variable dependency order
+        for var_id, var_value in reversed(vi2.vars.items()):
+            new_expr = new_expr.replace_expr({var_id: var_value})
+        self.assertEqual(vi.equation, new_expr)
+
+        ## Corner case: each sub var depends on itself
+        mem1 = m2_expr.ExprMem(ebx, size=32)
+        mem2 = m2_expr.ExprMem(mem1, size=32)
+        cst2 = m2_expr.ExprInt32(-1)
+        expr_mini = ((eax ^ mem2 ^ cst2) & (mem2 ^ (eax + mem2)))[31:32]
+
+        ## Build
+        vi = Variables_Identifier(expr_mini)
+        vi2 = Variables_Identifier(vi.equation)
+
+        ## Test the result
+        new_expr = vi2.equation
+        ### Force replace in the variable dependency order
+        for var_id, var_value in reversed(vi2.vars.items()):
+            new_expr = new_expr.replace_expr({var_id: var_value})
+        self.assertEqual(vi.equation, new_expr)
+
+
+
 if __name__ == '__main__':
     testcase = TestExpressionExpressionHelper
     testsuite = unittest.TestLoader().loadTestsFromTestCase(testcase)