X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fpriority-queue.test.mjs;h=5240efd2e6da1f956a5f1a7149036e29c6fa6be9;hb=783d540c163b7da18cb2a05f8ce9624beb0faaf4;hp=bcd3cf0a169e0a9b0ca1f806f3328a2d3d719131;hpb=e75373e6b8ed2882c1b8dd7eedc8ca9217582121;p=poolifier.git diff --git a/tests/priority-queue.test.mjs b/tests/priority-queue.test.mjs index bcd3cf0a..5240efd2 100644 --- a/tests/priority-queue.test.mjs +++ b/tests/priority-queue.test.mjs @@ -6,30 +6,29 @@ import { defaultBucketSize, PriorityQueue } from '../lib/priority-queue.cjs' describe('Priority queue test suite', () => { it('Verify constructor() behavior', () => { expect(() => new PriorityQueue('')).toThrow( - new TypeError('bucketSize must be an integer') + new TypeError("Invalid bucket size: '' is not an integer") ) expect(() => new PriorityQueue(-1)).toThrow( - new RangeError('bucketSize must be greater than or equal to 1') - ) - expect(() => new PriorityQueue(0)).toThrow( - new RangeError('bucketSize must be greater than or equal to 1') + new RangeError('Invalid bucket size: -1 < 0') ) let priorityQueue = new PriorityQueue() expect(priorityQueue.bucketSize).toBe(defaultBucketSize) expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(0) + expect(priorityQueue.enablePriority).toBe(false) expect(priorityQueue.head).toBeInstanceOf(FixedPriorityQueue) expect(priorityQueue.head.next).toBe(undefined) expect(priorityQueue.head.capacity).toBe(defaultBucketSize) expect(priorityQueue.tail).toBeInstanceOf(FixedPriorityQueue) expect(priorityQueue.tail).toStrictEqual(priorityQueue.head) const bucketSize = 2 - priorityQueue = new PriorityQueue(bucketSize) + priorityQueue = new PriorityQueue(bucketSize, true) expect(priorityQueue.bucketSize).toBe(bucketSize) expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(0) expect(priorityQueue.maxSize).toBe(0) + expect(priorityQueue.enablePriority).toBe(true) expect(priorityQueue.head).toBeInstanceOf(FixedPriorityQueue) expect(priorityQueue.head.next).toBe(undefined) expect(priorityQueue.head.capacity).toBe(bucketSize) @@ -38,7 +37,7 @@ describe('Priority queue test suite', () => { }) it('Verify default bucket size enqueue() behavior', () => { - const priorityQueue = new PriorityQueue() + const priorityQueue = new PriorityQueue(defaultBucketSize, true) let rtSize = priorityQueue.enqueue(1) expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(1) @@ -102,7 +101,7 @@ describe('Priority queue test suite', () => { }) it('Verify bucketSize=2 enqueue() behavior', () => { - const priorityQueue = new PriorityQueue(2) + const priorityQueue = new PriorityQueue(2, true) let rtSize = priorityQueue.enqueue(1) expect(priorityQueue.buckets).toBe(0) expect(priorityQueue.size).toBe(1) @@ -193,7 +192,7 @@ describe('Priority queue test suite', () => { }) it('Verify default bucket size dequeue() behavior', () => { - const priorityQueue = new PriorityQueue() + const priorityQueue = new PriorityQueue(defaultBucketSize, true) priorityQueue.enqueue(1) priorityQueue.enqueue(2, -1) priorityQueue.enqueue(3) @@ -226,7 +225,7 @@ describe('Priority queue test suite', () => { }) it('Verify bucketSize=2 dequeue() behavior', () => { - const priorityQueue = new PriorityQueue(2) + const priorityQueue = new PriorityQueue(2, true) priorityQueue.enqueue(1) priorityQueue.enqueue(2) priorityQueue.enqueue(3) @@ -282,6 +281,30 @@ describe('Priority queue test suite', () => { expect(priorityQueue.tail.next).toBe(undefined) }) + it('Verify enablePriority setter behavior', () => { + const priorityQueue = new PriorityQueue(2) + expect(priorityQueue.enablePriority).toBe(false) + priorityQueue.enqueue(1) + priorityQueue.enqueue(2) + priorityQueue.enqueue(3) + priorityQueue.enqueue(4) + let buckets = 0 + let node = priorityQueue.tail + while (node != null) { + expect(node.enablePriority).toBe(false) + node = node.next + ++buckets + } + expect(buckets).toBe(2) + priorityQueue.enablePriority = true + expect(priorityQueue.enablePriority).toBe(true) + node = priorityQueue.tail + while (node != null) { + expect(node.enablePriority).toBe(true) + node = node.next + } + }) + it('Verify iterator behavior', () => { const priorityQueue = new PriorityQueue(2) priorityQueue.enqueue(1)