about summary refs log tree commit diff stats
path: root/test/expression/expression.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2020-03-10 16:35:51 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2020-03-29 00:08:03 +0100
commitbf9babdcd886d51666c04e4fc39a4b03e281974a (patch)
tree021484913b08e5c72366da78e6a6c5d68e31893f /test/expression/expression.py
parent83196a14885467a043666882db7d8120bb127b61 (diff)
downloadfocaccia-miasm-bf9babdcd886d51666c04e4fc39a4b03e281974a.tar.gz
focaccia-miasm-bf9babdcd886d51666c04e4fc39a4b03e281974a.zip
Add Expression visitor
Diffstat (limited to 'test/expression/expression.py')
-rw-r--r--test/expression/expression.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/expression/expression.py b/test/expression/expression.py
index 3597eae8..9b0c2807 100644
--- a/test/expression/expression.py
+++ b/test/expression/expression.py
@@ -17,6 +17,7 @@ assert big_cst.size == 0x1000
 # Possible values
 #- Common constants
 A = ExprId("A", 32)
+B = ExprId("B", 32)
 cond1 = ExprId("cond1", 1)
 cond2 = ExprId("cond2", 16)
 cst1 = ExprInt(1, 32)
@@ -71,3 +72,47 @@ for expr in [
 aff = ExprAssign(A[0:32], cst1)
 
 assert aff.dst == A and aff.src == cst1
+
+
+mem = ExprMem(A, 32)
+assert mem.get_r() == set([mem])
+assert mem.get_r(mem_read=True) == set([mem, A])
+
+C = A+B
+D = C + A
+
+assert A in A
+assert A in C
+assert B in C
+assert C in C
+
+assert A in D
+assert B in D
+assert C in D
+assert D in D
+
+assert C not in A
+assert C not in B
+
+assert D not in A
+assert D not in B
+assert D not in C
+
+
+assert cst1.get_r(cst_read=True) == set([cst1])
+mem1 = ExprMem(A, 32)
+mem2 = ExprMem(mem1 + B, 32)
+assert mem2.get_r() == set([mem2])
+
+assign1 = ExprAssign(A, cst1)
+assert assign1.get_r() == set([])
+
+assign2 = ExprAssign(mem1, D)
+assert assign2.get_r() == set([A, B])
+assert assign2.get_r(mem_read=True) == set([A, B])
+assert assign2.get_w() == set([mem1])
+
+assign3 = ExprAssign(mem1, mem2)
+assert assign3.get_r() == set([mem2])
+assert assign3.get_r(mem_read=True) == set([mem1, mem2, A, B])
+assert assign3.get_w() == set([mem1])