diff options
Diffstat (limited to 'pbt/ts/src/index.ts')
| -rw-r--r-- | pbt/ts/src/index.ts | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/pbt/ts/src/index.ts b/pbt/ts/src/index.ts index 3a71ccf..46454f0 100644 --- a/pbt/ts/src/index.ts +++ b/pbt/ts/src/index.ts @@ -1,20 +1,32 @@ -type Result = 'OK' | 'Falsified' | 'Exception'; +import "dotenv/config"; +import Prando from 'prando'; +import { Gen } from "./property"; -type TestResult<A> = { - result: Result, - seed: number, - counterexample: A | null -}; +let genint: Gen<number> = (rng: Prando) => + (size: number) => + rng.nextInt(-size, size); -type Predicate<A> = (a: A) => boolean; -type Gen<A> = (s: number) => (() => A); +function genlist<A>(gen: Gen<A>): Gen<A[]> { + return (rng: Prando) => { + let g = gen(rng); + return (size: number) => { + let result = []; + for (let i = 0; i < size; i++) { + result.push(g(size)); + } + return result; + }; + }; +} -type Shrinker<A> = (a: A) => [A]; +function generate<A>(gen: Gen<A>): A { + let rng = new Prando(Math.random() * 1000); + return gen(rng)(100); +} -function property<A>(seed: number, - predicate: Predicate<A>, - generator: Gen<A>, - shrinker: Shrinker<A>): TestResult<A> { - return {result: 'OK', seed, counterexample: null}; +async function main() { + console.log('list: ' + generate(genlist(genint))); } + +main(); |
