refactor: refine priority queue bucket size validation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 28 May 2024 18:14:09 +0000 (20:14 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 28 May 2024 18:14:09 +0000 (20:14 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/priority-queue.ts
tests/priority-queue.test.mjs

index ed4d63f5fa9cb03b71f1e91b472f84d1978d2573..142fa5e85c41a29b7047686681d066a11af9a9d7 100644 (file)
@@ -37,10 +37,12 @@ export class PriorityQueue<T> {
    */
   public constructor (bucketSize: number = defaultBucketSize) {
     if (!Number.isSafeInteger(bucketSize)) {
-      throw new TypeError('bucketSize must be an integer')
+      throw new TypeError(
+        `Invalid bucket size: '${bucketSize}' is not an integer`
+      )
     }
-    if (bucketSize < 1) {
-      throw new RangeError('bucketSize must be greater than or equal to 1')
+    if (bucketSize < 0) {
+      throw new RangeError(`Invalid bucket size: ${bucketSize} < 0`)
     }
     this.bucketSize = bucketSize
     this.clear()
index bcd3cf0a169e0a9b0ca1f806f3328a2d3d719131..ddc8c09d6bdd0422428fe87317c381dd6b8b1fee 100644 (file)
@@ -6,13 +6,10 @@ 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)