diff options
Diffstat (limited to 'pbt/ts/src/property.ts')
| -rw-r--r-- | pbt/ts/src/property.ts | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/pbt/ts/src/property.ts b/pbt/ts/src/property.ts index 56683c1..635e731 100644 --- a/pbt/ts/src/property.ts +++ b/pbt/ts/src/property.ts @@ -53,11 +53,11 @@ export function generate<A>(gen: Gen<A>): A { return gen(rng)(100); } -export function property<A>( +export async function property<A>( generator: Gen<A>, predicate: Predicate<A>, shrinker?: Shrinker<A>, -): Property<A> { +): Promise<Property<A>> { return async (seed: number, size: number) => { const rng = new Prando(seed); const gen = generator(rng); @@ -243,9 +243,10 @@ export function shrinkPair<A, B>( } export const Property = { - run<A>(prop: Property<A>): Promise<TestResult<A>> { + async run<A>(prop: Promise<Property<A>>): Promise<TestResult<A>> { const seed = Math.floor(Math.random() * 1000000); - return prop(seed, 0); + const p = await prop; + return await p(seed, 0); }, }; @@ -253,11 +254,14 @@ export const Property = { export function forall<A, B>( gen: Gen<A>, - k: (a: A) => Property<B>, -): Property<B> { - return (seed: number, size: number) => { + k: (a: A) => Promise<Property<B>>, +): Promise<Property<B>> { + const p = async (seed: number, size: number) => { const rng = new Prando(seed); const a = gen(rng)(size); - return k(a)(seed, size); + const p = await k(a); + return await p(seed, size); }; + + return Promise.resolve(p); } |
