PropertyBased - Easy QuickCheck for Swift Testing on all platforms

Now that Swift 6.2 has gone stable, I can announce that my testing library PropertyBased has reached version 1.0.

https://swiftpackageindex.com/x-sheep/swift-property-based

This is a complete reimagining of property-based testing libraries such as SwiftCheck or Haskell's QuickCheck, fully optimized for Swift Testing, and supports all of the same platforms that Swift Testing does.

Property-Based Testing can be used as an alternative for (or in addition to) testing with hardcoded values. Run tests with composable random inputs, then easily switch to specific failing cases just by adding a single line.

Example:

@Test func checkSumInRange() async {
    await propertyCheck(input: Gen.int(in: 0...100).array(of: 1...10)) { numbers in
        let sum = numbers.reduce(0, +)
        #expect(sum < 250)
    }
}

Along with the expectation failure you're familiar with, the library will add output similar to:

Failure occured with input [46, 97, 68, 23, 16].
(shrunk down from [63, 61, 33, 53, 97, 68, 23, 16] after 7 iterations)

Add `.fixedSeed("aKPPWDEafU0CGMDYHef/ETcbYUyjWQvRVP1DTNy6qJk=")` to the Test to reproduce this issue.

It contains a fork of swift-gen by PointFree, with the breaking change that shrinkers are tightly coupled with the generator's inputs. This has the advantage of making sure that shrunk inputs never go out of bounds (e.g. a random integer between 10 and 20 will never be shrunk down to zero), and custom types that are derived from the built-in generators will automatically receive shrinking functionality.

Please let me know what you think!