@webda/core
Version:
Expose API with Lambda
55 lines • 2.49 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { suite, test } from "@testdeck/mocha";
import * as assert from "assert";
import { Throttler } from "./throttler.js";
let ThrottlerTest = class ThrottlerTest {
async test() {
let resolvers = [];
let t = new Throttler(2);
t.queue(() => new Promise(resolve => resolvers.push(resolve)), "P1");
t.queue(() => new Promise(resolve => resolvers.push(resolve)), "P2");
t.execute(() => new Promise(resolve => resolvers.push(resolve)), "P3");
t.queue(() => new Promise(resolve => resolvers.push(resolve)), "P4");
t.queue(() => new Promise(resolve => resolvers.push(resolve)), "P5");
t.queue(() => new Promise((_, reject) => resolvers.push(reject)), "P6");
t.queue(() => new Promise(resolve => resolvers.push(resolve)), "P7");
assert.strictEqual(t.getSize(), 7);
// @ts-ignore
resolvers.shift()();
assert.strictEqual(t.getInProgress().length, 2);
t.setConcurrency(1);
// @ts-ignore
resolvers.shift()();
await new Promise(resolve => setImmediate(resolve));
let curs = t.getInProgress();
assert.strictEqual(curs.length, 1, `Currents ${curs}`);
t.setConcurrency(3);
assert.strictEqual(t.getInProgress().length, 3);
// REFACTOR . >= 4.0.0 | replace("waitForCompletion", "wait")
let p = t.waitForCompletion();
// END_REFACTOR
resolvers.forEach(r => r());
await new Promise(resolve => setImmediate(resolve));
resolvers.forEach(r => r());
await p;
await t.wait();
}
async staticMethod() {
await Throttler.run([async () => { }], 2);
}
};
__decorate([
test
], ThrottlerTest.prototype, "test", null);
__decorate([
test
], ThrottlerTest.prototype, "staticMethod", null);
ThrottlerTest = __decorate([
suite
], ThrottlerTest);
//# sourceMappingURL=throttler.spec.js.map