##// END OF EJS Templates
added provided and configure methods to the fluent container configuration, added applyConfig method to the container
added provided and configure methods to the fluent container configuration, added applyConfig method to the container

File last commit:

r115:691199f665e0 ioc ts support
r142:be7edf08a115 v1.4.0-rc3 default
Show More
SafeTests.ts
95 lines | 2.8 KiB | video/mp2t | TypeScriptLexer
cin
migrating tests to the new project structure
r89 import { Cancellation } from "../Cancellation";
cin
corrected code to support ts strict mode...
r115 import { first, isPromise, firstWhere, delay, nowait, notImplemented } from "../safe";
cin
migrating tests to the new project structure
r89 import { test } from "./TestTraits";
test("await delay test", async t => {
// schedule delay
let resolved = false;
let res = delay(0).then(() => resolved = true);
t.false(resolved, "the delay should be async");
await res;
t.pass("await delay");
// create cancellation token
cin
corrected code to support ts strict mode...
r115 let cancel: (e?: any) => void = notImplemented;
cin
migrating tests to the new project structure
r89 const ct = new Cancellation(c => cancel = c);
// schedule delay
resolved = false;
res = delay(0, ct).then(() => resolved = true);
t.false(resolved, "created delay with ct");
// cancel
cancel();
try {
await res;
t.fail("the delay should fail when it is cancelled");
} catch {
t.pass("the delay is cancelled");
}
t.throws(() => {
// try schedule delay after the cancellation is requested
nowait(delay(0, ct));
}, "Should throw if cancelled before start");
});
test("sequemce test", async t => {
const sequence = ["a", "b", "c"];
cin
corrected code to support ts strict mode...
r115 const empty: string[] = [];
cin
migrating tests to the new project structure
r89
// synchronous tests
t.equals(first(sequence), "a", "Should return the first element");
t.equals(firstWhere(sequence, x => x === "b"), "b", "Should get the second element");
cin
corrected code to support ts strict mode...
r115 let v: string | undefined;
let e: Error | undefined;
cin
migrating tests to the new project structure
r89 first(sequence, x => v = x);
t.equal(v, "a", "The callback should be called for the first element");
firstWhere(sequence, x => x === "b", x => v = x);
t.equal(v, "b", "The callback should be called for the second element");
t.throws(() => {
first(empty);
}, "Should throw when the sequence is empty");
t.throws(() => {
firstWhere(empty, x => x === "b");
}, "Should throw when the sequence is empty");
t.throws(() => {
first(empty, x => v = x);
}, "Should throw when the sequence is empty");
t.throws(() => {
firstWhere(empty, x => x === "b", x => v = x);
}, "Should throw when the sequence is empty");
t.throws(() => {
firstWhere(sequence, x => x === "z");
}, "Should throw when the element isn't found");
t.throws(() => {
firstWhere(sequence, x => x === "z", x => v = x);
}, "Should throw when the element isn't found");
cin
corrected code to support ts strict mode...
r115 first(empty, undefined, x => e = x);
cin
migrating tests to the new project structure
r89 t.true(e, "The errorback should be called for the empty sequence");
// async tests
const asyncSequence = Promise.resolve(sequence);
const asyncEmptySequence = Promise.resolve(empty);
const promise = first(asyncSequence);
t.true(isPromise(promise), "Should return promise");
v = await promise;
t.equal(v, "a", "Should return the first element");
v = await new Promise(resolve => first(asyncSequence, resolve));
t.equal(v, "a", "The callback should be called for the first element");
});