X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpriority-queue.test.mjs;h=00ecb33f9d3595840e7b203bd28e6432d8ab4797;hb=b84939fe9d58fad558fe33eb08ab99ce0b9bb5c7;hp=58931859cb02b7d67f63b6d3c25f0948d199c421;hpb=5d9133ae9ef83c5f69e26daf8dcfea584884d9c4;p=poolifier.git diff --git a/tests/priority-queue.test.mjs b/tests/priority-queue.test.mjs index 58931859..00ecb33f 100644 --- a/tests/priority-queue.test.mjs +++ b/tests/priority-queue.test.mjs @@ -5,34 +5,38 @@ import { PriorityQueue } from '../lib/priority-queue.cjs' describe('Priority queue test suite', () => { it('Verify constructor() behavior', () => { expect(() => new PriorityQueue('')).toThrow( - new TypeError('k must be an integer') + new TypeError('bucketSize must be an integer') ) expect(() => new PriorityQueue(-1)).toThrow( - new RangeError('k must be greater than or equal to 1') + new RangeError('bucketSize must be greater than or equal to 1') ) expect(() => new PriorityQueue(0)).toThrow( - new RangeError('k must be greater than or equal to 1') + new RangeError('bucketSize must be greater than or equal to 1') ) let priorityQueue = new PriorityQueue() - expect(priorityQueue.k).toBe(Infinity) + expect(priorityQueue.bucketSize).toBe(Number.POSITIVE_INFINITY) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(0) expect(priorityQueue.nodeArray).toStrictEqual([]) priorityQueue = new PriorityQueue(2) - expect(priorityQueue.k).toBe(2) + expect(priorityQueue.bucketSize).toBe(2) + expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(0) expect(priorityQueue.nodeArray).toStrictEqual([]) }) - it('Verify default k enqueue() behavior', () => { + it('Verify default bucketSize enqueue() behavior', () => { const priorityQueue = new PriorityQueue() let rtSize = priorityQueue.enqueue(1) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(1) expect(priorityQueue.maxSize).toBe(1) expect(rtSize).toBe(priorityQueue.size) expect(priorityQueue.nodeArray).toStrictEqual([{ data: 1, priority: 0 }]) rtSize = priorityQueue.enqueue(2) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(2) expect(priorityQueue.maxSize).toBe(2) expect(rtSize).toBe(priorityQueue.size) @@ -41,6 +45,7 @@ describe('Priority queue test suite', () => { { data: 2, priority: 0 } ]) rtSize = priorityQueue.enqueue(3) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(3) expect(priorityQueue.maxSize).toBe(3) expect(rtSize).toBe(priorityQueue.size) @@ -50,6 +55,7 @@ describe('Priority queue test suite', () => { { data: 3, priority: 0 } ]) rtSize = priorityQueue.enqueue(3, -1) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(4) expect(priorityQueue.maxSize).toBe(4) expect(rtSize).toBe(priorityQueue.size) @@ -60,6 +66,7 @@ describe('Priority queue test suite', () => { { data: 3, priority: 0 } ]) rtSize = priorityQueue.enqueue(1, 1) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(5) expect(priorityQueue.maxSize).toBe(5) expect(rtSize).toBe(priorityQueue.size) @@ -72,14 +79,16 @@ describe('Priority queue test suite', () => { ]) }) - it('Verify k=2 enqueue() behavior', () => { + it('Verify bucketSize=2 enqueue() behavior', () => { const priorityQueue = new PriorityQueue(2) let rtSize = priorityQueue.enqueue(1) + expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(1) expect(priorityQueue.maxSize).toBe(1) expect(rtSize).toBe(priorityQueue.size) expect(priorityQueue.nodeArray).toStrictEqual([{ data: 1, priority: 0 }]) rtSize = priorityQueue.enqueue(2) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(2) expect(priorityQueue.maxSize).toBe(2) expect(rtSize).toBe(priorityQueue.size) @@ -88,6 +97,7 @@ describe('Priority queue test suite', () => { { data: 2, priority: 0 } ]) rtSize = priorityQueue.enqueue(3) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(3) expect(priorityQueue.maxSize).toBe(3) expect(rtSize).toBe(priorityQueue.size) @@ -97,6 +107,7 @@ describe('Priority queue test suite', () => { { data: 3, priority: 0 } ]) rtSize = priorityQueue.enqueue(3, -1) + expect(priorityQueue.buckets).toBe(2) expect(priorityQueue.size).toBe(4) expect(priorityQueue.maxSize).toBe(4) expect(rtSize).toBe(priorityQueue.size) @@ -107,6 +118,7 @@ describe('Priority queue test suite', () => { { data: 3, priority: 0 } ]) rtSize = priorityQueue.enqueue(1, 1) + expect(priorityQueue.buckets).toBe(2) expect(priorityQueue.size).toBe(5) expect(priorityQueue.maxSize).toBe(5) expect(rtSize).toBe(priorityQueue.size) @@ -118,6 +130,7 @@ describe('Priority queue test suite', () => { { data: 1, priority: 1 } ]) rtSize = priorityQueue.enqueue(3, -2) + expect(priorityQueue.buckets).toBe(3) expect(priorityQueue.size).toBe(6) expect(priorityQueue.maxSize).toBe(6) expect(rtSize).toBe(priorityQueue.size) @@ -131,12 +144,16 @@ describe('Priority queue test suite', () => { ]) }) - it('Verify default k dequeue() behavior', () => { + it('Verify default bucketSize dequeue() behavior', () => { const priorityQueue = new PriorityQueue() priorityQueue.enqueue(1) priorityQueue.enqueue(2, -1) priorityQueue.enqueue(3) + expect(priorityQueue.buckets).toBe(1) + expect(priorityQueue.size).toBe(3) + expect(priorityQueue.maxSize).toBe(3) let rtItem = priorityQueue.dequeue() + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(2) expect(priorityQueue.maxSize).toBe(3) expect(rtItem).toBe(2) @@ -145,18 +162,20 @@ describe('Priority queue test suite', () => { { data: 3, priority: 0 } ]) rtItem = priorityQueue.dequeue() + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(1) expect(priorityQueue.maxSize).toBe(3) expect(rtItem).toBe(1) expect(priorityQueue.nodeArray).toStrictEqual([{ data: 3, priority: 0 }]) rtItem = priorityQueue.dequeue() + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(3) expect(rtItem).toBe(3) expect(priorityQueue.nodeArray).toStrictEqual([]) }) - it('Verify k=2 dequeue() behavior', () => { + it('Verify bucketSize=2 dequeue() behavior', () => { const priorityQueue = new PriorityQueue(2) priorityQueue.enqueue(1) priorityQueue.enqueue(2) @@ -164,7 +183,11 @@ describe('Priority queue test suite', () => { priorityQueue.enqueue(3, -1) priorityQueue.enqueue(1, 1) priorityQueue.enqueue(3, -2) + expect(priorityQueue.buckets).toBe(3) + expect(priorityQueue.size).toBe(6) + expect(priorityQueue.maxSize).toBe(6) let rtItem = priorityQueue.dequeue(3) + expect(priorityQueue.buckets).toBe(2) expect(priorityQueue.size).toBe(5) expect(priorityQueue.maxSize).toBe(6) expect(rtItem).toBe(3) @@ -176,6 +199,7 @@ describe('Priority queue test suite', () => { { data: 1, priority: 1 } ]) rtItem = priorityQueue.dequeue() + expect(priorityQueue.buckets).toBe(2) expect(priorityQueue.size).toBe(4) expect(priorityQueue.maxSize).toBe(6) expect(rtItem).toBe(1) @@ -186,6 +210,7 @@ describe('Priority queue test suite', () => { { data: 1, priority: 1 } ]) rtItem = priorityQueue.dequeue(2) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(3) expect(priorityQueue.maxSize).toBe(6) expect(rtItem).toBe(3) @@ -195,6 +220,7 @@ describe('Priority queue test suite', () => { { data: 1, priority: 1 } ]) rtItem = priorityQueue.dequeue(2) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(2) expect(priorityQueue.maxSize).toBe(6) expect(rtItem).toBe(1) @@ -203,11 +229,13 @@ describe('Priority queue test suite', () => { { data: 3, priority: -1 } ]) rtItem = priorityQueue.dequeue(2) + expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(1) expect(priorityQueue.maxSize).toBe(6) expect(rtItem).toBe(2) expect(priorityQueue.nodeArray).toStrictEqual([{ data: 3, priority: -1 }]) rtItem = priorityQueue.dequeue() + expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(6) expect(rtItem).toBe(3) @@ -251,6 +279,7 @@ describe('Priority queue test suite', () => { priorityQueue.enqueue(1) priorityQueue.enqueue(2) priorityQueue.enqueue(3) + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(3) expect(priorityQueue.maxSize).toBe(3) expect(priorityQueue.nodeArray).toStrictEqual([ @@ -259,6 +288,7 @@ describe('Priority queue test suite', () => { { data: 3, priority: 0 } ]) priorityQueue.clear() + expect(priorityQueue.buckets).toBe(1) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(0) expect(priorityQueue.nodeArray).toStrictEqual([])