Files
2019-03-05 16:52:51 +01:00

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))