zora
Version:
tap test harness for nodejs and browsers
116 lines (115 loc) • 3.52 kB
TypeScript
export declare const enum Operator {
EQUAL = "equal",
NOT_EQUAL = "notEqual",
IS = "is",
OK = "ok",
NOT_OK = "notOk",
IS_NOT = "isNot",
FAIL = "fail",
THROWS = "throws",
DOES_NOT_THROW = "doesNotThrow"
}
export interface Result {
pass: boolean;
description: string;
id?: number;
skip?: boolean;
}
export interface TestResult extends Result {
executionTime: number;
}
export interface AssertionResult extends Result {
operator: Operator;
expected: any;
actual: any;
at?: string;
}
export interface SpecFunction {
(t: Assert): any;
}
export interface ComparatorAssertionFunction {
<T>(actual: T, expected: T, description?: string): AssertionResult;
}
export interface BooleanAssertionFunction {
<T>(actual: T, description?: string): AssertionResult;
}
export interface ErrorAssertionFunction {
(fn: Function, expected?: string | RegExp | Function, description?: string): AssertionResult;
}
export interface MessageAssertionFunction {
(message?: string): AssertionResult;
}
export interface TestFunction {
(description: string, spec: SpecFunction, options?: object): Promise<TestResult>;
}
export interface Assert {
equal: ComparatorAssertionFunction;
equals: ComparatorAssertionFunction;
eq: ComparatorAssertionFunction;
deepEqual: ComparatorAssertionFunction;
notEqual: ComparatorAssertionFunction;
notEquals: ComparatorAssertionFunction;
notEq: ComparatorAssertionFunction;
notDeepEqual: ComparatorAssertionFunction;
is: ComparatorAssertionFunction;
same: ComparatorAssertionFunction;
isNot: ComparatorAssertionFunction;
notSame: ComparatorAssertionFunction;
ok: BooleanAssertionFunction;
truthy: BooleanAssertionFunction;
notOk: BooleanAssertionFunction;
falsy: BooleanAssertionFunction;
fail: MessageAssertionFunction;
throws: ErrorAssertionFunction;
doesNotThrow: ErrorAssertionFunction;
test: TestFunction;
skip: TestFunction;
only: TestFunction;
}
export declare type AssertionFunction = ComparatorAssertionFunction | BooleanAssertionFunction | ErrorAssertionFunction | MessageAssertionFunction;
export interface Counter {
successCount: number;
failureCount: number;
skipCount: number;
count: number;
}
export interface Test extends AsyncIterable<Message<any>>, TestResult, Counter {
readonly routine: Promise<any>;
readonly length: number;
readonly error?: any;
}
export interface TestCounter extends Counter {
update(assertion: Test | AssertionResult): void;
}
export interface TestHarnessConfiguration {
runOnly?: boolean;
indent?: boolean;
}
export interface TestHarness extends Assert, AsyncIterable<Message<any>>, Counter {
report: (reporter?: Reporter) => Promise<void>;
pass: boolean;
}
export interface RootTest extends TestFunction {
indent: () => void;
skip: TestFunction;
}
export declare const enum MessageType {
TEST_START = "TEST_START",
ASSERTION = "ASSERTION",
TEST_END = "TEST_END",
BAIL_OUT = "BAIL_OUT"
}
export interface Message<T> {
offset: number;
type: MessageType;
data: T;
}
export interface Reporter {
(stream: AsyncIterable<Message<any>>): Promise<void>;
}
export declare type StartTestMessage = Message<{
description: string;
}>;
export declare type AssertionMessage = Message<Test | AssertionResult>;
export declare type TestEndMessage = Message<Test>;
export declare type BailoutMessage = Message<Error>;