Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions src/kontrol/kdist/assert.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,13 +241,21 @@ Capturing cheat code calls
rule [cheatcode.call.assertApproxEqRel]:
<k> #cheatcode_call SELECTOR ARGS => #assert_approx_eq_rel #asWord(#range(ARGS, 0, 32)) #asWord(#range(ARGS, 32, 32)) #asWord(#range(ARGS, 64, 32)) String2Bytes("assertion failed") ... </k>
requires SELECTOR ==Int selector ( "assertApproxEqRel(uint256,uint256,uint256)" )
orBool SELECTOR ==Int selector ( "assertApproxEqRel(int256,int256,uint256)" )
[preserves-definedness]

rule [cheatcode.call.assertApproxEqRel.signed]:
<k> #cheatcode_call SELECTOR ARGS => #assert_approx_eq_rel Bytes2Int(#range(ARGS, 0, 32), BE, Signed) Bytes2Int(#range(ARGS, 32, 32), BE, Signed) #asWord(#range(ARGS, 64, 32)) String2Bytes("assertion failed") ... </k>
requires SELECTOR ==Int selector ( "assertApproxEqRel(int256,int256,uint256)" )
[preserves-definedness]

rule [cheatcode.call.assertApproxEqRel.err]:
<k> #cheatcode_call SELECTOR ARGS => #assert_approx_eq_rel #asWord(#range(ARGS, 0, 32)) #asWord(#range(ARGS, 32, 32)) #asWord(#range(ARGS, 64, 32)) #range(ARGS, 128, #asWord(#range(ARGS, 96, 32))) ... </k>
requires SELECTOR ==Int selector ( "assertApproxEqRel(uint256,uint256,uint256,string)" )
orBool SELECTOR ==Int selector ( "assertApproxEqRel(int256,int256,uint256,string)" )
[preserves-definedness]

rule [cheatcode.call.assertApproxEqRel.signed.err]:
<k> #cheatcode_call SELECTOR ARGS => #assert_approx_eq_rel Bytes2Int(#range(ARGS, 0, 32), BE, Signed) Bytes2Int(#range(ARGS, 32, 32), BE, Signed) #asWord(#range(ARGS, 64, 32)) #range(ARGS, 128, #asWord(#range(ARGS, 96, 32))) ... </k>
requires SELECTOR ==Int selector ( "assertApproxEqRel(int256,int256,uint256,string)" )
[preserves-definedness]
```

Expand Down Expand Up @@ -330,4 +338,4 @@ Function selectors

```k
endmodule
```
```
3 changes: 2 additions & 1 deletion src/tests/integration/test-data/end-to-end-prove-all
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ UnitTest.test_assert_eq_int256_darray(int256[])
UnitTest.test_assert_eq_uint256_darray(uint256[])
UnitTest.test_assertApproxEqAbs_int_same_sign(uint256,uint256,uint256)
UnitTest.test_assertApproxEqAbs_uint(uint256,uint256,uint256)
UnitTest.test_assertApproxEqRel_int_opp_sign_unit()
UnitTest.test_assertApproxEqRel_int_same_sign_unit()
UnitTest.test_assertApproxEqRel_int_zero_cases_unit()
UnitTest.test_assertApproxEqRel_uint_unit()
Expand Down Expand Up @@ -58,4 +59,4 @@ UnitTest.test_assertNotEq(int256,int256)
UnitTest.test_assertTrue_err()
UnitTest.test_assertTrue(bool)
UnitTest.test_checkInitialBalance(uint256)
UnitTest.test_prevrandao_nonnegative()
UnitTest.test_prevrandao_nonnegative()
3 changes: 1 addition & 2 deletions src/tests/integration/test-data/end-to-end-prove-skip
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ UnitTest.test_assertApproxEqAbs_int_zero_cases_err()
UnitTest.test_assertApproxEqAbs_int_zero_cases(uint256,uint256)
UnitTest.test_assertApproxEqAbs_uint_err()
UnitTest.test_assertApproxEqRel_int_opp_sign_err()
UnitTest.test_assertApproxEqRel_int_opp_sign_unit()
UnitTest.test_assertApproxEqRel_int_same_sign_err()
UnitTest.test_assertApproxEqRel_int_zero_cases_err()
UnitTest.test_assertApproxEqRel_uint_err()
Expand All @@ -29,4 +28,4 @@ UnitTest.test_assertNotEq_bool_err()
UnitTest.test_assertNotEq_bytes32_err()
UnitTest.test_assertNotEq_err()
UnitTest.test_assertNotEq_int256_err()
UnitTest.test_assertTrue_err()
UnitTest.test_assertTrue_err()
3 changes: 3 additions & 0 deletions src/tests/integration/test-data/test/Unit.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,11 @@ contract UnitTest is Test {
int256 neg_a = -2;
int256 neg_b = -3;
uint256 percentDelta = 2e18;
string memory err = "throw test";
assertApproxEqRel(pos_a, neg_b, percentDelta);
assertApproxEqRel(neg_a, pos_b, percentDelta);
assertApproxEqRel(pos_a, neg_b, percentDelta, err);
assertApproxEqRel(neg_a, pos_b, percentDelta, err);
}

function test_assertApproxEqRel_int_opp_sign_err() public {
Expand Down