summaryrefslogtreecommitdiff
path: root/pbt/ts/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'pbt/ts/src/index.ts')
-rw-r--r--pbt/ts/src/index.ts40
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();