Awesome
jsverify-to-fast-check
jsverify-to-fast-check
provides a set of tools and helpers to help JSVerify users to migrate to fast-check.
Why?
According to the issue jsverify#299, JSVerify is looking to new maintainers to keep the repository up-to-date.
As a huge part of property based lies on generators and properties, this library is designed to help users plug their existing generators within fast-check without any changes.
How to setup?
# you may already have jsverify and/or fast-check setup in your project
npm install --save-dev jsverify fast-check jsverify-to-fast-check
Example
Because an example will tell more than a long documentation, here is an example of how you might use jsverify-to-fast-check
towards move smoothly to fast-check.
import { jsc2fc } from "jsverify-to-fast-check";
import * as jsc from "jsverify";
import * as fc from "fast-check";
// Here is an old arbitrary you prefer not to migrate for the moment
const jscArbitrary = jsc.bless({
generator: jsc.generator.bless(() => {
switch (jsc.random(0, 2)) {
case 0:
return "foo";
case 1:
return "bar";
case 2:
return "quux";
}
})
});
// It can easily converted into an arbitrary for fast-check using jsc2fc
const fcArbitrary = jsc2fc(jscArbitrary);
// ...it can now:
// - be used in fc.assert/fc.check,
// - supports map, filter, chain
// - can be composed with fc.record, fc.array...
// ... it also preserves the shrinking capabilities of the jsverify arbitrary (if any)
Compatibility
Supports at least:
fast-check
>=1.0.0
jsverify
>=0.8.0
Older versions may worked but are not officially supported. Automated CI of this repository makes sure it works with the minimal versions stated above.