about summary refs log tree commit diff stats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/analysis/data_flow.py8
-rw-r--r--test/analysis/depgraph.py5
-rw-r--r--test/ir/ir.py46
-rwxr-xr-xtest/ir/symbexec.py3
-rwxr-xr-xtest/test_all.py1
5 files changed, 55 insertions, 8 deletions
diff --git a/test/analysis/data_flow.py b/test/analysis/data_flow.py
index 1784f87f..2c24773a 100644
--- a/test/analysis/data_flow.py
+++ b/test/analysis/data_flow.py
@@ -32,10 +32,11 @@ LBL4 = AsmLabel("lbl4")
 LBL5 = AsmLabel("lbl5")
 LBL6 = AsmLabel("lbl6")
 
+IRDst = ExprId('IRDst', 32)
+dummy = ExprId('dummy', 32)
 
 
 def gen_irblock(label, exprs_list):
-    lines = [None for _ in xrange(len(exprs_list))]
     irs = []
     for exprs in exprs_list:
         if isinstance(exprs, AssignBlock):
@@ -43,7 +44,8 @@ def gen_irblock(label, exprs_list):
         else:
             irs.append(AssignBlock(exprs))
 
-    irbl = IRBlock(label, irs, lines)
+    irs.append(AssignBlock({IRDst:dummy}))
+    irbl = IRBlock(label, irs)
     return irbl
 
 
@@ -67,7 +69,7 @@ class IRATest(ira):
     def __init__(self, symbol_pool=None):
         arch = Arch()
         super(IRATest, self).__init__(arch, 32, symbol_pool)
-        self.IRDst = pc
+        self.IRDst = IRDst
         self.ret_reg = r
 
     def get_out_regs(self, _):
diff --git a/test/analysis/depgraph.py b/test/analysis/depgraph.py
index 005ab32c..63313861 100644
--- a/test/analysis/depgraph.py
+++ b/test/analysis/depgraph.py
@@ -50,10 +50,9 @@ LBL5 = AsmLabel("lbl5")
 LBL6 = AsmLabel("lbl6")
 
 def gen_irblock(label, exprs_list):
-    """ Returns an IRBlock with empty lines.
+    """ Returns an IRBlock.
     Used only for tests purpose
     """
-    lines = [None for _ in xrange(len(exprs_list))]
     irs = []
     for exprs in exprs_list:
         if isinstance(exprs, AssignBlock):
@@ -61,7 +60,7 @@ def gen_irblock(label, exprs_list):
         else:
             irs.append(AssignBlock(exprs))
 
-    irbl = IRBlock(label, irs, lines)
+    irbl = IRBlock(label, irs)
     return irbl
 
 
diff --git a/test/ir/ir.py b/test/ir/ir.py
new file mode 100644
index 00000000..5c428a94
--- /dev/null
+++ b/test/ir/ir.py
@@ -0,0 +1,46 @@
+from miasm2.expression.expression import *
+from miasm2.ir.ir import AssignBlock
+from miasm2.expression.simplifications import expr_simp
+
+id_a = ExprId("a")
+id_b = ExprId("b")
+int0 = ExprInt(0, id_a.size)
+
+# Test AssignBlock
+## Constructors
+assignblk1 = AssignBlock([ExprAff(id_a, id_b)])
+assignblk2 = AssignBlock({id_a: id_b})
+
+## Equality
+assignblk1_bis = AssignBlock([ExprAff(id_a, id_b)])
+assert assignblk1 == assignblk1_bis
+assert assignblk1 == assignblk2
+
+## Immutability
+try:
+    assignblk1[id_a] = id_a
+except RuntimeError:
+    pass
+else:
+    raise RuntimeError("An error was expected")
+try:
+    del assignblk1[id_a]
+except RuntimeError:
+    pass
+else:
+    raise RuntimeError("An error was expected")
+
+## Basic APIs
+assert assignblk1.get_r() == set([id_b])
+assert assignblk1.get_w() == set([id_a])
+assert assignblk1.get_rw() == {id_a: set([id_b])}
+assert assignblk1.keys() == [id_a]
+assert dict(assignblk1) == {id_a: id_b}
+assert assignblk1[id_a] == id_b
+
+## Simplify
+assignblk3 = AssignBlock({id_a: id_b - id_b})
+assert assignblk3[id_a] != int0
+assignblk4 = assignblk3.simplify(expr_simp)
+assert assignblk3[id_a] != int0
+assert assignblk4[id_a] == int0
diff --git a/test/ir/symbexec.py b/test/ir/symbexec.py
index bd28c4ee..e2bd411f 100755
--- a/test/ir/symbexec.py
+++ b/test/ir/symbexec.py
@@ -63,8 +63,7 @@ class TestSymbExec(unittest.TestCase):
         # apply_change / eval_ir / apply_expr
 
         ## x = a (with a = 0x0)
-        assignblk = AssignBlock()
-        assignblk[id_x] = id_a
+        assignblk = AssignBlock({id_x:id_a})
         e.eval_ir(assignblk)
         self.assertEqual(e.apply_expr(id_x), addr0)
 
diff --git a/test/test_all.py b/test/test_all.py
index 48ce76ba..d2c3e5e2 100755
--- a/test/test_all.py
+++ b/test/test_all.py
@@ -245,6 +245,7 @@ for script in ["modint.py",
 
 ## IR
 for script in ["symbexec.py",
+               "ir.py",
                ]:
     testset += RegressionTest([script], base_dir="ir")