diff --git a/test/regression/arithmetic.ref b/test/regression/arithmetic.ref new file mode 100644 index 0000000..7785a3a --- /dev/null +++ b/test/regression/arithmetic.ref @@ -0,0 +1,105 @@ + + + .K + + + TestArithmetic + + + .IfaceCellMap + + + + + TestArithmetic + + + .Map + + + .List + + + + + constructor + + + public + + + .List + + + .List + + + .List + + + .List + + + uint8 i8_1 = 2 ; uint8 i8_2 = 2 ; uint8 i32_1 = 2 ; uint8 i32_2 = 2 ; uint8 i112_1 = 2 ; uint8 i112_2 = 2 ; uint8 i256_1 = 2 ; uint8 i256_2 = 2 ; require ( i8_1 + i8_2 == 4 , "" , .TypedVals ) ; require ( i32_1 + i32_2 == 4 , "" , .TypedVals ) ; require ( i112_1 + i112_2 == 4 , "" , .TypedVals ) ; require ( i256_1 + i256_2 == 4 , "" , .TypedVals ) ; require ( i8_1 + 2 == 4 , "" , .TypedVals ) ; require ( 2 + i8_2 == 4 , "" , .TypedVals ) ; require ( 2 + 2 == 4 , "" , .TypedVals ) ; require ( i8_1 - i8_2 == 0 , "" , .TypedVals ) ; require ( i32_1 - i32_2 == 0 , "" , .TypedVals ) ; require ( i112_1 - i112_2 == 0 , "" , .TypedVals ) ; require ( i256_1 - i256_2 == 0 , "" , .TypedVals ) ; require ( i8_1 - 2 == 0 , "" , .TypedVals ) ; require ( 2 - i8_2 == 0 , "" , .TypedVals ) ; require ( 2 - 2 == 0 , "" , .TypedVals ) ; require ( i8_1 * i8_2 == 4 , "" , .TypedVals ) ; require ( i32_1 * i32_2 == 4 , "" , .TypedVals ) ; require ( i112_1 * i112_2 == 4 , "" , .TypedVals ) ; require ( i256_1 * i256_2 == 4 , "" , .TypedVals ) ; require ( i8_1 * 2 == 4 , "" , .TypedVals ) ; require ( 2 * i8_2 == 4 , "" , .TypedVals ) ; require ( 2 * 2 == 4 , "" , .TypedVals ) ; require ( i8_1 / i8_2 == 1 , "" , .TypedVals ) ; require ( i32_1 / i32_2 == 1 , "" , .TypedVals ) ; require ( i112_1 / i112_2 == 1 , "" , .TypedVals ) ; require ( i256_1 / i256_2 == 1 , "" , .TypedVals ) ; require ( i8_1 / 2 == 1 , "" , .TypedVals ) ; require ( 2 / i8_2 == 1 , "" , .TypedVals ) ; require ( 2 / 2 == 1 , "" , .TypedVals ) ; require ( i8_1 == i8_2 , "" , .TypedVals ) ; require ( i32_1 == i32_2 , "" , .TypedVals ) ; require ( i112_1 == i112_2 , "" , .TypedVals ) ; require ( i256_1 == i256_2 , "" , .TypedVals ) ; require ( 2 == i8_2 , "" , .TypedVals ) ; require ( 2 == 2 , "" , .TypedVals ) ; require ( i8_1 <= i8_2 , "" , .TypedVals ) ; require ( i32_1 <= i32_2 , "" , .TypedVals ) ; require ( i112_1 <= i112_2 , "" , .TypedVals ) ; require ( i256_1 <= i256_2 , "" , .TypedVals ) ; require ( i8_1 <= 2 , "" , .TypedVals ) ; require ( 2 <= i8_2 , "" , .TypedVals ) ; require ( 2 <= 2 , "" , .TypedVals ) ; require ( i8_1 >= i8_2 , "" , .TypedVals ) ; require ( i32_1 >= i32_2 , "" , .TypedVals ) ; require ( i112_1 >= i112_2 , "" , .TypedVals ) ; require ( i256_1 >= i256_2 , "" , .TypedVals ) ; require ( i8_1 >= 2 , "" , .TypedVals ) ; require ( 2 >= i8_2 , "" , .TypedVals ) ; require ( 2 >= 2 , "" , .TypedVals ) ; i8_2 = 4 ; i32_2 = 4 ; i112_2 = 4 ; i256_2 = 4 ; require ( i8_1 ** i8_2 == 16 , "" , .TypedVals ) ; require ( i32_1 ** i32_2 == 16 , "" , .TypedVals ) ; require ( i112_1 ** i112_2 == 16 , "" , .TypedVals ) ; require ( i256_1 ** i256_2 == 16 , "" , .TypedVals ) ; require ( i8_1 ** 4 == 16 , "" , .TypedVals ) ; require ( 2 ** i8_2 == 16 , "" , .TypedVals ) ; require ( 2 ** 4 == 16 , "" , .TypedVals ) ; require ( i8_1 < i8_2 , "" , .TypedVals ) ; require ( i32_1 < i32_2 , "" , .TypedVals ) ; require ( i112_1 < i112_2 , "" , .TypedVals ) ; require ( i256_1 < i256_2 , "" , .TypedVals ) ; require ( i8_1 < 4 , "" , .TypedVals ) ; require ( 2 < i8_2 , "" , .TypedVals ) ; require ( 2 < 4 , "" , .TypedVals ) ; require ( i8_1 != i8_2 , "" , .TypedVals ) ; require ( i32_1 != i32_2 , "" , .TypedVals ) ; require ( i112_1 != i112_2 , "" , .TypedVals ) ; require ( i256_1 != i256_2 , "" , .TypedVals ) ; require ( i8_1 != 4 , "" , .TypedVals ) ; require ( 2 != i8_2 , "" , .TypedVals ) ; require ( 2 != 4 , "" , .TypedVals ) ; require ( i8_2 > i8_1 , "" , .TypedVals ) ; require ( i32_2 > i32_1 , "" , .TypedVals ) ; require ( i112_2 > i112_1 , "" , .TypedVals ) ; require ( i256_2 > i256_1 , "" , .TypedVals ) ; require ( i8_2 > 2 , "" , .TypedVals ) ; require ( 4 > i8_1 , "" , .TypedVals ) ; require ( 4 > 2 , "" , .TypedVals ) ; .Statements + + + + + + + + 1p160 + + + 0p256 + + + 1p160 + + + 2p160 + + + TestArithmetic + + + i8_1 |-> var ( 0 , uint8 ) + i8_2 |-> var ( 1 , uint8 ) + i32_1 |-> var ( 2 , uint8 ) + i32_2 |-> var ( 3 , uint8 ) + i112_1 |-> var ( 4 , uint8 ) + i112_2 |-> var ( 5 , uint8 ) + i256_1 |-> var ( 6 , uint8 ) + i256_2 |-> var ( 7 , uint8 ) + + + 0 |-> 2p8 + 1 |-> 4p8 + 2 |-> 2p8 + 3 |-> 4p8 + 4 |-> 2p8 + 5 |-> 4p8 + 6 |-> 2p8 + 7 |-> 4p8 + + + .List + + + + + 2p160 + + + TestArithmetic + + + .Map + + + + + 3p160 + + + diff --git a/test/regression/arithmetic.sol b/test/regression/arithmetic.sol new file mode 100644 index 0000000..c12c325 --- /dev/null +++ b/test/regression/arithmetic.sol @@ -0,0 +1,107 @@ +pragma solidity ^0.8.24; + +contract TestArithmetic { + + constructor() { + uint8 i8_1 = 2; + uint8 i8_2 = 2; + uint8 i32_1 = 2; + uint8 i32_2 = 2; + uint8 i112_1 = 2; + uint8 i112_2 = 2; + uint8 i256_1 = 2; + uint8 i256_2 = 2; + + require(i8_1 + i8_2 == 4, ""); + require(i32_1 + i32_2 == 4, ""); + require(i112_1 + i112_2 == 4, ""); + require(i256_1 + i256_2 == 4, ""); + require(i8_1 + 2 == 4, ""); + require(2 + i8_2 == 4, ""); + require(2 + 2 == 4, ""); + + require(i8_1 - i8_2 == 0, ""); + require(i32_1 - i32_2 == 0, ""); + require(i112_1 - i112_2 == 0, ""); + require(i256_1 - i256_2 == 0, ""); + require(i8_1 - 2 == 0, ""); + require(2 - i8_2 == 0, ""); + require(2 - 2 == 0, ""); + + require(i8_1 * i8_2 == 4, ""); + require(i32_1 * i32_2 == 4, ""); + require(i112_1 * i112_2 == 4, ""); + require(i256_1 * i256_2 == 4, ""); + require(i8_1 * 2 == 4, ""); + require(2 * i8_2 == 4, ""); + require(2 * 2 == 4, ""); + + require(i8_1 / i8_2 == 1, ""); + require(i32_1 / i32_2 == 1, ""); + require(i112_1 / i112_2 == 1, ""); + require(i256_1 / i256_2 == 1, ""); + require(i8_1 / 2 == 1, ""); + require(2 / i8_2 == 1, ""); + require(2 / 2 == 1, ""); + + require(i8_1 == i8_2, ""); + require(i32_1 == i32_2, ""); + require(i112_1 == i112_2, ""); + require(i256_1 == i256_2, ""); + require(2 == i8_2, ""); + require(2 == 2, ""); + + require(i8_1 <= i8_2, ""); + require(i32_1 <= i32_2, ""); + require(i112_1 <= i112_2, ""); + require(i256_1 <= i256_2, ""); + require(i8_1 <= 2, ""); + require(2 <= i8_2, ""); + require(2 <= 2, ""); + + require(i8_1 >= i8_2, ""); + require(i32_1 >= i32_2, ""); + require(i112_1 >= i112_2, ""); + require(i256_1 >= i256_2, ""); + require(i8_1 >= 2, ""); + require(2 >= i8_2, ""); + require(2 >= 2, ""); + + i8_2 = 4; + i32_2 = 4; + i112_2 = 4; + i256_2 = 4; + + require(i8_1 ** i8_2 == 16, ""); + require(i32_1 ** i32_2 == 16, ""); + require(i112_1 ** i112_2 == 16, ""); + require(i256_1 ** i256_2 == 16, ""); + require(i8_1 ** 4 == 16, ""); + require(2 ** i8_2 == 16, ""); + require(2 ** 4 == 16, ""); + + require(i8_1 < i8_2, ""); + require(i32_1 < i32_2, ""); + require(i112_1 < i112_2, ""); + require(i256_1 < i256_2, ""); + require(i8_1 < 4, ""); + require(2 < i8_2, ""); + require(2 < 4, ""); + + require(i8_1 != i8_2, ""); + require(i32_1 != i32_2, ""); + require(i112_1 != i112_2, ""); + require(i256_1 != i256_2, ""); + require(i8_1 != 4, ""); + require(2 != i8_2, ""); + require(2 != 4, ""); + + require(i8_2 > i8_1, ""); + require(i32_2 > i32_1, ""); + require(i112_2 > i112_1, ""); + require(i256_2 > i256_1, ""); + require(i8_2 > 2, ""); + require(4 > i8_1, ""); + require(4 > 2, ""); + } +} diff --git a/test/regression/arithmetic.txn b/test/regression/arithmetic.txn new file mode 100644 index 0000000..da756a5 --- /dev/null +++ b/test/regression/arithmetic.txn @@ -0,0 +1 @@ +create(1, 0, TestArithmetic, )