const Queue = require('.'); describe('Data Structure : Queue', () => { it('Should be class', () => { expect(typeof Queue.prototype.constructor).toEqual('function'); }); describe('Queue API', () => { let queue = null; beforeEach(() => { queue = new Queue(); }); it('Should add element to a queue', () => { queue.enqueue(5); expect(queue.peek()).toEqual(5); }); it('Should dequeue() an element from the queue', () => { queue.enqueue(2); queue.enqueue(3); expect(queue.dequeue()).toEqual(2); expect(queue.peek()).toEqual(3); expect(queue.length()).toEqual(1); }); describe('peek()', () => { beforeEach(() => { queue.enqueue(2); queue.enqueue(5); }); it('Should return the elemet to be removed using peek()', () => { expect(queue.peek()).toEqual(2); }); it('Should not remove the element', () => { expect(queue.peek()).toEqual(2); expect(queue.dequeue()).toEqual(2); }); }); it('Should maintain the order of elements', () => { // first in first out queue.enqueue(2); queue.enqueue(1); queue.enqueue(4); queue.enqueue(3); expect(queue.dequeue()).toEqual(2); expect(queue.dequeue()).toEqual(1); expect(queue.dequeue()).toEqual(4); expect(queue.dequeue()).toEqual(3); }); }); });