UNPKG

test-cases

Version:

Provides support for test cases in most test runners.

36 lines (35 loc) 1.59 kB
export declare type TestRunner = (desc: string, fn: () => void) => void; export interface TestCaseChain1<A> { case(a: A): TestCaseChain1<A>; run(msg: string, cb: (a: A) => void): void; } export interface TestCaseChain2<A, B> { case(a: A, b: B): TestCaseChain2<A, B>; run(msg: string, cb: (a: A, b: B) => void): void; } export interface TestCaseChain3<A, B, C> { case(a: A, b: B, c: C): TestCaseChain3<A, B, C>; run(msg: string, cb: (a: A, b: B, c: C) => void): void; } export interface TestCaseChain4<A, B, C, D> { case(a: A, b: B, c: C, d: D): TestCaseChain4<A, B, C, D>; run(msg: string, cb: (a: A, b: B, c: C, d: D) => void): void; } export interface TestCaseChain5<A, B, C, D, E> { case(a: A, b: B, c: C, d: D, e: E): TestCaseChain5<A, B, C, D, E>; run(msg: string, cb: (a: A, b: B, c: C, d: D, e: E) => void): void; } export interface TestCaseChain { case(...args: any[]): TestCaseChain; run(msg: string, cb: (...args: any[]) => void): void; } export interface TestCaseFunction { case<A>(a: A): TestCaseChain1<A>; case<A, B>(a: A, b: B): TestCaseChain2<A, B>; case<A, B, C>(a: A, b: B, c: C): TestCaseChain3<A, B, C>; case<A, B, C, D>(a: A, b: B, c: C, d: D): TestCaseChain4<A, B, C, D>; case<A, B, C, D, E>(a: A, b: B, c: C, d: D, e: E): TestCaseChain5<A, B, C, D, E>; case(...args: any[]): TestCaseChain; } export declare type EnhancedTestRunner<Runner extends TestRunner> = TestCaseFunction & Runner; export declare function setup<Runner extends TestRunner>(testRunner: Runner): EnhancedTestRunner<Runner>;