fix: fix iteration in fixed queue if start > size
[poolifier.git] / tests / fixed-priority-queue.test.mjs
index b70bc17f7e760072bafa4fc9c381b4703c2337ad..ef238aefe79c6ff104775b86f4010d83296aa8ae 100644 (file)
@@ -5,10 +5,10 @@
 //   FixedPriorityQueue
 // } from '../lib/fixed-priority-queue.cjs'
 
-// describe('Fixed Priority queue test suite', () => {
+// describe('Fixed priority queue test suite', () => {
 //   it('Verify constructor() behavior', () => {
 //     expect(() => new FixedPriorityQueue('')).toThrow(
-//       new TypeError('Invalid fixed priority queue size:  is not an integer')
+//       new TypeError("Invalid fixed priority queue size: '' is not an integer")
 //     )
 //     expect(() => new FixedPriorityQueue(-1)).toThrow(
 //       new RangeError('Invalid fixed priority queue size: -1 < 0')
@@ -28,7 +28,8 @@
 //   })
 
 //   it('Verify enqueue() behavior', () => {
-//     const fixedPriorityQueue = new FixedPriorityQueue()
+//     const queueSize = 5
+//     const fixedPriorityQueue = new FixedPriorityQueue(queueSize)
 //     let rtSize = fixedPriorityQueue.enqueue(1)
 //     expect(fixedPriorityQueue.start).toBe(0)
 //     expect(fixedPriorityQueue.size).toBe(1)
@@ -37,6 +38,7 @@
 //     expect(fixedPriorityQueue.nodeArray).toMatchObject([
 //       { data: 1, priority: 0 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     rtSize = fixedPriorityQueue.enqueue(2)
 //     expect(fixedPriorityQueue.start).toBe(0)
 //     expect(fixedPriorityQueue.size).toBe(2)
@@ -46,6 +48,7 @@
 //       { data: 1, priority: 0 },
 //       { data: 2, priority: 0 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     rtSize = fixedPriorityQueue.enqueue(3)
 //     expect(fixedPriorityQueue.start).toBe(0)
 //     expect(fixedPriorityQueue.size).toBe(3)
@@ -56,6 +59,7 @@
 //       { data: 2, priority: 0 },
 //       { data: 3, priority: 0 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     rtSize = fixedPriorityQueue.enqueue(3, -1)
 //     expect(fixedPriorityQueue.start).toBe(0)
 //     expect(fixedPriorityQueue.size).toBe(4)
@@ -67,6 +71,7 @@
 //       { data: 2, priority: 0 },
 //       { data: 3, priority: 0 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     rtSize = fixedPriorityQueue.enqueue(1, 1)
 //     expect(fixedPriorityQueue.start).toBe(0)
 //     expect(fixedPriorityQueue.size).toBe(5)
 //       { data: 3, priority: 0 },
 //       { data: 1, priority: 1 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
+//     expect(() => fixedPriorityQueue.enqueue(4)).toThrow(
+//       new Error('Priority queue is full')
+//     )
 //   })
 
 //   it('Verify dequeue() behavior', () => {
-//     const fixedPriorityQueue = new FixedPriorityQueue()
+//     const queueSize = 5
+//     const fixedPriorityQueue = new FixedPriorityQueue(queueSize)
 //     fixedPriorityQueue.enqueue(1)
 //     fixedPriorityQueue.enqueue(2, -1)
 //     fixedPriorityQueue.enqueue(3)
 //     expect(fixedPriorityQueue.start).toBe(0)
 //     expect(fixedPriorityQueue.size).toBe(3)
 //     expect(fixedPriorityQueue.maxSize).toBe(3)
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     let rtItem = fixedPriorityQueue.dequeue()
 //     expect(fixedPriorityQueue.start).toBe(1)
 //     expect(fixedPriorityQueue.size).toBe(2)
 //       { data: 1, priority: 0 },
 //       { data: 3, priority: 0 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     rtItem = fixedPriorityQueue.dequeue()
 //     expect(fixedPriorityQueue.start).toBe(2)
 //     expect(fixedPriorityQueue.size).toBe(1)
 //       { data: 1, priority: 0 },
 //       { data: 3, priority: 0 }
 //     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //     rtItem = fixedPriorityQueue.dequeue()
 //     expect(fixedPriorityQueue.start).toBe(3)
 //     expect(fixedPriorityQueue.size).toBe(0)
 //       { data: 1, priority: 0 },
 //       { data: 3, priority: 0 }
 //     ])
-//     expect(fixedPriorityQueue.dequeue()).toBe(undefined)
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
+//     rtItem = fixedPriorityQueue.dequeue()
+//     expect(fixedPriorityQueue.start).toBe(3)
+//     expect(fixedPriorityQueue.size).toBe(0)
+//     expect(fixedPriorityQueue.maxSize).toBe(3)
+//     expect(rtItem).toBe(undefined)
+//     expect(fixedPriorityQueue.nodeArray).toMatchObject([
+//       { data: 2, priority: -1 },
+//       { data: 1, priority: 0 },
+//       { data: 3, priority: 0 }
+//     ])
+//     expect(fixedPriorityQueue.nodeArray.length).toBe(queueSize)
 //   })
 
 //   it('Verify iterator behavior', () => {