test: simplify symbolic tests using new halmos cheatcode #431
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
This PR improves symbolic tests using new halmos cheatcode
createCalldata().Previously, symbolic tests required custom calldata generators to handle dynamic-sized arrays and bytes. The new
createCalldata()cheatcode now seamlessly supports such dynamically-sized parameters by considering all combinations of size candidates. These sizes can be specified using the additional flags--array-lengthsand--default-bytes-lengths(refer tohalmos -hfor more details.)With this new cheatcode, the symbolic tests are now much simpler to understand and maintain, while also accounting for more combinations of dynamic parameter sizes.
Change Summary
Replaced the custom calldata generator
_calldataFor()with thecreateCalldata()cheatcode.Merge Checklist
Choose all relevant options below by adding an
xnow or at any time before submitting for reviewPR-Codex overview
This PR focuses on simplifying the handling of function selectors and calldata in various smart contract tests. It removes unnecessary functions and improves the way calldata is generated, enhancing code clarity and maintainability.
Detailed summary
check_Invariantsfunctions to removebytes4 selectorparameter._calldataForfunction with direct calldata creation usingsvm.createCalldata.slicefunction for byte manipulation.