Runtypes-generate convert runtypes type to jsverify arbitrary.
Property-based testing is very awesome approach for analyze and verification program. But this approach requires the writing of generators for all datatypes in our program. This process is very time-consuming, error-prone and not DRY.
Example:
import { Number, Literal, Array, Tuple, Record } from 'runtypes'
const AsteroidType = Record({
    type: Literal('asteroid'),
    location: Tuple(Number, Number, Number),
    mass: Number,
})
const AsteroidArbitrary = jsc.record({
    type: jsc.constant('asteroid'),
    location: jsc.tuple(jsc.number, jsc.number, jsc.number),
    mass: jsc.number
})But with runtypes-generate we can get AsteroidArbitrary from AsteroidType:
import { makeJsverifyArbitrary } from 'runtypes-generate'
const AsteroidType = Record({
    type: Literal('asteroid'),
    location: Tuple(Number, Number, Number),
    mass: Number,
})
const AsteroidArbitrary = makeJsverifyArbitrary(AsteroidType)npm install --save runtypes-generate
- makeJsverifyArbitrary(type: Reflect): jsc.Arbitrary<any>- convert- runtypesto- jsverifyarbitrary
- addTypeToRegistry(tag: string, (x:Reflect) => jsc.Arbitrary<any>): void- add new generator for- Constrainttype with- tagin- argsattribute
- addTypeToIntersectRegistry(tags: string[], generator: (x: Reflect) => jsc.Arbitrary<any>): void)- add new generator for- Intersector custom- Constrainttypes. TODO example
- generateAndCheck(rt: Reflect, opts?: jsc.Options): () => void- run- jsc.assertfor property- rt.check(generatedData)for all- generatedDataobtained from- makeJsverifyArbitrary(rt). Uses for verification custom generators for custom- Constrainttype. See example in tests.
PRs accepted.
If you had questions just make issue or ask them in my telegram
Small note: If editing the Readme, please conform to the standard-readme specification.
MIT © typeetfunc