##// END OF EJS Templates
Added childContainer service to container services, ServiceContaier is destroyable, fixed browser Uuid version
Added childContainer service to container services, ServiceContaier is destroyable, fixed browser Uuid version

File last commit:

r115:691199f665e0 ioc ts support
r146:f3f5c56d3b3e v1.4.0-rc5 default
Show More
CancellationTests.ts
88 lines | 2.3 KiB | video/mp2t | TypeScriptLexer
/ src / test / ts / tests / CancellationTests.ts
cin
migrating tests to the new project structure
r89 import { Cancellation } from "../Cancellation";
cin
corrected code to support ts strict mode...
r115 import { delay, notImplemented } from "../safe";
cin
migrating tests to the new project structure
r89 import { test } from "./TestTraits";
test("standalone cancellation", async t => {
cin
corrected code to support ts strict mode...
r115 let doCancel: (e: any) => void = notImplemented;
cin
migrating tests to the new project structure
r89
const ct = new Cancellation(cancel => {
doCancel = cancel;
});
let counter = 0;
const reason = "BILL";
t.true(ct.isSupported(), "Cancellation must be supported");
t.false(ct.isRequested(), "Cancellation shouldn't be requested");
ct.throwIfRequested();
t.pass("The exception shouldn't be thrown unless the cancellation is requested");
ct.register(() => counter++);
t.equals(counter, 0, "counter should be zero");
ct.register(() => counter++).destroy();
doCancel(reason);
t.true(ct.isRequested(), "Cancellation should be requested");
t.equals(counter, 1, "The registered callback should be triggered");
ct.register(() => counter++);
t.equals(counter, 2, "The callback should be triggered immediately");
let msg;
ct.register(e => msg = e);
t.equals(msg, reason, "The cancellation reason should be passed to callback");
try {
msg = null;
ct.throwIfRequested();
t.fail("The exception should be thrown");
} catch (e) {
msg = e;
}
t.equals(msg, reason, "The cancellation reason should be catched");
});
test("async cancellation", async t => {
const ct = new Cancellation(cancel => {
cancel("STOP!");
});
try {
await delay(0, ct);
t.fail("Should thow the exception");
} catch (e) {
t.equals(e, "STOP!", "Should throw the cancellation reason");
}
});
test("cancel with external event", async t => {
const ct = new Cancellation(cancel => {
setTimeout(x => cancel("STOP!"), 0);
});
try {
await delay(10000, ct);
t.fail("Should thow the exception");
} catch (e) {
t.equals(e, "STOP!", "Should throw the cancellation reason");
}
});
test("operation normal flow", async t => {
let htimeout;
const ct = new Cancellation(cancel => {
htimeout = setTimeout(() => cancel("STOP!"), 1000);
});
try {
await delay(0, ct);
t.pass("Should pass");
} finally {
clearTimeout(htimeout);
}
});