Home Reference Source Test

test/specs/generic/utils/array/ThrottledQueue.spec.js

describe('ThrottledQueue', () => {
    it('can enqueue and dequeue like a Queue', () => {
        const queue = new ThrottledQueue(1000);

        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        queue.enqueue(4);

        expect(queue.dequeue()).toBe(1);
        expect(queue.dequeueMulti(2)).toEqual([2, 3]);
        expect(queue.isAvailable()).toBeTruthy();
        expect(queue.available).toBe(1);

        queue.stop();
    });

    it('can throttle output and call callback', (done) => {
        let queue, expected = 2;
        queue = new ThrottledQueue(1, 1, 50, 10, () => {
            expect(queue.dequeue()).toBe(expected);
            expected++;
            if (expected === 5) {
                queue.stop();
                done();
            }
        });
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        queue.enqueue(4);
        expect(queue.dequeue()).toBe(1);
        expect(queue.dequeue()).toBeNull();
    });
});