Awesome
tcomb-generate
tcomb-generate
convert tcomb
type to jsverify arbitrary.
Table of Contents
Background
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)
Install
npm install --save tcomb-generate
Usage
API
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.
Contribute
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.
License
MIT © typeetfunc