import {
defaultQueueSize,
- FixedPriorityQueue
+ FixedPriorityQueue,
} from '../lib/fixed-priority-queue.cjs'
describe('Fixed priority queue test suite', () => {
let fixedPriorityQueue = new FixedPriorityQueue()
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(0)
- expect(fixedPriorityQueue.maxSize).toBe(0)
expect(fixedPriorityQueue.nodeArray).toBeInstanceOf(Array)
expect(fixedPriorityQueue.capacity).toBe(defaultQueueSize)
- fixedPriorityQueue = new FixedPriorityQueue(2)
+ expect(fixedPriorityQueue.enablePriority).toBe(false)
+ fixedPriorityQueue = new FixedPriorityQueue(2, true)
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(0)
- expect(fixedPriorityQueue.maxSize).toBe(0)
expect(fixedPriorityQueue.nodeArray).toBeInstanceOf(Array)
expect(fixedPriorityQueue.capacity).toBe(2)
+ expect(fixedPriorityQueue.enablePriority).toBe(true)
})
it('Verify enqueue() behavior', () => {
const queueSize = 5
- const fixedPriorityQueue = new FixedPriorityQueue(queueSize)
+ const fixedPriorityQueue = new FixedPriorityQueue(queueSize, true)
let rtSize = fixedPriorityQueue.enqueue(1)
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(1)
- expect(fixedPriorityQueue.maxSize).toBe(1)
expect(rtSize).toBe(fixedPriorityQueue.size)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
- { data: 1, priority: 0 }
+ { data: 1, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
rtSize = fixedPriorityQueue.enqueue(2)
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(2)
- expect(fixedPriorityQueue.maxSize).toBe(2)
expect(rtSize).toBe(fixedPriorityQueue.size)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 1, priority: 0 },
- { data: 2, priority: 0 }
+ { data: 2, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
rtSize = fixedPriorityQueue.enqueue(3)
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(3)
- expect(fixedPriorityQueue.maxSize).toBe(3)
expect(rtSize).toBe(fixedPriorityQueue.size)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 1, priority: 0 },
{ data: 2, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
rtSize = fixedPriorityQueue.enqueue(3, -1)
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(4)
- expect(fixedPriorityQueue.maxSize).toBe(4)
expect(rtSize).toBe(fixedPriorityQueue.size)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 3, priority: -1 },
{ data: 1, priority: 0 },
{ data: 2, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
rtSize = fixedPriorityQueue.enqueue(1, 1)
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(5)
- expect(fixedPriorityQueue.maxSize).toBe(5)
expect(rtSize).toBe(fixedPriorityQueue.size)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 3, priority: -1 },
{ data: 1, priority: 0 },
{ data: 2, priority: 0 },
{ data: 3, priority: 0 },
- { data: 1, priority: 1 }
+ { data: 1, priority: 1 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
expect(() => fixedPriorityQueue.enqueue(4)).toThrow(
)
})
+ it('Verify get() behavior', () => {
+ const fixedPriorityQueue = new FixedPriorityQueue(defaultQueueSize, true)
+ fixedPriorityQueue.enqueue(1)
+ fixedPriorityQueue.enqueue(2, -1)
+ fixedPriorityQueue.enqueue(3)
+ expect(fixedPriorityQueue.get(0)).toBe(2)
+ expect(fixedPriorityQueue.get(1)).toBe(1)
+ expect(fixedPriorityQueue.get(2)).toBe(3)
+ expect(fixedPriorityQueue.get(3)).toBe(undefined)
+ })
+
it('Verify dequeue() behavior', () => {
const queueSize = 5
- const fixedPriorityQueue = new FixedPriorityQueue(queueSize)
+ const fixedPriorityQueue = new FixedPriorityQueue(queueSize, true)
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.capacity).toBe(queueSize)
let rtItem = fixedPriorityQueue.dequeue()
expect(fixedPriorityQueue.start).toBe(1)
expect(fixedPriorityQueue.size).toBe(2)
- expect(fixedPriorityQueue.maxSize).toBe(3)
expect(rtItem).toBe(2)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 2, priority: -1 },
{ data: 1, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
rtItem = fixedPriorityQueue.dequeue()
expect(fixedPriorityQueue.start).toBe(2)
expect(fixedPriorityQueue.size).toBe(1)
- expect(fixedPriorityQueue.maxSize).toBe(3)
expect(rtItem).toBe(1)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 2, priority: -1 },
{ data: 1, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
rtItem = fixedPriorityQueue.dequeue()
expect(fixedPriorityQueue.start).toBe(3)
expect(fixedPriorityQueue.size).toBe(0)
- expect(fixedPriorityQueue.maxSize).toBe(3)
expect(rtItem).toBe(3)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 2, priority: -1 },
{ data: 1, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
])
expect(fixedPriorityQueue.capacity).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 }
+ { data: 3, priority: 0 },
])
expect(fixedPriorityQueue.capacity).toBe(queueSize)
})
const fixedPriorityQueue = new FixedPriorityQueue()
fixedPriorityQueue.start = 1
fixedPriorityQueue.size = 2
- fixedPriorityQueue.maxSize = 2
fixedPriorityQueue.nodeArray = [
{ data: 2, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
]
fixedPriorityQueue.clear()
expect(fixedPriorityQueue.start).toBe(0)
expect(fixedPriorityQueue.size).toBe(0)
- expect(fixedPriorityQueue.maxSize).toBe(0)
expect(fixedPriorityQueue.nodeArray).toMatchObject([
{ data: 2, priority: 0 },
- { data: 3, priority: 0 }
+ { data: 3, priority: 0 },
])
})
})