summaryrefslogtreecommitdiff
path: root/pbt/ts/src/bank.ts
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-12-01 17:16:38 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-12-01 17:16:38 +0100
commit01660b4c6ac5d451102d73a7df22483f9fcc2ea1 (patch)
treee4684d483e235c06c1a65956b2b87c3e69d63406 /pbt/ts/src/bank.ts
parentf8f9f6d77ad589dcbdf2749cade4cadc827c805f (diff)
downloadlambda-nantes-01660b4c6ac5d451102d73a7df22483f9fcc2ea1.tar.gz
complete operations sequence tests
Diffstat (limited to 'pbt/ts/src/bank.ts')
-rw-r--r--pbt/ts/src/bank.ts22
1 files changed, 19 insertions, 3 deletions
diff --git a/pbt/ts/src/bank.ts b/pbt/ts/src/bank.ts
index e5619f4..e388354 100644
--- a/pbt/ts/src/bank.ts
+++ b/pbt/ts/src/bank.ts
@@ -1,4 +1,4 @@
-import {Option, fromNullable} from 'fp-ts/lib/Option';
+import {Option, fromNullable, isSome, matchW} from 'fp-ts/lib/Option';
// keep it simple
export type Account = string;
@@ -32,11 +32,27 @@ export class SimpleBank implements Bank {
}
deposit(account: Account, amt: number): void {
- throw new Error('Method not implemented.');
+ const current = this.balance(account);
+ matchW(
+ () => {
+ throw new Error(`Unknown account ${account}`);
+ },
+ (bal: number) => {
+ this.accounts.set(account, bal + amt);
+ },
+ )(current);
}
withdraw(account: Account, amt: number): void {
- throw new Error('Method not implemented.');
+ const current = this.balance(account);
+ matchW(
+ () => {
+ throw new Error(`Unknown account ${account}`);
+ },
+ (bal: number) => {
+ this.accounts.set(account, bal - amt);
+ },
+ )(current);
}
}