From 876ecb73881cc739d72c2d2b3bc146bffeee17ac Mon Sep 17 00:00:00 2001 From: Roberto Prevato Date: Thu, 25 Jun 2020 22:35:41 +0200 Subject: [PATCH] improves queue tests to use async await --- test/queues.test.ts | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/test/queues.test.ts b/test/queues.test.ts index 8669833d1..819785ee7 100644 --- a/test/queues.test.ts +++ b/test/queues.test.ts @@ -18,20 +18,19 @@ import {LifoQueue} from "../src/queues"; -test("LifoQueue `get` awaits for items in the queue", async (done) => { +test("LifoQueue `get` awaits for items in the queue", async () => { let result = -1; const queue = new LifoQueue(); - queue.get().then((value: number) => { - expect(value).toBe(result); - - done(); - }); - setTimeout(() => { result = new Date().getTime(); queue.push(result); }, 10); + + const value = await queue.get(); + + expect(value).toBe(result); + expect(value).toBeGreaterThan(-1); }); test("LifoQueue resolves items in LIFO order", async (done) => { @@ -70,27 +69,12 @@ test("LifoQueue resolves items in LIFO order", async (done) => { }, 30); }); -test("LifoQueue resolves `get` as soon as items are pushed", async (done) => { +test("LifoQueue resolves `get` as soon as items are pushed", async () => { let result1 = -1; let result2 = -1; let result3 = -1; const queue = new LifoQueue(); - // Note: here queue.get() is called in advance. - // Since promises are resolved as soon as they become available, - // the end result of Promise.all looks like FIFO. - // This is right and cannot be changed: it depends on how the queue is used - // in this specific case. - Promise.all([queue.get(), queue.get(), queue.get()]).then( - ([value1, value2, value3]) => { - expect(value1).toBe(result1); - expect(value2).toBe(result2); - expect(value3).toBe(result3); - - done(); - } - ); - setTimeout(() => { result1 = new Date().getTime(); queue.push(result1); @@ -105,6 +89,21 @@ test("LifoQueue resolves `get` as soon as items are pushed", async (done) => { result3 = new Date().getTime(); queue.push(result3); }, 30); + + const [value1, value2, value3] = await Promise.all([ + queue.get(), + queue.get(), + queue.get(), + ]); + + // Note: here queue.get() is called in advance. + // Since promises are resolved as soon as they become available, + // the end result of Promise.all looks like FIFO. + // This is right and cannot be changed: it depends on how the queue is used + // in this specific case. + expect(value1).toBe(result1); + expect(value2).toBe(result2); + expect(value3).toBe(result3); }); test("LifoQueue returns first the last items in the queue", async () => {