summaryrefslogtreecommitdiff
path: root/pbt/ts/src/index.ts
blob: 46454f01def6b906555bc5eddd08cab8f1d92089 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import "dotenv/config";
import Prando from 'prando';
import { Gen } from "./property";

let genint: Gen<number> = (rng: Prando) =>
  (size: number) =>
  rng.nextInt(-size, size);


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;
    };
  };
}

function generate<A>(gen: Gen<A>): A {
  let rng = new Prando(Math.random() * 1000);
  return gen(rng)(100);
}

async function main() {
  console.log('list: ' + generate(genlist(genint)));
}

main();