export type ErrorValidator = (new (...args: any[]) => any) | RegExp | string | ((error: any) => boolean); export interface Observable { subscribe(observer: (value: {}) => void): void; } export type Test = (t: TestContext) => PromiseLike | Iterator | Observable | void; export type GenericTest = (t: GenericTestContext) => PromiseLike | Iterator | Observable | void; export type CallbackTest = (t: CallbackTestContext) => void; export type GenericCallbackTest = (t: GenericCallbackTestContext) => void; export interface Context { context: T } export type AnyContext = Context; export type ContextualTest = GenericTest; export type ContextualCallbackTest = GenericCallbackTest; export interface AssertContext { /** * Passing assertion. */ pass(message?: string): void; /** * Failing assertion. */ fail(message?: string): void; /** * Assert that value is truthy. */ truthy(value: any, message?: string): void; /** * Assert that value is falsy. */ falsy(value: any, message?: string): void; /** * Assert that value is true. */ true(value: any, message?: string): void; /** * Assert that value is false. */ false(value: any, message?: string): void; /** * Assert that value is equal to expected. */ is(value: U, expected: U, message?: string): void; /** * Assert that value is not equal to expected. */ not(value: U, expected: U, message?: string): void; /** * Assert that value is deep equal to expected. */ deepEqual(value: U, expected: U, message?: string): void; /** * Assert that value is not deep equal to expected. */ notDeepEqual(value: U, expected: U, message?: string): void; /** * Assert that function throws an error or promise rejects. * @param error Can be a constructor, regex, error message or validation function. */ throws(value: PromiseLike, error?: ErrorValidator, message?: string): Promise; throws(value: () => void, error?: ErrorValidator, message?: string): any; /** * Assert that function doesn't throw an error or promise resolves. */ notThrows(value: PromiseLike, message?: string): Promise; notThrows(value: () => void, message?: string): void; /** * Assert that contents matches regex. */ regex(contents: string, regex: RegExp, message?: string): void; /** * Assert that contents matches a snapshot. */ snapshot(contents: any, message?: string): void; /** * Assert that contents does not match regex. */ notRegex(contents: string, regex: RegExp, message?: string): void; /** * Assert that error is falsy. */ ifError(error: any, message?: string): void; } export interface TestContext extends AssertContext { /** * Test title. */ title: string; /** * Plan how many assertion there are in the test. * The test will fail if the actual assertion count doesn't match planned assertions. */ plan(count: number): void; skip: AssertContext; /** * Print a log message contextually alongside the test result instead of immediately printing it to stdout like console.log. */ log(message: string): void; } export interface CallbackTestContext extends TestContext { /** * End the test. */ end(): void; } export type GenericTestContext = TestContext & T; export type GenericCallbackTestContext = CallbackTestContext & T; export interface Macro { (t: T, ...args: any[]): void; title? (providedTitle: string, ...args: any[]): string; } export type Macros = Macro | Macro[]; interface RegisterBase { (name: string, run: GenericTest): void; (run: GenericTest): void; (name: string, run: Macros>, ...args: any[]): void; (run: Macros>, ...args: any[]): void; } interface CallbackRegisterBase { (name: string, run: GenericCallbackTest): void; (run: GenericCallbackTest): void; (name: string, run: Macros>, ...args: any[]): void; (run: Macros>, ...args: any[]): void; } export default test; export const test: RegisterContextual; export interface RegisterContextual extends Register> { } export interface Register extends RegisterBase { serial: RegisterBase & Register_serial; before: RegisterBase & Register_before; after: RegisterBase & Register_after; skip: RegisterBase & Register_skip; todo: (name: string) => void; failing: RegisterBase & Register_failing; only: RegisterBase & Register_only; beforeEach: RegisterBase & Register_beforeEach; afterEach: RegisterBase & Register_afterEach; cb: CallbackRegisterBase & Register_cb; } interface Register_serial { before: Register_before_serial; after: Register_after_serial; skip: RegisterBase & Register_serial_skip; todo: (name: string) => void; failing: Register_failing_serial; only: Register_only_serial; beforeEach: Register_beforeEach_serial; afterEach: Register_afterEach_serial; cb: Register_cb_serial; always: Register_always_serial; } interface Register_serial_skip { before: Register_before_serial_skip; after: Register_after_serial_skip; failing: Register_failing_serial_skip; beforeEach: Register_beforeEach_serial_skip; afterEach: Register_afterEach_serial_skip; cb: Register_cb_serial_skip; always: Register_always_serial_skip; } interface Register_serial_todo { before: Register_before_serial_todo; after: Register_after_serial_todo; failing: Register_failing_serial_todo; beforeEach: Register_beforeEach_serial_todo; afterEach: Register_afterEach_serial_todo; cb: Register_cb_serial_todo; always: Register_always_serial_todo; } interface Register_before { serial: RegisterBase & Register_before_serial; skip: RegisterBase & Register_before_skip; todo: (name: string) => void; failing: RegisterBase & Register_before_failing; cb: CallbackRegisterBase & Register_before_cb; } interface Register_before_serial { skip: RegisterBase & Register_before_serial_skip; todo: (name: string) => void; failing: Register_before_failing_serial; cb: Register_before_cb_serial; } interface Register_before_serial_skip { failing: Register_before_failing_serial_skip; cb: Register_before_cb_serial_skip; } interface Register_before_serial_todo { failing: Register_before_failing_serial_todo; cb: Register_before_cb_serial_todo; } interface Register_before_skip { serial: Register_before_serial_skip; failing: Register_before_failing_skip; cb: Register_before_cb_skip; } interface Register_before_todo { serial: Register_before_serial_todo; failing: Register_before_failing_todo; cb: Register_before_cb_todo; } interface Register_before_failing { serial: RegisterBase & Register_before_failing_serial; skip: RegisterBase & Register_before_failing_skip; todo: (name: string) => void; cb: Register_before_cb_failing; } interface Register_before_failing_serial { skip: RegisterBase & Register_before_failing_serial_skip; todo: (name: string) => void; cb: Register_before_cb_failing_serial; } interface Register_before_failing_serial_skip { cb: Register_before_cb_failing_serial['skip']; } interface Register_before_failing_serial_todo { cb: Register_before_cb_failing_serial['todo']; } interface Register_before_failing_skip { serial: Register_before_failing_serial_skip; cb: Register_before_cb_failing_skip; } interface Register_before_failing_todo { serial: Register_before_failing_serial_todo; cb: Register_before_cb_failing_todo; } interface Register_before_cb { serial: CallbackRegisterBase & Register_before_cb_serial; skip: CallbackRegisterBase & Register_before_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_before_cb_failing; } interface Register_before_cb_serial { skip: CallbackRegisterBase & Register_before_cb_serial_skip; todo: (name: string) => void; failing: Register_before_cb_failing_serial; } interface Register_before_cb_serial_skip { failing: Register_before_cb_failing_serial['skip']; } interface Register_before_cb_serial_todo { failing: Register_before_cb_failing_serial['todo']; } interface Register_before_cb_skip { serial: Register_before_cb_serial_skip; failing: Register_before_cb_failing_skip; } interface Register_before_cb_todo { serial: Register_before_cb_serial_todo; failing: Register_before_cb_failing_todo; } interface Register_before_cb_failing { serial: CallbackRegisterBase & Register_before_cb_failing_serial; skip: CallbackRegisterBase & Register_before_cb_failing_skip; todo: (name: string) => void; } interface Register_before_cb_failing_serial { skip: CallbackRegisterBase; todo: (name: string) => void; } interface Register_before_cb_failing_skip { serial: Register_before_cb_failing_serial['skip']; } interface Register_before_cb_failing_todo { serial: Register_before_cb_failing_serial['todo']; } interface Register_after { serial: RegisterBase & Register_after_serial; skip: RegisterBase & Register_after_skip; todo: (name: string) => void; failing: RegisterBase & Register_after_failing; cb: CallbackRegisterBase & Register_after_cb; always: RegisterBase & Register_after_always; } interface Register_after_serial { skip: RegisterBase & Register_after_serial_skip; todo: (name: string) => void; failing: Register_after_failing_serial; cb: Register_after_cb_serial; always: Register_after_always_serial; } interface Register_after_serial_skip { failing: Register_after_failing_serial_skip; cb: Register_after_cb_serial_skip; always: Register_after_always_serial_skip; } interface Register_after_serial_todo { failing: Register_after_failing_serial_todo; cb: Register_after_cb_serial_todo; always: Register_after_always_serial_todo; } interface Register_after_skip { serial: Register_after_serial_skip; failing: Register_after_failing_skip; cb: Register_after_cb_skip; always: Register_after_always_skip; } interface Register_after_todo { serial: Register_after_serial_todo; failing: Register_after_failing_todo; cb: Register_after_cb_todo; always: Register_after_always_todo; } interface Register_after_failing { serial: RegisterBase & Register_after_failing_serial; skip: RegisterBase & Register_after_failing_skip; todo: (name: string) => void; cb: Register_after_cb_failing; always: Register_after_always_failing; } interface Register_after_failing_serial { skip: RegisterBase & Register_after_failing_serial_skip; todo: (name: string) => void; cb: Register_after_cb_failing_serial; always: Register_after_always_failing_serial; } interface Register_after_failing_serial_skip { cb: Register_after_cb_failing_serial_skip; always: Register_after_always_failing_serial_skip; } interface Register_after_failing_serial_todo { cb: Register_after_cb_failing_serial_todo; always: Register_after_always_failing_serial_todo; } interface Register_after_failing_skip { serial: Register_after_failing_serial_skip; cb: Register_after_cb_failing_skip; always: Register_after_always_failing_skip; } interface Register_after_failing_todo { serial: Register_after_failing_serial_todo; cb: Register_after_cb_failing_todo; always: Register_after_always_failing_todo; } interface Register_after_cb { serial: CallbackRegisterBase & Register_after_cb_serial; skip: CallbackRegisterBase & Register_after_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_after_cb_failing; always: Register_after_always_cb; } interface Register_after_cb_serial { skip: CallbackRegisterBase & Register_after_cb_serial_skip; todo: (name: string) => void; failing: Register_after_cb_failing_serial; always: Register_after_always_cb_serial; } interface Register_after_cb_serial_skip { failing: Register_after_cb_failing_serial_skip; always: Register_after_always_cb_serial_skip; } interface Register_after_cb_serial_todo { failing: Register_after_cb_failing_serial_todo; always: Register_after_always_cb_serial_todo; } interface Register_after_cb_skip { serial: Register_after_cb_serial_skip; failing: Register_after_cb_failing_skip; always: Register_after_always_cb_skip; } interface Register_after_cb_todo { serial: Register_after_cb_serial_todo; failing: Register_after_cb_failing_todo; always: Register_after_always_cb_todo; } interface Register_after_cb_failing { serial: CallbackRegisterBase & Register_after_cb_failing_serial; skip: CallbackRegisterBase & Register_after_cb_failing_skip; todo: (name: string) => void; always: Register_after_always_cb_failing; } interface Register_after_cb_failing_serial { skip: CallbackRegisterBase & Register_after_cb_failing_serial_skip; todo: (name: string) => void; always: Register_after_always_cb_failing_serial; } interface Register_after_cb_failing_serial_skip { always: Register_after_always_cb_failing_serial['skip']; } interface Register_after_cb_failing_serial_todo { always: Register_after_always_cb_failing_serial['todo']; } interface Register_after_cb_failing_skip { serial: Register_after_cb_failing_serial_skip; always: Register_after_always_cb_failing_skip; } interface Register_after_cb_failing_todo { serial: Register_after_cb_failing_serial_todo; always: Register_after_always_cb_failing_todo; } interface Register_after_always { serial: RegisterBase & Register_after_always_serial; skip: RegisterBase & Register_after_always_skip; todo: (name: string) => void; failing: RegisterBase & Register_after_always_failing; cb: CallbackRegisterBase & Register_after_always_cb; } interface Register_after_always_serial { skip: RegisterBase & Register_after_always_serial_skip; todo: (name: string) => void; failing: Register_after_always_failing_serial; cb: Register_after_always_cb_serial; } interface Register_after_always_serial_skip { failing: Register_after_always_failing_serial_skip; cb: Register_after_always_cb_serial_skip; } interface Register_after_always_serial_todo { failing: Register_after_always_failing_serial_todo; cb: Register_after_always_cb_serial_todo; } interface Register_after_always_skip { serial: Register_after_always_serial_skip; failing: Register_after_always_failing_skip; cb: Register_after_always_cb_skip; } interface Register_after_always_todo { serial: Register_after_always_serial_todo; failing: Register_after_always_failing_todo; cb: Register_after_always_cb_todo; } interface Register_after_always_failing { serial: RegisterBase & Register_after_always_failing_serial; skip: RegisterBase & Register_after_always_failing_skip; todo: (name: string) => void; cb: Register_after_always_cb_failing; } interface Register_after_always_failing_serial { skip: RegisterBase & Register_after_always_failing_serial_skip; todo: (name: string) => void; cb: Register_after_always_cb_failing_serial; } interface Register_after_always_failing_serial_skip { cb: Register_after_always_cb_failing_serial['skip']; } interface Register_after_always_failing_serial_todo { cb: Register_after_always_cb_failing_serial['todo']; } interface Register_after_always_failing_skip { serial: Register_after_always_failing_serial_skip; cb: Register_after_always_cb_failing_skip; } interface Register_after_always_failing_todo { serial: Register_after_always_failing_serial_todo; cb: Register_after_always_cb_failing_todo; } interface Register_after_always_cb { serial: CallbackRegisterBase & Register_after_always_cb_serial; skip: CallbackRegisterBase & Register_after_always_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_after_always_cb_failing; } interface Register_after_always_cb_serial { skip: CallbackRegisterBase & Register_after_always_cb_serial_skip; todo: (name: string) => void; failing: Register_after_always_cb_failing_serial; } interface Register_after_always_cb_serial_skip { failing: Register_after_always_cb_failing_serial['skip']; } interface Register_after_always_cb_serial_todo { failing: Register_after_always_cb_failing_serial['todo']; } interface Register_after_always_cb_skip { serial: Register_after_always_cb_serial_skip; failing: Register_after_always_cb_failing_skip; } interface Register_after_always_cb_todo { serial: Register_after_always_cb_serial_todo; failing: Register_after_always_cb_failing_todo; } interface Register_after_always_cb_failing { serial: CallbackRegisterBase & Register_after_always_cb_failing_serial; skip: CallbackRegisterBase & Register_after_always_cb_failing_skip; todo: (name: string) => void; } interface Register_after_always_cb_failing_serial { skip: CallbackRegisterBase; todo: (name: string) => void; } interface Register_after_always_cb_failing_skip { serial: Register_after_always_cb_failing_serial['skip']; } interface Register_after_always_cb_failing_todo { serial: Register_after_always_cb_failing_serial['todo']; } interface Register_skip { serial: Register_serial_skip; before: Register_before_skip; after: Register_after_skip; failing: Register_failing_skip; beforeEach: Register_beforeEach_skip; afterEach: Register_afterEach_skip; cb: Register_cb_skip; always: Register_always_skip; } interface Register_todo { serial: Register_serial_todo; before: Register_before_todo; after: Register_after_todo; failing: Register_failing_todo; beforeEach: Register_beforeEach_todo; afterEach: Register_afterEach_todo; cb: Register_cb_todo; always: Register_always_todo; } interface Register_failing { serial: RegisterBase & Register_failing_serial; before: Register_before_failing; after: Register_after_failing; skip: RegisterBase & Register_failing_skip; todo: (name: string) => void; only: RegisterBase & Register_failing_only; beforeEach: Register_beforeEach_failing; afterEach: Register_afterEach_failing; cb: Register_cb_failing; always: Register_always_failing; } interface Register_failing_serial { before: Register_before_failing_serial; after: Register_after_failing_serial; skip: RegisterBase & Register_failing_serial_skip; todo: (name: string) => void; only: Register_failing_only_serial; beforeEach: Register_beforeEach_failing_serial; afterEach: Register_afterEach_failing_serial; cb: Register_cb_failing_serial; always: Register_always_failing_serial; } interface Register_failing_serial_skip { before: Register_before_failing_serial_skip; after: Register_after_failing_serial_skip; beforeEach: Register_beforeEach_failing_serial_skip; afterEach: Register_afterEach_failing_serial_skip; cb: Register_cb_failing_serial_skip; always: Register_always_failing_serial_skip; } interface Register_failing_serial_todo { before: Register_before_failing_serial_todo; after: Register_after_failing_serial_todo; beforeEach: Register_beforeEach_failing_serial_todo; afterEach: Register_afterEach_failing_serial_todo; cb: Register_cb_failing_serial_todo; always: Register_always_failing_serial_todo; } interface Register_failing_skip { serial: Register_failing_serial_skip; before: Register_before_failing_skip; after: Register_after_failing_skip; beforeEach: Register_beforeEach_failing_skip; afterEach: Register_afterEach_failing_skip; cb: Register_cb_failing_skip; always: Register_always_failing_skip; } interface Register_failing_todo { serial: Register_failing_serial_todo; before: Register_before_failing_todo; after: Register_after_failing_todo; beforeEach: Register_beforeEach_failing_todo; afterEach: Register_afterEach_failing_todo; cb: Register_cb_failing_todo; always: Register_always_failing_todo; } interface Register_failing_only { serial: RegisterBase & Register_failing_only_serial; cb: Register_cb_failing_only; } interface Register_failing_only_serial { cb: Register_cb_failing_only['serial']; } interface Register_only { serial: RegisterBase & Register_only_serial; failing: Register_failing_only; cb: Register_cb_only; } interface Register_only_serial { failing: Register_failing_only_serial; cb: Register_cb_only_serial; } interface Register_beforeEach { serial: RegisterBase & Register_beforeEach_serial; skip: RegisterBase & Register_beforeEach_skip; todo: (name: string) => void; failing: RegisterBase & Register_beforeEach_failing; cb: CallbackRegisterBase & Register_beforeEach_cb; } interface Register_beforeEach_serial { skip: RegisterBase & Register_beforeEach_serial_skip; todo: (name: string) => void; failing: Register_beforeEach_failing_serial; cb: Register_beforeEach_cb_serial; } interface Register_beforeEach_serial_skip { failing: Register_beforeEach_failing_serial_skip; cb: Register_beforeEach_cb_serial_skip; } interface Register_beforeEach_serial_todo { failing: Register_beforeEach_failing_serial_todo; cb: Register_beforeEach_cb_serial_todo; } interface Register_beforeEach_skip { serial: Register_beforeEach_serial_skip; failing: Register_beforeEach_failing_skip; cb: Register_beforeEach_cb_skip; } interface Register_beforeEach_todo { serial: Register_beforeEach_serial_todo; failing: Register_beforeEach_failing_todo; cb: Register_beforeEach_cb_todo; } interface Register_beforeEach_failing { serial: RegisterBase & Register_beforeEach_failing_serial; skip: RegisterBase & Register_beforeEach_failing_skip; todo: (name: string) => void; cb: Register_beforeEach_cb_failing; } interface Register_beforeEach_failing_serial { skip: RegisterBase & Register_beforeEach_failing_serial_skip; todo: (name: string) => void; cb: Register_beforeEach_cb_failing_serial; } interface Register_beforeEach_failing_serial_skip { cb: Register_beforeEach_cb_failing_serial['skip']; } interface Register_beforeEach_failing_serial_todo { cb: Register_beforeEach_cb_failing_serial['todo']; } interface Register_beforeEach_failing_skip { serial: Register_beforeEach_failing_serial_skip; cb: Register_beforeEach_cb_failing_skip; } interface Register_beforeEach_failing_todo { serial: Register_beforeEach_failing_serial_todo; cb: Register_beforeEach_cb_failing_todo; } interface Register_beforeEach_cb { serial: CallbackRegisterBase & Register_beforeEach_cb_serial; skip: CallbackRegisterBase & Register_beforeEach_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_beforeEach_cb_failing; } interface Register_beforeEach_cb_serial { skip: CallbackRegisterBase & Register_beforeEach_cb_serial_skip; todo: (name: string) => void; failing: Register_beforeEach_cb_failing_serial; } interface Register_beforeEach_cb_serial_skip { failing: Register_beforeEach_cb_failing_serial['skip']; } interface Register_beforeEach_cb_serial_todo { failing: Register_beforeEach_cb_failing_serial['todo']; } interface Register_beforeEach_cb_skip { serial: Register_beforeEach_cb_serial_skip; failing: Register_beforeEach_cb_failing_skip; } interface Register_beforeEach_cb_todo { serial: Register_beforeEach_cb_serial_todo; failing: Register_beforeEach_cb_failing_todo; } interface Register_beforeEach_cb_failing { serial: CallbackRegisterBase & Register_beforeEach_cb_failing_serial; skip: CallbackRegisterBase & Register_beforeEach_cb_failing_skip; todo: (name: string) => void; } interface Register_beforeEach_cb_failing_serial { skip: CallbackRegisterBase; todo: (name: string) => void; } interface Register_beforeEach_cb_failing_skip { serial: Register_beforeEach_cb_failing_serial['skip']; } interface Register_beforeEach_cb_failing_todo { serial: Register_beforeEach_cb_failing_serial['todo']; } interface Register_afterEach { serial: RegisterBase & Register_afterEach_serial; skip: RegisterBase & Register_afterEach_skip; todo: (name: string) => void; failing: RegisterBase & Register_afterEach_failing; cb: CallbackRegisterBase & Register_afterEach_cb; always: RegisterBase & Register_afterEach_always; } interface Register_afterEach_serial { skip: RegisterBase & Register_afterEach_serial_skip; todo: (name: string) => void; failing: Register_afterEach_failing_serial; cb: Register_afterEach_cb_serial; always: Register_afterEach_always_serial; } interface Register_afterEach_serial_skip { failing: Register_afterEach_failing_serial_skip; cb: Register_afterEach_cb_serial_skip; always: Register_afterEach_always_serial_skip; } interface Register_afterEach_serial_todo { failing: Register_afterEach_failing_serial_todo; cb: Register_afterEach_cb_serial_todo; always: Register_afterEach_always_serial_todo; } interface Register_afterEach_skip { serial: Register_afterEach_serial_skip; failing: Register_afterEach_failing_skip; cb: Register_afterEach_cb_skip; always: Register_afterEach_always_skip; } interface Register_afterEach_todo { serial: Register_afterEach_serial_todo; failing: Register_afterEach_failing_todo; cb: Register_afterEach_cb_todo; always: Register_afterEach_always_todo; } interface Register_afterEach_failing { serial: RegisterBase & Register_afterEach_failing_serial; skip: RegisterBase & Register_afterEach_failing_skip; todo: (name: string) => void; cb: Register_afterEach_cb_failing; always: Register_afterEach_always_failing; } interface Register_afterEach_failing_serial { skip: RegisterBase & Register_afterEach_failing_serial_skip; todo: (name: string) => void; cb: Register_afterEach_cb_failing_serial; always: Register_afterEach_always_failing_serial; } interface Register_afterEach_failing_serial_skip { cb: Register_afterEach_cb_failing_serial_skip; always: Register_afterEach_always_failing_serial_skip; } interface Register_afterEach_failing_serial_todo { cb: Register_afterEach_cb_failing_serial_todo; always: Register_afterEach_always_failing_serial_todo; } interface Register_afterEach_failing_skip { serial: Register_afterEach_failing_serial_skip; cb: Register_afterEach_cb_failing_skip; always: Register_afterEach_always_failing_skip; } interface Register_afterEach_failing_todo { serial: Register_afterEach_failing_serial_todo; cb: Register_afterEach_cb_failing_todo; always: Register_afterEach_always_failing_todo; } interface Register_afterEach_cb { serial: CallbackRegisterBase & Register_afterEach_cb_serial; skip: CallbackRegisterBase & Register_afterEach_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_afterEach_cb_failing; always: Register_afterEach_always_cb; } interface Register_afterEach_cb_serial { skip: CallbackRegisterBase & Register_afterEach_cb_serial_skip; todo: (name: string) => void; failing: Register_afterEach_cb_failing_serial; always: Register_afterEach_always_cb_serial; } interface Register_afterEach_cb_serial_skip { failing: Register_afterEach_cb_failing_serial_skip; always: Register_afterEach_always_cb_serial_skip; } interface Register_afterEach_cb_serial_todo { failing: Register_afterEach_cb_failing_serial_todo; always: Register_afterEach_always_cb_serial_todo; } interface Register_afterEach_cb_skip { serial: Register_afterEach_cb_serial_skip; failing: Register_afterEach_cb_failing_skip; always: Register_afterEach_always_cb_skip; } interface Register_afterEach_cb_todo { serial: Register_afterEach_cb_serial_todo; failing: Register_afterEach_cb_failing_todo; always: Register_afterEach_always_cb_todo; } interface Register_afterEach_cb_failing { serial: CallbackRegisterBase & Register_afterEach_cb_failing_serial; skip: CallbackRegisterBase & Register_afterEach_cb_failing_skip; todo: (name: string) => void; always: Register_afterEach_always_cb_failing; } interface Register_afterEach_cb_failing_serial { skip: CallbackRegisterBase & Register_afterEach_cb_failing_serial_skip; todo: (name: string) => void; always: Register_afterEach_always_cb_failing_serial; } interface Register_afterEach_cb_failing_serial_skip { always: Register_afterEach_always_cb_failing_serial['skip']; } interface Register_afterEach_cb_failing_serial_todo { always: Register_afterEach_always_cb_failing_serial['todo']; } interface Register_afterEach_cb_failing_skip { serial: Register_afterEach_cb_failing_serial_skip; always: Register_afterEach_always_cb_failing_skip; } interface Register_afterEach_cb_failing_todo { serial: Register_afterEach_cb_failing_serial_todo; always: Register_afterEach_always_cb_failing_todo; } interface Register_afterEach_always { serial: RegisterBase & Register_afterEach_always_serial; skip: RegisterBase & Register_afterEach_always_skip; todo: (name: string) => void; failing: RegisterBase & Register_afterEach_always_failing; cb: CallbackRegisterBase & Register_afterEach_always_cb; } interface Register_afterEach_always_serial { skip: RegisterBase & Register_afterEach_always_serial_skip; todo: (name: string) => void; failing: Register_afterEach_always_failing_serial; cb: Register_afterEach_always_cb_serial; } interface Register_afterEach_always_serial_skip { failing: Register_afterEach_always_failing_serial_skip; cb: Register_afterEach_always_cb_serial_skip; } interface Register_afterEach_always_serial_todo { failing: Register_afterEach_always_failing_serial_todo; cb: Register_afterEach_always_cb_serial_todo; } interface Register_afterEach_always_skip { serial: Register_afterEach_always_serial_skip; failing: Register_afterEach_always_failing_skip; cb: Register_afterEach_always_cb_skip; } interface Register_afterEach_always_todo { serial: Register_afterEach_always_serial_todo; failing: Register_afterEach_always_failing_todo; cb: Register_afterEach_always_cb_todo; } interface Register_afterEach_always_failing { serial: RegisterBase & Register_afterEach_always_failing_serial; skip: RegisterBase & Register_afterEach_always_failing_skip; todo: (name: string) => void; cb: Register_afterEach_always_cb_failing; } interface Register_afterEach_always_failing_serial { skip: RegisterBase & Register_afterEach_always_failing_serial_skip; todo: (name: string) => void; cb: Register_afterEach_always_cb_failing_serial; } interface Register_afterEach_always_failing_serial_skip { cb: Register_afterEach_always_cb_failing_serial['skip']; } interface Register_afterEach_always_failing_serial_todo { cb: Register_afterEach_always_cb_failing_serial['todo']; } interface Register_afterEach_always_failing_skip { serial: Register_afterEach_always_failing_serial_skip; cb: Register_afterEach_always_cb_failing_skip; } interface Register_afterEach_always_failing_todo { serial: Register_afterEach_always_failing_serial_todo; cb: Register_afterEach_always_cb_failing_todo; } interface Register_afterEach_always_cb { serial: CallbackRegisterBase & Register_afterEach_always_cb_serial; skip: CallbackRegisterBase & Register_afterEach_always_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_afterEach_always_cb_failing; } interface Register_afterEach_always_cb_serial { skip: CallbackRegisterBase & Register_afterEach_always_cb_serial_skip; todo: (name: string) => void; failing: Register_afterEach_always_cb_failing_serial; } interface Register_afterEach_always_cb_serial_skip { failing: Register_afterEach_always_cb_failing_serial['skip']; } interface Register_afterEach_always_cb_serial_todo { failing: Register_afterEach_always_cb_failing_serial['todo']; } interface Register_afterEach_always_cb_skip { serial: Register_afterEach_always_cb_serial_skip; failing: Register_afterEach_always_cb_failing_skip; } interface Register_afterEach_always_cb_todo { serial: Register_afterEach_always_cb_serial_todo; failing: Register_afterEach_always_cb_failing_todo; } interface Register_afterEach_always_cb_failing { serial: CallbackRegisterBase & Register_afterEach_always_cb_failing_serial; skip: CallbackRegisterBase & Register_afterEach_always_cb_failing_skip; todo: (name: string) => void; } interface Register_afterEach_always_cb_failing_serial { skip: CallbackRegisterBase; todo: (name: string) => void; } interface Register_afterEach_always_cb_failing_skip { serial: Register_afterEach_always_cb_failing_serial['skip']; } interface Register_afterEach_always_cb_failing_todo { serial: Register_afterEach_always_cb_failing_serial['todo']; } interface Register_cb { serial: CallbackRegisterBase & Register_cb_serial; before: Register_before_cb; after: Register_after_cb; skip: CallbackRegisterBase & Register_cb_skip; todo: (name: string) => void; failing: CallbackRegisterBase & Register_cb_failing; only: CallbackRegisterBase & Register_cb_only; beforeEach: Register_beforeEach_cb; afterEach: Register_afterEach_cb; always: Register_always_cb; } interface Register_cb_serial { before: Register_before_cb_serial; after: Register_after_cb_serial; skip: CallbackRegisterBase & Register_cb_serial_skip; todo: (name: string) => void; failing: Register_cb_failing_serial; only: Register_cb_only_serial; beforeEach: Register_beforeEach_cb_serial; afterEach: Register_afterEach_cb_serial; always: Register_always_cb_serial; } interface Register_cb_serial_skip { before: Register_before_cb_serial_skip; after: Register_after_cb_serial_skip; failing: Register_cb_failing_serial_skip; beforeEach: Register_beforeEach_cb_serial_skip; afterEach: Register_afterEach_cb_serial_skip; always: Register_always_cb_serial_skip; } interface Register_cb_serial_todo { before: Register_before_cb_serial_todo; after: Register_after_cb_serial_todo; failing: Register_cb_failing_serial_todo; beforeEach: Register_beforeEach_cb_serial_todo; afterEach: Register_afterEach_cb_serial_todo; always: Register_always_cb_serial_todo; } interface Register_cb_skip { serial: Register_cb_serial_skip; before: Register_before_cb_skip; after: Register_after_cb_skip; failing: Register_cb_failing_skip; beforeEach: Register_beforeEach_cb_skip; afterEach: Register_afterEach_cb_skip; always: Register_always_cb_skip; } interface Register_cb_todo { serial: Register_cb_serial_todo; before: Register_before_cb_todo; after: Register_after_cb_todo; failing: Register_cb_failing_todo; beforeEach: Register_beforeEach_cb_todo; afterEach: Register_afterEach_cb_todo; always: Register_always_cb_todo; } interface Register_cb_failing { serial: CallbackRegisterBase & Register_cb_failing_serial; before: Register_before_cb_failing; after: Register_after_cb_failing; skip: CallbackRegisterBase & Register_cb_failing_skip; todo: (name: string) => void; only: CallbackRegisterBase & Register_cb_failing_only; beforeEach: Register_beforeEach_cb_failing; afterEach: Register_afterEach_cb_failing; always: Register_always_cb_failing; } interface Register_cb_failing_serial { before: Register_before_cb_failing_serial; after: Register_after_cb_failing_serial; skip: CallbackRegisterBase & Register_cb_failing_serial_skip; todo: (name: string) => void; only: Register_cb_failing_only['serial']; beforeEach: Register_beforeEach_cb_failing_serial; afterEach: Register_afterEach_cb_failing_serial; always: Register_always_cb_failing_serial; } interface Register_cb_failing_serial_skip { before: Register_before_cb_failing_serial['skip']; after: Register_after_cb_failing_serial_skip; beforeEach: Register_beforeEach_cb_failing_serial['skip']; afterEach: Register_afterEach_cb_failing_serial_skip; always: Register_always_cb_failing_serial_skip; } interface Register_cb_failing_serial_todo { before: Register_before_cb_failing_serial['todo']; after: Register_after_cb_failing_serial_todo; beforeEach: Register_beforeEach_cb_failing_serial['todo']; afterEach: Register_afterEach_cb_failing_serial_todo; always: Register_always_cb_failing_serial_todo; } interface Register_cb_failing_skip { serial: Register_cb_failing_serial_skip; before: Register_before_cb_failing_skip; after: Register_after_cb_failing_skip; beforeEach: Register_beforeEach_cb_failing_skip; afterEach: Register_afterEach_cb_failing_skip; always: Register_always_cb_failing_skip; } interface Register_cb_failing_todo { serial: Register_cb_failing_serial_todo; before: Register_before_cb_failing_todo; after: Register_after_cb_failing_todo; beforeEach: Register_beforeEach_cb_failing_todo; afterEach: Register_afterEach_cb_failing_todo; always: Register_always_cb_failing_todo; } interface Register_cb_failing_only { serial: CallbackRegisterBase; } interface Register_cb_only { serial: CallbackRegisterBase & Register_cb_only_serial; failing: Register_cb_failing_only; } interface Register_cb_only_serial { failing: Register_cb_failing_only['serial']; } interface Register_always { after: Register_after_always; afterEach: Register_afterEach_always; } interface Register_always_serial { after: Register_after_always_serial; failing: Register_always_failing_serial; afterEach: Register_afterEach_always_serial; cb: Register_always_cb_serial; } interface Register_always_serial_skip { after: Register_after_always_serial_skip; failing: Register_always_failing_serial_skip; afterEach: Register_afterEach_always_serial_skip; cb: Register_always_cb_serial_skip; } interface Register_always_serial_todo { after: Register_after_always_serial_todo; failing: Register_always_failing_serial_todo; afterEach: Register_afterEach_always_serial_todo; cb: Register_always_cb_serial_todo; } interface Register_always_skip { serial: Register_always_serial_skip; after: Register_after_always_skip; failing: Register_always_failing_skip; afterEach: Register_afterEach_always_skip; cb: Register_always_cb_skip; } interface Register_always_todo { serial: Register_always_serial_todo; after: Register_after_always_todo; failing: Register_always_failing_todo; afterEach: Register_afterEach_always_todo; cb: Register_always_cb_todo; } interface Register_always_failing { after: Register_after_always_failing; afterEach: Register_afterEach_always_failing; cb: Register_always_cb_failing; } interface Register_always_failing_serial { after: Register_after_always_failing_serial; afterEach: Register_afterEach_always_failing_serial; cb: Register_always_cb_failing_serial; } interface Register_always_failing_serial_skip { after: Register_after_always_failing_serial_skip; afterEach: Register_afterEach_always_failing_serial_skip; cb: Register_always_cb_failing_serial_skip; } interface Register_always_failing_serial_todo { after: Register_after_always_failing_serial_todo; afterEach: Register_afterEach_always_failing_serial_todo; cb: Register_always_cb_failing_serial_todo; } interface Register_always_failing_skip { serial: Register_always_failing_serial_skip; after: Register_after_always_failing_skip; afterEach: Register_afterEach_always_failing_skip; cb: Register_always_cb_failing_skip; } interface Register_always_failing_todo { serial: Register_always_failing_serial_todo; after: Register_after_always_failing_todo; afterEach: Register_afterEach_always_failing_todo; cb: Register_always_cb_failing_todo; } interface Register_always_cb { after: Register_after_always_cb; afterEach: Register_afterEach_always_cb; } interface Register_always_cb_serial { after: Register_after_always_cb_serial; failing: Register_always_cb_failing_serial; afterEach: Register_afterEach_always_cb_serial; } interface Register_always_cb_serial_skip { after: Register_after_always_cb_serial_skip; failing: Register_always_cb_failing_serial_skip; afterEach: Register_afterEach_always_cb_serial_skip; } interface Register_always_cb_serial_todo { after: Register_after_always_cb_serial_todo; failing: Register_always_cb_failing_serial_todo; afterEach: Register_afterEach_always_cb_serial_todo; } interface Register_always_cb_skip { serial: Register_always_cb_serial_skip; after: Register_after_always_cb_skip; failing: Register_always_cb_failing_skip; afterEach: Register_afterEach_always_cb_skip; } interface Register_always_cb_todo { serial: Register_always_cb_serial_todo; after: Register_after_always_cb_todo; failing: Register_always_cb_failing_todo; afterEach: Register_afterEach_always_cb_todo; } interface Register_always_cb_failing { after: Register_after_always_cb_failing; afterEach: Register_afterEach_always_cb_failing; } interface Register_always_cb_failing_serial { after: Register_after_always_cb_failing_serial; afterEach: Register_afterEach_always_cb_failing_serial; } interface Register_always_cb_failing_serial_skip { after: Register_after_always_cb_failing_serial['skip']; afterEach: Register_afterEach_always_cb_failing_serial['skip']; } interface Register_always_cb_failing_serial_todo { after: Register_after_always_cb_failing_serial['todo']; afterEach: Register_afterEach_always_cb_failing_serial['todo']; } interface Register_always_cb_failing_skip { serial: Register_always_cb_failing_serial_skip; after: Register_after_always_cb_failing_skip; afterEach: Register_afterEach_always_cb_failing_skip; } interface Register_always_cb_failing_todo { serial: Register_always_cb_failing_serial_todo; after: Register_after_always_cb_failing_todo; afterEach: Register_afterEach_always_cb_failing_todo; }