test: add priority queue test suite
[poolifier.git] / tests / priority-queue.test.mjs
1 import { expect } from 'expect'
2
3 // eslint-disable-next-line n/no-missing-import, import/no-unresolved
4 import { PriorityQueue } from '../lib/priority-queue.cjs'
5
6 describe.skip('Priority queue test suite', () => {
7 it('Verify enqueue() behavior', () => {
8 const priorityQueue = new PriorityQueue()
9 let rtSize = priorityQueue.enqueue(1)
10 expect(priorityQueue.size).toBe(1)
11 expect(priorityQueue.maxSize).toBe(1)
12 expect(rtSize).toBe(priorityQueue.size)
13 expect(priorityQueue.nodeArray).toStrictEqual([{ data: 1, priority: 0 }])
14 rtSize = priorityQueue.enqueue(2)
15 expect(priorityQueue.size).toBe(2)
16 expect(priorityQueue.maxSize).toBe(2)
17 expect(rtSize).toBe(priorityQueue.size)
18 expect(priorityQueue.nodeArray).toStrictEqual([
19 { data: 1, priority: 0 },
20 { data: 2, priority: 0 }
21 ])
22 rtSize = priorityQueue.enqueue(3)
23 expect(priorityQueue.size).toBe(3)
24 expect(priorityQueue.maxSize).toBe(3)
25 expect(rtSize).toBe(priorityQueue.size)
26 expect(priorityQueue.nodeArray).toStrictEqual([
27 { data: 1, priority: 0 },
28 { data: 2, priority: 0 },
29 { data: 3, priority: 0 }
30 ])
31 rtSize = priorityQueue.enqueue(3, -1)
32 expect(priorityQueue.size).toBe(4)
33 expect(priorityQueue.maxSize).toBe(4)
34 expect(rtSize).toBe(priorityQueue.size)
35 expect(priorityQueue.nodeArray).toStrictEqual([
36 { data: 3, priority: -1 },
37 { data: 1, priority: 0 },
38 { data: 2, priority: 0 },
39 { data: 3, priority: 0 }
40 ])
41 rtSize = priorityQueue.enqueue(1, 1)
42 expect(priorityQueue.size).toBe(5)
43 expect(priorityQueue.maxSize).toBe(5)
44 expect(rtSize).toBe(priorityQueue.size)
45 expect(priorityQueue.nodeArray).toStrictEqual([
46 { data: 3, priority: -1 },
47 { data: 1, priority: 0 },
48 { data: 2, priority: 0 },
49 { data: 3, priority: 0 },
50 { data: 1, priority: 1 }
51 ])
52 })
53
54 it('Verify dequeue() behavior', () => {
55 const priorityQueue = new PriorityQueue()
56 priorityQueue.enqueue(1)
57 priorityQueue.enqueue(2, -1)
58 priorityQueue.enqueue(3)
59 let rtItem = priorityQueue.dequeue()
60 expect(priorityQueue.size).toBe(2)
61 expect(priorityQueue.maxSize).toBe(3)
62 expect(rtItem).toBe(2)
63 expect(priorityQueue.nodeArray).toStrictEqual([
64 { data: 1, priority: 0 },
65 { data: 3, priority: 0 }
66 ])
67 rtItem = priorityQueue.dequeue()
68 expect(priorityQueue.size).toBe(1)
69 expect(priorityQueue.maxSize).toBe(3)
70 expect(rtItem).toBe(1)
71 expect(priorityQueue.nodeArray).toStrictEqual([{ data: 3, priority: 0 }])
72 rtItem = priorityQueue.dequeue()
73 expect(priorityQueue.size).toBe(0)
74 expect(priorityQueue.maxSize).toBe(3)
75 expect(rtItem).toBe(3)
76 expect(priorityQueue.nodeArray).toStrictEqual([])
77 })
78
79 it('Verify peekFirst() behavior', () => {
80 const priorityQueue = new PriorityQueue()
81 priorityQueue.enqueue(1)
82 priorityQueue.enqueue(2)
83 priorityQueue.enqueue(3)
84 expect(priorityQueue.size).toBe(3)
85 expect(priorityQueue.peekFirst()).toBe(1)
86 expect(priorityQueue.size).toBe(3)
87 })
88
89 it('Verify peekLast() behavior', () => {
90 const priorityQueue = new PriorityQueue()
91 priorityQueue.enqueue(1)
92 priorityQueue.enqueue(2)
93 priorityQueue.enqueue(3)
94 expect(priorityQueue.size).toBe(3)
95 expect(priorityQueue.peekLast()).toBe(3)
96 expect(priorityQueue.size).toBe(3)
97 })
98
99 it('Verify clear() behavior', () => {
100 const priorityQueue = new PriorityQueue()
101 priorityQueue.enqueue(1)
102 priorityQueue.enqueue(2)
103 priorityQueue.enqueue(3)
104 expect(priorityQueue.size).toBe(3)
105 expect(priorityQueue.maxSize).toBe(3)
106 expect(priorityQueue.nodeArray).toStrictEqual([
107 { data: 1, priority: 0 },
108 { data: 2, priority: 0 },
109 { data: 3, priority: 0 }
110 ])
111 priorityQueue.clear()
112 expect(priorityQueue.size).toBe(0)
113 expect(priorityQueue.maxSize).toBe(0)
114 expect(priorityQueue.nodeArray).toStrictEqual([])
115 })
116 })