diff --git a/src/data-structures/queue/deque.ts b/src/data-structures/queue/deque.ts index edabb88..675568d 100644 --- a/src/data-structures/queue/deque.ts +++ b/src/data-structures/queue/deque.ts @@ -32,8 +32,9 @@ export class Deque extends IterableElementBase 0 && maxLen % 1 === 0) this._maxLen = maxLen; } let _size: number; @@ -73,6 +74,17 @@ export class Deque extends IterableElementBase extends IterableElementBase 0 && this._size > this._maxLen) this.shift(); return true; } @@ -257,6 +270,7 @@ export class Deque extends IterableElementBase 0 && this._size > this._maxLen) this.pop(); return true; } diff --git a/src/data-structures/queue/queue.ts b/src/data-structures/queue/queue.ts index fe49ae1..2086017 100644 --- a/src/data-structures/queue/queue.ts +++ b/src/data-structures/queue/queue.ts @@ -100,7 +100,6 @@ export class Queue extends IterableElementBase = { bucketSize?: number } & IterableElementBaseOptions; +export type DequeOptions = { + bucketSize?: number, + maxLen?: number +} & IterableElementBaseOptions; diff --git a/test/unit/data-structures/queue/deque.test.ts b/test/unit/data-structures/queue/deque.test.ts index fe8e718..66c5d40 100644 --- a/test/unit/data-structures/queue/deque.test.ts +++ b/test/unit/data-structures/queue/deque.test.ts @@ -260,6 +260,25 @@ describe('Deque - Utility Operations', () => { // deque.print(); // expect(consoleSpy).toHaveBeenCalledWith([1, 2]); }); + + test('should maxLen work well', () => { + const dequeMaxLen = new Deque([3, 4, 5, 6, 7], { maxLen: 3 }); + expect(dequeMaxLen.size).toBe(3); + expect(dequeMaxLen.toArray()).toEqual([5, 6 ,7]); + dequeMaxLen.unshift(4); + dequeMaxLen.unshift(3); + expect(dequeMaxLen.size).toBe(3); + expect(dequeMaxLen.toArray()).toEqual([3, 4, 5]); + + const dequeNoMaxLen = new Deque([3, 4, 5, 6, 7]); + expect(dequeNoMaxLen.size).toBe(5); + expect(dequeNoMaxLen.toArray()).toEqual([3, 4, 5, 6, 7]); + dequeNoMaxLen.unshift(4); + dequeNoMaxLen.unshift(3); + expect(dequeNoMaxLen.size).toBe(7); + expect(dequeNoMaxLen.toArray()).toEqual([3, 4, 3, 4, 5, 6, 7]); + + }); }); describe('Deque - Additional Operations', () => {