Mvx Property Testing

Using fuzz tests in Rust for invariants. Use when this capability is needed.

tomevault-io debee10 2 files · 1.8 KB Updated

File contents

MultiversX Property Testing

This skill guides you in using property-based testing (fuzzing) to find edge cases in Smart Contract logic.

1. Tools

  • cargo fuzz: Standard Rust fuzzer.
  • proptest: Property testing framework for Rust.

2. Methodology

Defining Invariants:

  • "Total Supply MUST equal sum of all balances."
  • "User balance MUST NOT decrease if deposit fails."

3. Implementation (RustVM)

Write a test that:

  1. Takes random input (random amounts, random user IDs).
  2. Executes the contract logic via blockchain_mock.
  3. Asserts the invariant holds.

4. Example

proptest! {
    #[test]
    fn test_deposit_always_increases_balance(amount in 0u64..1_000_000u64) {
        let mut setup = Setup::new();
        setup.deposit(amount);
        assert_eq!(setup.balance(), amount);
    }
}

Converted and distributed by TomeVault — claim your Tome and manage your conversions.

tomevault-io/skills-registry/tree/main/multiversx--mx-ai-skills--mvx-property-testing commit debee10e20

Frequently asked questions

npx skillmds@latest add tomevault-io/mvx-property-testing