Initial support for job queue

This commit is contained in:
Evan Hahn 2021-04-29 18:02:27 -05:00 committed by GitHub
parent 1238cca538
commit bbd7fd3854
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 1708 additions and 28 deletions

View file

@ -0,0 +1,36 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
/* eslint-disable no-restricted-syntax */
import { assert } from 'chai';
import { AsyncQueue } from '../util/AsyncQueue';
describe('AsyncQueue', () => {
it('yields values as they are added, even if they were added before consuming', async () => {
const queue = new AsyncQueue<number>();
queue.add(1);
queue.add(2);
const resultPromise = (async () => {
const results = [];
for await (const value of queue) {
results.push(value);
if (value === 4) {
break;
}
}
return results;
})();
queue.add(3);
queue.add(4);
// Ignored, because we should've stopped iterating.
queue.add(5);
assert.deepEqual(await resultPromise, [1, 2, 3, 4]);
});
});