fast-check
Version:
Property based testing framework for JavaScript (like QuickCheck)
23 lines (22 loc) • 785 B
TypeScript
import { Arbitrary } from './definition/Arbitrary';
/**
* Output type for {@link memo}
*/
export declare type Memo<T> = (maxDepth?: number) => Arbitrary<T>;
/**
* For mutually recursive types
*
* @example
* ```typescript
* // tree is 1 / 3 of node, 2 / 3 of leaf
* const tree: fc.Memo<Tree> = fc.memo(n => fc.oneof(node(n), leaf(), leaf()));
* const node: fc.Memo<Tree> = fc.memo(n => {
* if (n <= 1) return fc.record({ left: leaf(), right: leaf() });
* return fc.record({ left: tree(), right: tree() }); // tree() is equivalent to tree(n-1)
* });
* const leaf = fc.nat;
* ```
*
* @param builder - Arbitrary builder taken the maximal depth allowed as input (parameter `n`)
*/
export declare const memo: <T>(builder: (maxDepth: number) => Arbitrary<T>) => Memo<T>;