import { describe, expect, it } from 'vitest' import { Queue } from '../src/queues/queue.js' /** * Queue test suite, tests the Queue class * * @param name name of the test suite * @param fn function holding tests to run */ describe('Queue Structure', () => { let queue = new Queue() // test for queue creation it('creates a new queue', () => { expect(queue).not.toBeNull() }) // test for queue capacity creation it('adds specific capacity to the queue', () => { queue = new Queue(2) expect(queue).not.toBeNull() }) // test for enqueue success, size update it('adds items to the queue', () => { queue.enqueue('hello') expect(queue.size()).toBe(1) }) // test for multiple enqueue success, size update it('adds multiple items to the queue', () => { queue.enqueue('world') expect(queue.size()).toBe(2) }) // test for enqueue failure upon capacity overflow it('throws an error when the queue is full', () => { expect(() => queue.enqueue('!')).toThrowError() }) // test for getItems success it('returns all items in the queue', () => { expect(queue.getItems()).toEqual(['hello', 'world']) }) // test for pop success, size update it('removes an item from the front of the queue', () => { queue.pop() expect(queue.size() && queue.getItems()[0]).toBe(1 && 'hello') }) // test for dequeue success, size update it('removes an item from the back of the queue', () => { queue.dequeue() expect(queue.size() && queue.getItems()[0]).toBe(0 && 'world') }) // test for getItems success with nothing in the list it('returns an empty array when the queue is empty', () => { expect(queue.getItems()).toEqual([]) }) })