Summary
Expected return must be non-negative and bounded by MAX_RATE.
Background
Test coverage in this area is currently thin: regressions can land without a failing build. Adding the cases below will lock the contract in place, document the expected behaviour through executable examples, and shorten review cycles when this code changes again.
Acceptance criteria
Implementation hints
- Pick the right test layer: unit tests inside the affected module for pure logic, integration tests under
tests/ for cross-module behaviour.
- Cover the happy path and at least one explicit sad path; the title of this issue describes the boundary that needs to be locked in.
- Where the project uses
proptest/fast-check/fc, prefer a property test over many hand-written cases. Commit any failing seed back to the repo.
- Keep test names assertive (
returns_zero_when_balance_is_zero), not interrogative.
- New tests should be deterministic: no
Date.now()/Math.random() without an injected fake.
Repo-specific notes
- This is a Soroban contract crate. Run
cargo build --target wasm32-unknown-unknown --release to verify the change still builds for WASM.
- Run
cargo test -p <package> for the affected crate, and cargo clippy --workspace --all-targets -- -D warnings before pushing.
- Keep
#![no_std] discipline: do not introduce std:: calls; use soroban_sdk primitives.
Out of scope
- Unrelated refactors in adjacent files.
- Stylistic-only changes (formatting, renaming) that are not required by the fix.
- Anything beyond the acceptance criteria above; surface follow-ups as separate issues.
How to claim and submit
- Comment on this issue saying you'd like to take it on; wait for a maintainer to assign you (avoids duplicated effort).
- Open a PR that references this issue (
Closes #<this-issue>).
- Make sure CI is green and request review from a
CODEOWNERS maintainer.
- PRs that close this issue and pass review may qualify for a reward — see the
MAYBE REWARDED label and the GrantFox OSS campaign page.
Category: test · Campaign: GrantFox OSS · Official Campaign · Maybe Rewarded
Summary
Expected return must be non-negative and bounded by
MAX_RATE.Background
Test coverage in this area is currently thin: regressions can land without a failing build. Adding the cases below will lock the contract in place, document the expected behaviour through executable examples, and shorten review cycles when this code changes again.
Acceptance criteria
mainbefore the fix (if this is a regression test) and passes after.Closes #<this-issue>.Implementation hints
tests/for cross-module behaviour.proptest/fast-check/fc, prefer a property test over many hand-written cases. Commit any failing seed back to the repo.returns_zero_when_balance_is_zero), not interrogative.Date.now()/Math.random()without an injected fake.Repo-specific notes
cargo build --target wasm32-unknown-unknown --releaseto verify the change still builds for WASM.cargo test -p <package>for the affected crate, andcargo clippy --workspace --all-targets -- -D warningsbefore pushing.#![no_std]discipline: do not introducestd::calls; usesoroban_sdkprimitives.Out of scope
How to claim and submit
Closes #<this-issue>).CODEOWNERSmaintainer.MAYBE REWARDEDlabel and the GrantFox OSS campaign page.Category:
test· Campaign: GrantFox OSS · Official Campaign · Maybe Rewarded