tcomb-generate
convert tcomb
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 * as t from 'tcomb'
const AsteroidType = t.interface({
type: t.enums.of('asteroid'),
location: t.tuple([t.Number, t.Number, t.Number]),
mass: t.Number,
})
const AsteroidArbitrary = jsc.record({
type: jsc.constant('asteroid'),
location: jsc.tuple(jsc.number, jsc.number, jsc.number),
mass: jsc.number
})
But with tcomb-generate
we can get AsteroidArbitrary
from AsteroidType
:
import { makeJsverifyArbitrary } from 'tcomb-generate'
const AsteroidType = t.interface({
type: t.enums.of('asteroid'),
location: t.tuple([t.Number, t.Number, t.Number]),
mass: t.Number,
})
const AsteroidArbitrary = makeJsverifyArbitrary(AsteroidType)
npm install --save tcomb-generate
makeJsverifyArbitrary(type: Type<any>): jsc.Arbitrary<any>
- converttcomb
type tojsverify
arbitraryaddTypeToRegistry(name: string, (x: Type<any>) => jsc.Arbitrary<any>): void
- add new generator for type with nameaddTypeToIntersectRegistry(names: string[], generator: (x: Type<any>) => jsc.Arbitrary<any>): void)
- add new generator for customt.intersection
types. TODO examplegenerateAndCheck(rt: Type<any>, opts?: jsc.Options): () => void
- runjsc.assert
for propertytype.is(generatedData)
for allgeneratedData
obtained frommakeJsverifyArbitrary(type)
. Uses for verification custom generators for custom named type. 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