From a8c27de3f4434d8a08e953b95b47a4161f9473ed Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Sat, 29 Nov 2025 09:07:09 +0100 Subject: start simple bank example --- pbt/ts/src/index.ts | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) (limited to 'pbt/ts/src/index.ts') diff --git a/pbt/ts/src/index.ts b/pbt/ts/src/index.ts index 25b97aa..7f67d77 100644 --- a/pbt/ts/src/index.ts +++ b/pbt/ts/src/index.ts @@ -1,12 +1,14 @@ -import "dotenv/config"; +import 'dotenv/config'; import Prando from 'prando'; -import { Gen, Property, listOf, property, shrinklist, someInt } from "./property"; +import {Gen, Property, listOf, property, shrinklist, someInt} from './property'; function arrayEquals(a: A[], b: A[]): boolean { - return Array.isArray(a) && + return ( + Array.isArray(a) && Array.isArray(b) && a.length === b.length && - a.every((val, index) => val === b[index]); + a.every((val, index) => val === b[index]) + ); } function reverse(arr: A[]): A[] { @@ -25,14 +27,16 @@ function gen2lists(gen: Gen): Gen<[A[], A[]]> { return (rng: Prando) => { let gl = listOf(gen)(rng); return (size: number) => { - return [gl(size), gl(size)] + return [gl(size), gl(size)]; }; }; } function reverse_with_two_lists(arrs: [A[], A[]]): boolean { - return arrayEquals(reverse(arrs[0].concat(arrs[1])), - reverse(arrs[0]).concat(reverse(arrs[1]))); + return arrayEquals( + reverse(arrs[0].concat(arrs[1])), + reverse(arrs[1]).concat(reverse(arrs[0])), + ); } function shrink2lists([l1, l2]: [A[], A[]]): [A[], A[]][] { @@ -40,22 +44,32 @@ function shrink2lists([l1, l2]: [A[], A[]]): [A[], A[]][] { let s1 = shrinklist(l1); let s2 = shrinklist(l2); for (let i = 0; i < s1.length; i++) { - let j = s2.length - i -1; + let j = s2.length - i - 1; let news2 = j >= 0 ? s2[j] : []; result.push([s1[i], news2]); } return result; } -export let prop_reverse_with_two_lists = - property<[number[], number[]]>(reverse_with_two_lists, gen2lists(someInt), shrink2lists); +export let prop_reverse_with_two_lists = property<[number[], number[]]>( + gen2lists(someInt), + reverse_with_two_lists, + shrink2lists, +); -let prop_reverse_is_self_inverse = - property(reverse_is_self_inverse, listOf(someInt), shrinklist); +let prop_reverse_is_self_inverse = property( + listOf(someInt), + reverse_is_self_inverse, + shrinklist, +); -async function main() { +async function main(): Promise { let reverse_append_result = Property.run(prop_reverse_with_two_lists); let reverse_reverse_result = Property.run(prop_reverse_is_self_inverse); - console.log('reverse_append_result: ' + JSON.stringify(reverse_append_result)); - console.log('reverse_reverse_result: ' + JSON.stringify(reverse_reverse_result)); -}; + console.log( + 'reverse_append_result: ' + JSON.stringify(reverse_append_result), + ); + console.log( + 'reverse_reverse_result: ' + JSON.stringify(reverse_reverse_result), + ); +} -- cgit v1.3.1