1 /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2 import { expect
} from
'expect';
4 import { Queue
} from
'../../src/utils/Queue';
6 describe('Queue test suite', () => {
7 it('Verify enqueue() behavior', () => {
8 const queue
= new Queue();
9 let rtSize
= queue
.enqueue(1);
10 expect(queue
.size
).toBe(1);
11 expect(rtSize
).toBe(queue
.size
);
12 expect((queue
as any).head
).toBe(0);
13 expect((queue
as any).tail
).toBe(1);
14 expect((queue
as any).items
).toStrictEqual({ 0: 1 });
15 rtSize
= queue
.enqueue(2);
16 expect(queue
.size
).toBe(2);
17 expect(rtSize
).toBe(queue
.size
);
18 expect((queue
as any).head
).toBe(0);
19 expect((queue
as any).tail
).toBe(2);
20 expect((queue
as any).items
).toStrictEqual({ 0: 1, 1: 2 });
21 rtSize
= queue
.enqueue(3);
22 expect(queue
.size
).toBe(3);
23 expect(rtSize
).toBe(queue
.size
);
24 expect((queue
as any).head
).toBe(0);
25 expect((queue
as any).tail
).toBe(3);
26 expect((queue
as any).items
).toStrictEqual({ 0: 1, 1: 2, 2: 3 });
29 it('Verify dequeue() behavior', () => {
30 const queue
= new Queue();
34 let rtItem
= queue
.dequeue();
35 expect(queue
.size
).toBe(2);
36 expect(rtItem
).toBe(1);
37 expect((queue
as any).head
).toBe(1);
38 expect((queue
as any).tail
).toBe(3);
39 expect((queue
as any).items
).toStrictEqual({ 1: 2, 2: 3 });
40 rtItem
= queue
.dequeue();
41 expect(queue
.size
).toBe(1);
42 expect(rtItem
).toBe(2);
43 expect((queue
as any).head
).toBe(2);
44 expect((queue
as any).tail
).toBe(3);
45 expect((queue
as any).items
).toStrictEqual({ 2: 3 });
46 rtItem
= queue
.dequeue();
47 expect(queue
.size
).toBe(0);
48 expect(rtItem
).toBe(3);
49 expect((queue
as any).head
).toBe(0);
50 expect((queue
as any).tail
).toBe(0);
51 expect((queue
as any).items
).toStrictEqual({});