Test invariants with generated inputs and shrinking—especially powerful for pure functions.
Property-based testing flips the usual approach:
This style is especially effective for Clojure’s pure data transformations, where the behavior is easy to specify and hard to exhaustively cover with hand-picked examples.