From 8bcaac40ee1afb8c36f98beabe0348ae3713d44d Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Sat, 25 Jan 2025 18:31:41 +0100 Subject: Generate a random list --- pbt/ts/src/index.ts | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'pbt/ts/src/index.ts') 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 = { - result: Result, - seed: number, - counterexample: A | null -}; +let genint: Gen = (rng: Prando) => + (size: number) => + rng.nextInt(-size, size); -type Predicate = (a: A) => boolean; -type Gen = (s: number) => (() => A); +function genlist(gen: Gen): Gen { + 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]; +function generate(gen: Gen): A { + let rng = new Prando(Math.random() * 1000); + return gen(rng)(100); +} -function property(seed: number, - predicate: Predicate, - generator: Gen, - shrinker: Shrinker): TestResult { - return {result: 'OK', seed, counterexample: null}; +async function main() { + console.log('list: ' + generate(genlist(genint))); } + +main(); -- cgit v1.2.3