test-cases
Version:
Provides support for test cases in most test runners.
36 lines (35 loc) • 1.59 kB
TypeScript
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>;