##// END OF EJS Templates
corrected i18n, css modules to support requirejs optimizer...
corrected i18n, css modules to support requirejs optimizer i18n bundles now conforms js modules with default exports (breaking change!)

File last commit:

r1:b6ccfccf314f default
r53:deb0ed6fb680 v1.0.7 default
Show More
Tap.ts
148 lines | 3.5 KiB | video/mp2t | TypeScriptLexer
cin
typescript strict mode...
r1 import { stringify } from "yaml";
export interface TapWriter {
version(): void;
plan(n: number): void;
fail(e: any): void;
ok(msg: string): void;
skip(msg: string): void;
bailOut(msg: string): void;
comment(msg: string): void;
yaml(data: any): void;
end(): void;
}
enum TapState {
Init,
VersionWritten,
Ready,
ReadyWithoutPlan,
End
}
export abstract class AbstractTapWriter implements TapWriter {
private _state = TapState.Init;
private _version = 13;
private _testIndex = 1;
private _moveVersion() {
switch (this._state) {
case TapState.Init:
this._state = TapState.VersionWritten;
break;
default:
throw new Error("Invalid operation");
}
}
private _movePlan() {
switch (this._state) {
case TapState.Init:
case TapState.VersionWritten:
this._state = TapState.Ready;
break;
case TapState.ReadyWithoutPlan:
this._state = TapState.End;
break;
default:
throw new Error("Invalid operation");
}
}
private _moveTestResult() {
switch (this._state) {
case TapState.Init:
case TapState.VersionWritten:
this._state = TapState.ReadyWithoutPlan;
break;
case TapState.Ready:
case TapState.ReadyWithoutPlan:
break;
default:
throw new Error("Invalid operation");
}
}
private _moveEnd() {
switch (this._state) {
case TapState.End:
throw new Error("Invalid operation");
default:
this._state = TapState.End;
}
}
private _moveDiag() {
switch (this._state) {
case TapState.Init:
case TapState.VersionWritten:
this._state = TapState.ReadyWithoutPlan;
break;
case TapState.Ready:
case TapState.ReadyWithoutPlan:
break;
default:
throw new Error("Invalid operation");
}
}
version() {
this._moveVersion();
this._writeLine(`TAP version ${this._version}`);
}
plan(n: number) {
this._movePlan();
this._writeLine(`1..${n}`);
}
fail(e: any) {
this._moveTestResult();
this._writeText(`not ok ${this._testIndex} ${e}`);
this._testIndex++;
}
ok(msg: string) {
this._moveTestResult();
this._writeText(`ok ${this._testIndex} ${msg}`);
this._testIndex++;
}
skip(msg: string) {
this._moveTestResult();
this._writeText(`ok ${this._testIndex} # SKIPPED: ${msg}`);
this._testIndex++;
}
bailOut(msg: string) {
this._moveEnd();
this._writeText(`Bail out! ${msg}`);
}
comment(msg: string) {
this._moveDiag();
this._writeText(`# ${msg}`);
}
yaml(data: any) {
this._moveDiag();
this._writeLine(" ---");
stringify(data).split("\r\n?").forEach(line => this._writeLine(" " + line));
this._writeLine(" ...");
}
end() {
this._moveEnd();
}
private _writeText(text: string) {
text.split("\r\n?").forEach((line, i) => this._writeLine(i ? "# " + line : line));
}
abstract _writeLine(text: string): void;
}