diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/analysis/data_flow.py | 8 | ||||
| -rw-r--r-- | test/analysis/depgraph.py | 5 | ||||
| -rw-r--r-- | test/ir/ir.py | 46 | ||||
| -rwxr-xr-x | test/ir/symbexec.py | 3 | ||||
| -rwxr-xr-x | test/test_all.py | 1 |
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") |