diff options
Diffstat (limited to 'stdlib')
| -rw-r--r-- | stdlib/test.ts | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/stdlib/test.ts b/stdlib/test.ts index 639c433..a592d87 100644 --- a/stdlib/test.ts +++ b/stdlib/test.ts @@ -1,12 +1,29 @@ -import { Effect } from './effect' +import { Do, Effect, Kind1 } from './effect' +import { Throw, Try } from './exception' +import { Equals } from './util' export interface Config { - compileTimeTestFailures: false - stopAtFailure: true // TODO: stopAtFailure + // compileTimeTestFailures: false + // stopAtFailure: true // TODO: stopAtFailure } -type Assertion = Config['compileTimeTestFailures'] extends true ? true : boolean +export interface Assert<_B extends boolean> extends Effect {} + +export interface Test<_m extends string, _effs extends Effect[]> extends Effect {} + +export interface ShowAssertionError<_L extends unknown, _R extends unknown> extends Effect {} + +export type AssertEquals<Left, Right> = Try< + Assert<Equals<Left, Right>>, + <e extends string>() => Do<[ + ShowAssertionError<Left, Right>, + Throw<e>, + ]> +> + +export interface AssertEqualsK<Right extends unknown> extends Kind1 { + return: AssertEquals<this['input'], Right> +} + +// TODO: export interface AssertFails? -export interface Assert<_B extends Assertion> extends Effect {} -export interface Test<_m extends string, _effs extends Effect[]> - extends Effect {} |
