Generates **property-based tests** that use randomized input generation to validate invariants and contracts (rather than hand-picked examples). Triggers when the conversation involves: PBT frameworks (Hypothesis library for Python, fast-check for TypeScript, proptest for Rust, rapid for Go, RapidCheck for C++); concepts like invariants, contracts, round-trip symmetry, encode/decode, serialize/deserialize, generative testing, or shrinking; or requests to find edge cases that example-based tests miss — e.g., "find edge cases automatically", "test all possible inputs", "verify this property holds". Does NOT trigger for: writing regular example-based unit tests, debugging, CI/CD setup, UI/component testing, or integration/E2E testing. Identifies up to 7 property patterns (round-trip, idempotence, invariance, metamorphic, inverse, ordering, no-crash), designs input generators, writes property tests, and extracts regression tests from failures.
91
90%
Does it follow best practices?
Impact
94%
1.11xAverage score across 5 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent uses Rust proptest correctly for serialization properties, including strategies, prop assertions, configuration, and shrink/regression handling.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Dependency note",
"description": "Suggests adding proptest as a dev dependency if absent.",
"max_score": 7
},
{
"name": "Prelude import",
"description": "Uses proptest::prelude::* in the Rust test code.",
"max_score": 8
},
{
"name": "proptest macro",
"description": "Uses the proptest! macro or supported proptest invocation for generated tests.",
"max_score": 9
},
{
"name": "prop assertions",
"description": "Uses prop_assert! or prop_assert_eq! inside property tests rather than ordinary assert macros.",
"max_score": 10
},
{
"name": "Config strategy",
"description": "Defines a composed strategy for Config covering strings, u16 ports, u64 timeouts, vectors, booleans, and Option<u32>.",
"max_score": 12
},
{
"name": "Edge coverage",
"description": "Strategy can produce empty strings, empty feature vectors, boundary numeric values, duplicates, and None/Some optional values unless explicitly constrained by contract.",
"max_score": 10
},
{
"name": "Round trip",
"description": "Includes a serialize-then-deserialize property that checks equality with the original config.",
"max_score": 12
},
{
"name": "Valid no panic",
"description": "Includes a property that valid generated configurations serialize/deserialize through Result handling without panicking.",
"max_score": 8
},
{
"name": "One per property",
"description": "Separates distinct properties into separate tests or clearly separate proptest cases.",
"max_score": 7
},
{
"name": "Configurable cases",
"description": "Mentions or uses ProptestConfig or PROPTEST_CASES to adjust the number of generated cases.",
"max_score": 7
},
{
"name": "Shrunk regression",
"description": "Explains reading the minimal failing input and turning it into a deterministic regression test.",
"max_score": 10
}
]
}