mirror of
https://github.com/cea-sec/miasm
synced 2026-06-21 13:48:18 +00:00
108 lines
3.3 KiB
Python
108 lines
3.3 KiB
Python
#
|
|
# Expression comparison regression tests #
|
|
#
|
|
from pdb import pm
|
|
from miasm.expression.expression import ExprInt, expr_is_unsigned_greater,\
|
|
expr_is_unsigned_greater_or_equal, expr_is_unsigned_lower,\
|
|
expr_is_unsigned_lower_or_equal, expr_is_signed_greater,\
|
|
expr_is_signed_greater_or_equal, expr_is_signed_lower, \
|
|
expr_is_signed_lower_or_equal, expr_is_equal, expr_is_not_equal
|
|
from miasm.expression.simplifications import expr_simp
|
|
|
|
int_0 = ExprInt(0, 32)
|
|
int_1 = ExprInt(1, 32)
|
|
int_m1 = ExprInt(-1, 32)
|
|
int_m2 = ExprInt(-2, 32)
|
|
|
|
b0 = ExprInt(0, 1)
|
|
b1 = ExprInt(1, 1)
|
|
|
|
tests = [
|
|
# unsigned
|
|
(b1, expr_is_unsigned_greater, int_1, int_0),
|
|
(b1, expr_is_unsigned_lower, int_0, int_1),
|
|
|
|
(b0, expr_is_unsigned_greater, int_0, int_1),
|
|
(b0, expr_is_unsigned_lower, int_1, int_0),
|
|
|
|
(b1, expr_is_unsigned_greater_or_equal, int_1, int_0),
|
|
(b1, expr_is_unsigned_lower_or_equal, int_0, int_1),
|
|
|
|
(b0, expr_is_unsigned_greater_or_equal, int_0, int_1),
|
|
(b0, expr_is_unsigned_lower_or_equal, int_1, int_0),
|
|
|
|
(b1, expr_is_unsigned_greater_or_equal, int_1, int_1),
|
|
(b1, expr_is_unsigned_lower_or_equal, int_1, int_1),
|
|
|
|
(b1, expr_is_unsigned_greater, int_m1, int_0),
|
|
(b1, expr_is_unsigned_lower, int_0, int_m1),
|
|
|
|
(b0, expr_is_unsigned_greater, int_0, int_m1),
|
|
(b0, expr_is_unsigned_lower, int_m1, int_0),
|
|
|
|
|
|
# signed
|
|
(b1, expr_is_signed_greater, int_1, int_0),
|
|
(b1, expr_is_signed_lower, int_0, int_1),
|
|
|
|
(b0, expr_is_signed_greater, int_0, int_1),
|
|
(b0, expr_is_signed_lower, int_1, int_0),
|
|
|
|
(b1, expr_is_signed_greater_or_equal, int_1, int_0),
|
|
(b1, expr_is_signed_lower_or_equal, int_0, int_1),
|
|
|
|
(b0, expr_is_signed_greater_or_equal, int_0, int_1),
|
|
(b0, expr_is_signed_lower_or_equal, int_1, int_0),
|
|
|
|
(b1, expr_is_signed_greater_or_equal, int_1, int_1),
|
|
(b1, expr_is_signed_lower_or_equal, int_1, int_1),
|
|
|
|
(b0, expr_is_signed_greater, int_m1, int_0),
|
|
(b0, expr_is_signed_lower, int_0, int_m1),
|
|
|
|
(b1, expr_is_signed_greater, int_0, int_m1),
|
|
(b1, expr_is_signed_lower, int_m1, int_0),
|
|
|
|
|
|
# greater lesser, neg
|
|
(b1, expr_is_signed_greater, int_1, int_m1),
|
|
(b1, expr_is_signed_lower, int_m1, int_1),
|
|
|
|
(b0, expr_is_signed_greater, int_m1, int_1),
|
|
(b0, expr_is_signed_lower, int_1, int_m1),
|
|
|
|
(b1, expr_is_signed_greater_or_equal, int_1, int_m1),
|
|
(b1, expr_is_signed_lower_or_equal, int_m1, int_1),
|
|
|
|
(b0, expr_is_signed_greater_or_equal, int_m1, int_1),
|
|
(b0, expr_is_signed_lower_or_equal, int_1, int_m1),
|
|
|
|
(b1, expr_is_signed_greater_or_equal, int_m1, int_m1),
|
|
(b1, expr_is_signed_lower_or_equal, int_m1, int_m1),
|
|
|
|
|
|
(b1, expr_is_signed_greater, int_m1, int_m2),
|
|
(b1, expr_is_signed_lower, int_m2, int_m1),
|
|
|
|
(b0, expr_is_signed_greater, int_m2, int_m1),
|
|
(b0, expr_is_signed_lower, int_m1, int_m2),
|
|
|
|
(b1, expr_is_signed_greater_or_equal, int_m1, int_m2),
|
|
(b1, expr_is_signed_lower_or_equal, int_m2, int_m1),
|
|
|
|
(b0, expr_is_signed_greater_or_equal, int_m2, int_m1),
|
|
(b0, expr_is_signed_lower_or_equal, int_m1, int_m2),
|
|
|
|
# eq/neq
|
|
(b1, expr_is_equal, int_1, int_1),
|
|
(b1, expr_is_not_equal, int_0, int_1),
|
|
|
|
(b0, expr_is_equal, int_1, int_0),
|
|
(b0, expr_is_not_equal, int_0, int_0),
|
|
|
|
|
|
]
|
|
|
|
for result, func, arg1, arg2 in tests:
|
|
assert result == expr_simp(func(arg1, arg2))
|