Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: simplify symbolic tests using new halmos cheatcode #431

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

daejunpark
Copy link
Contributor

@daejunpark daejunpark commented Sep 25, 2024

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-lengths and --default-bytes-lengths (refer to halmos -h for 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 the createCalldata() cheatcode.

Merge Checklist

Choose all relevant options below by adding an x now or at any time before submitting for review


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

  • Updated check_Invariants functions to remove bytes4 selector parameter.
  • Replaced _calldataFor function with direct calldata creation using svm.createCalldata.
  • Removed redundant function definitions across multiple test contracts.
  • Added a new slice function for byte manipulation.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@daejunpark daejunpark added chore A task that is none of the other types test Problems with the test suite and removed chore A task that is none of the other types labels Sep 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
test Problems with the test suite
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant