UNPKG

typed-utilities

Version:
40 lines (36 loc) 1.06 kB
"use strict"; var _ = require(".."); describe(`AsyncLock`, () => { test(`use AsyncLock`, async () => { const lock = new _.AsyncLock(); expect(lock.length).toEqual(0); await lock.use(async () => { expect(lock.length).toEqual(1); }); expect(lock.length).toEqual(0); let acquired = null; const results = []; const errors = []; const join = (0, _.mapAsyncConcurrent)((0, _.range)(100), key => lock.use(async () => { expect(acquired).toEqual(null); acquired = key; await (0, _.sleep)(0); expect(acquired).toEqual(key); acquired = null; if (key % 2 === 0) { return key; } throw new Error(); }).then(result => { results.push(result); }).catch(error => { errors.push(error); })); expect(lock.length).toEqual(100); await join; expect(lock.length).toEqual(0); expect(results).toEqual((0, _.range)(100).filter(key => key % 2 === 0)); expect(errors).toHaveLength(50); }); }); //# sourceMappingURL=AsyncLock.test.js.map