Property-Based Testing with StreamData

Beyond example-based tests: generators, shrinking, and finding edge cases