data-structure-typed 1.39.0 → 1.39.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +2 -2
  3. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +96 -32
  4. package/dist/cjs/data-structures/binary-tree/binary-tree.js +46 -8
  5. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  6. package/dist/cjs/data-structures/binary-tree/bst.d.ts +6 -6
  7. package/dist/cjs/data-structures/binary-tree/bst.js +2 -2
  8. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  9. package/dist/cjs/data-structures/binary-tree/tree-multiset.d.ts +2 -2
  10. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -1
  11. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +1 -1
  12. package/dist/cjs/data-structures/graph/abstract-graph.js +1 -1
  13. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  14. package/dist/cjs/data-structures/graph/map-graph.d.ts +1 -1
  15. package/dist/cjs/data-structures/graph/map-graph.js +1 -1
  16. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
  17. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +46 -28
  18. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +59 -49
  19. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  20. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +75 -7
  21. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +110 -9
  22. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  23. package/dist/cjs/data-structures/matrix/matrix2d.d.ts +1 -2
  24. package/dist/cjs/data-structures/matrix/matrix2d.js +3 -7
  25. package/dist/cjs/data-structures/matrix/matrix2d.js.map +1 -1
  26. package/dist/cjs/data-structures/matrix/vector2d.d.ts +0 -1
  27. package/dist/cjs/data-structures/matrix/vector2d.js +0 -1
  28. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -1
  29. package/dist/cjs/data-structures/queue/deque.d.ts +20 -20
  30. package/dist/cjs/data-structures/queue/deque.js +22 -22
  31. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  32. package/dist/cjs/data-structures/queue/queue.d.ts +3 -3
  33. package/dist/cjs/data-structures/queue/queue.js +3 -3
  34. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  35. package/dist/cjs/interfaces/binary-tree.d.ts +2 -2
  36. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +0 -2
  37. package/dist/cjs/types/helpers.d.ts +1 -4
  38. package/dist/cjs/types/helpers.js.map +1 -1
  39. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +2 -2
  40. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +96 -32
  41. package/dist/mjs/data-structures/binary-tree/binary-tree.js +46 -8
  42. package/dist/mjs/data-structures/binary-tree/bst.d.ts +6 -6
  43. package/dist/mjs/data-structures/binary-tree/bst.js +2 -2
  44. package/dist/mjs/data-structures/binary-tree/tree-multiset.d.ts +2 -2
  45. package/dist/mjs/data-structures/graph/abstract-graph.d.ts +1 -1
  46. package/dist/mjs/data-structures/graph/abstract-graph.js +1 -1
  47. package/dist/mjs/data-structures/graph/map-graph.d.ts +1 -1
  48. package/dist/mjs/data-structures/graph/map-graph.js +1 -1
  49. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +46 -28
  50. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +59 -49
  51. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +75 -7
  52. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +110 -9
  53. package/dist/mjs/data-structures/matrix/matrix2d.d.ts +1 -2
  54. package/dist/mjs/data-structures/matrix/matrix2d.js +3 -7
  55. package/dist/mjs/data-structures/matrix/vector2d.d.ts +0 -1
  56. package/dist/mjs/data-structures/matrix/vector2d.js +0 -1
  57. package/dist/mjs/data-structures/queue/deque.d.ts +20 -20
  58. package/dist/mjs/data-structures/queue/deque.js +22 -22
  59. package/dist/mjs/data-structures/queue/queue.d.ts +3 -3
  60. package/dist/mjs/data-structures/queue/queue.js +3 -3
  61. package/dist/mjs/interfaces/binary-tree.d.ts +2 -2
  62. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +0 -2
  63. package/dist/mjs/types/helpers.d.ts +1 -4
  64. package/dist/umd/data-structure-typed.min.js +1 -1
  65. package/dist/umd/data-structure-typed.min.js.map +1 -1
  66. package/package.json +5 -5
  67. package/src/data-structures/binary-tree/avl-tree.ts +2 -2
  68. package/src/data-structures/binary-tree/binary-tree.ts +76 -90
  69. package/src/data-structures/binary-tree/bst.ts +9 -16
  70. package/src/data-structures/binary-tree/tree-multiset.ts +2 -2
  71. package/src/data-structures/graph/abstract-graph.ts +1 -1
  72. package/src/data-structures/graph/map-graph.ts +2 -2
  73. package/src/data-structures/linked-list/doubly-linked-list.ts +62 -56
  74. package/src/data-structures/linked-list/singly-linked-list.ts +118 -13
  75. package/src/data-structures/matrix/matrix2d.ts +1 -3
  76. package/src/data-structures/matrix/vector2d.ts +0 -2
  77. package/src/data-structures/queue/deque.ts +22 -22
  78. package/src/data-structures/queue/queue.ts +3 -3
  79. package/src/interfaces/binary-tree.ts +2 -2
  80. package/src/types/data-structures/binary-tree/binary-tree.ts +0 -4
  81. package/src/types/helpers.ts +1 -7
  82. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +141 -1
  83. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +289 -47
  84. package/test/unit/data-structures/binary-tree/bst.test.ts +391 -1
  85. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +73 -7
  86. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +241 -186
  87. package/test/unit/data-structures/graph/directed-graph.test.ts +34 -4
  88. package/test/unit/data-structures/graph/map-graph.test.ts +82 -1
  89. package/test/unit/data-structures/graph/undirected-graph.test.ts +82 -0
  90. package/test/unit/data-structures/hash/coordinate-map.test.ts +20 -0
  91. package/test/unit/data-structures/hash/coordinate-set.test.ts +25 -0
  92. package/test/unit/data-structures/hash/hash-table.test.ts +3 -1
  93. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +69 -6
  94. package/test/unit/data-structures/linked-list/linked-list.test.ts +2 -2
  95. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +59 -12
  96. package/test/unit/data-structures/matrix/matrix2d.test.ts +207 -0
  97. package/test/unit/data-structures/matrix/navigator.test.ts +166 -1
  98. package/test/unit/data-structures/matrix/vector2d.test.ts +171 -0
  99. package/test/unit/data-structures/queue/deque.test.ts +283 -20
  100. package/test/unit/data-structures/queue/queue.test.ts +10 -8
@@ -1,6 +1,8 @@
1
1
  import {ArrayDeque, Deque, ObjectDeque} from '../../../../src';
2
2
  import {bigO} from '../../../utils';
3
+ import {isDebugTest} from '../../../config';
3
4
 
5
+ const isDebug = isDebugTest;
4
6
  describe('Deque Tests', () => {
5
7
  // Test cases for the Deque class (DoublyLinkedList-based)
6
8
  describe('Deque (DoublyLinkedList-based)', () => {
@@ -13,20 +15,20 @@ describe('Deque Tests', () => {
13
15
  it('should add elements at the beginning and end', () => {
14
16
  deque.addFirst(1);
15
17
  deque.addLast(2);
16
- expect(deque.peekFirst()).toBe(1);
17
- expect(deque.peekLast()).toBe(2);
18
+ expect(deque.getFirst()).toBe(1);
19
+ expect(deque.getLast()).toBe(2);
18
20
  });
19
21
 
20
22
  it('should delete elements from the beginning and end', () => {
21
23
  deque.addFirst(1);
22
24
  deque.addLast(2);
23
- deque.pollFirst();
24
- deque.pollLast();
25
+ deque.popFirst();
26
+ deque.popLast();
25
27
  expect(deque.isEmpty()).toBe(true);
26
28
  });
27
29
 
28
30
  it('should handle edge case when removing from an empty deque', () => {
29
- const result = deque.pollFirst();
31
+ const result = deque.popFirst();
30
32
  expect(result).toBeUndefined();
31
33
  });
32
34
 
@@ -38,18 +40,18 @@ describe('Deque Tests', () => {
38
40
 
39
41
  it('should handle adding and removing elements alternately', () => {
40
42
  deque.addFirst(1);
41
- expect(deque.pollFirst()).toBe(1);
43
+ expect(deque.popFirst()).toBe(1);
42
44
  deque.addLast(2);
43
- expect(deque.pollLast()).toBe(2);
45
+ expect(deque.popLast()).toBe(2);
44
46
  expect(deque.isEmpty()).toBe(true);
45
47
  });
46
48
 
47
49
  it('should handle adding and removing elements in a cyclic manner', () => {
48
50
  deque.addFirst(1);
49
51
  deque.addLast(2);
50
- expect(deque.pollFirst()).toBe(1);
52
+ expect(deque.popFirst()).toBe(1);
51
53
  deque.addFirst(3);
52
- expect(deque.pollLast()).toBe(2);
54
+ expect(deque.popLast()).toBe(2);
53
55
  expect(deque.size).toBe(1);
54
56
  });
55
57
  // Add more test cases as needed
@@ -66,20 +68,20 @@ describe('Deque Tests', () => {
66
68
  it('should add elements at the beginning and end', () => {
67
69
  objectDeque.addFirst('one');
68
70
  objectDeque.addLast('two');
69
- expect(objectDeque.peekFirst()).toBe('one');
70
- expect(objectDeque.peekLast()).toBe('two');
71
+ expect(objectDeque.getFirst()).toBe('one');
72
+ expect(objectDeque.getLast()).toBe('two');
71
73
  });
72
74
 
73
75
  it('should delete elements from the beginning and end', () => {
74
76
  objectDeque.addFirst('one');
75
77
  objectDeque.addLast('two');
76
- objectDeque.pollFirst();
77
- objectDeque.pollLast();
78
+ objectDeque.popFirst();
79
+ objectDeque.popLast();
78
80
  expect(objectDeque.isEmpty()).toBe(true);
79
81
  });
80
82
 
81
83
  it('should handle edge case when removing from an empty deque', () => {
82
- const result = objectDeque.pollFirst();
84
+ const result = objectDeque.popFirst();
83
85
  expect(result).toBeUndefined();
84
86
  });
85
87
 
@@ -103,20 +105,20 @@ describe('Deque Tests', () => {
103
105
  it('should add elements at the beginning and end', () => {
104
106
  arrayDeque.addFirst(1);
105
107
  arrayDeque.addLast(2);
106
- expect(arrayDeque.peekFirst()).toBe(1);
107
- expect(arrayDeque.peekLast()).toBe(2);
108
+ expect(arrayDeque.getFirst()).toBe(1);
109
+ expect(arrayDeque.getLast()).toBe(2);
108
110
  });
109
111
 
110
112
  it('should delete elements from the beginning and end', () => {
111
113
  arrayDeque.addFirst(1);
112
114
  arrayDeque.addLast(2);
113
- arrayDeque.pollFirst();
114
- arrayDeque.pollLast();
115
+ arrayDeque.popFirst();
116
+ arrayDeque.popLast();
115
117
  expect(arrayDeque.isEmpty()).toBe(true);
116
118
  });
117
119
 
118
120
  it('should handle edge case when removing from an empty deque', () => {
119
- const result = arrayDeque.pollFirst();
121
+ const result = arrayDeque.popFirst();
120
122
  expect(result).toBeNull();
121
123
  });
122
124
 
@@ -141,7 +143,268 @@ describe('Deque Performance Test', () => {
141
143
  for (let i = 0; i < dataSize; i++) {
142
144
  queue.pop();
143
145
  }
144
- console.log(`Queue Deque Test: ${performance.now() - startTime} ms`);
146
+ isDebug && console.log(`Queue Deque Test: ${performance.now() - startTime} ms`);
145
147
  expect(performance.now() - startTime).toBeLessThan(bigO.LINEAR * 100);
146
148
  });
147
149
  });
150
+
151
+ describe('Deque', () => {
152
+ let deque: Deque<number>;
153
+
154
+ beforeEach(() => {
155
+ deque = new Deque<number>();
156
+ });
157
+
158
+ test('should initialize an empty deque', () => {
159
+ expect(deque.size).toBe(0);
160
+ expect(deque.isEmpty()).toBe(true);
161
+ });
162
+
163
+ test('should add elements to the front and back', () => {
164
+ deque.addFirst(1);
165
+ deque.addLast(2);
166
+
167
+ expect(deque.size).toBe(2);
168
+ expect(deque.getFirst()).toBe(1);
169
+ expect(deque.getLast()).toBe(2);
170
+ });
171
+
172
+ test('should remove elements from the front and back', () => {
173
+ deque.addFirst(1);
174
+ deque.addLast(2);
175
+
176
+ const firstElement = deque.popFirst();
177
+ const lastElement = deque.popLast();
178
+
179
+ expect(deque.size).toBe(0);
180
+ expect(firstElement).toBe(1);
181
+ expect(lastElement).toBe(2);
182
+ });
183
+
184
+ test('should get elements by index', () => {
185
+ deque.addLast(1);
186
+ deque.addLast(2);
187
+ deque.addLast(3);
188
+
189
+ expect(deque.getAt(0)).toBe(1);
190
+ expect(deque.getAt(1)).toBe(2);
191
+ expect(deque.getAt(2)).toBe(3);
192
+ });
193
+
194
+ test('should return null for out-of-bounds index', () => {
195
+ expect(deque.getAt(0)).toBe(undefined);
196
+ expect(deque.getAt(1)).toBe(undefined);
197
+ expect(deque.getAt(-1)).toBe(undefined);
198
+ });
199
+
200
+ test('should check if the deque is empty', () => {
201
+ expect(deque.isEmpty()).toBe(true);
202
+
203
+ deque.addLast(1);
204
+ expect(deque.isEmpty()).toBe(false);
205
+
206
+ deque.popFirst();
207
+ expect(deque.isEmpty()).toBe(true);
208
+ });
209
+ });
210
+
211
+ describe('ArrayDeque', () => {
212
+ let deque: ArrayDeque<number>;
213
+
214
+ beforeEach(() => {
215
+ deque = new ArrayDeque<number>();
216
+ });
217
+
218
+ test('should initialize an empty deque', () => {
219
+ expect(deque.size).toBe(0);
220
+ expect(deque.isEmpty()).toBe(true);
221
+ });
222
+
223
+ test('should add elements to the front and back', () => {
224
+ deque.addFirst(1);
225
+ deque.addLast(2);
226
+
227
+ expect(deque.size).toBe(2);
228
+ expect(deque.getFirst()).toBe(1);
229
+ expect(deque.getLast()).toBe(2);
230
+ });
231
+
232
+ test('should remove elements from the front and back', () => {
233
+ deque.addFirst(1);
234
+ deque.addLast(2);
235
+
236
+ const firstElement = deque.popFirst();
237
+ const lastElement = deque.popLast();
238
+
239
+ expect(deque.size).toBe(0);
240
+ expect(firstElement).toBe(1);
241
+ expect(lastElement).toBe(2);
242
+ });
243
+
244
+ test('should get elements by index', () => {
245
+ deque.addLast(1);
246
+ deque.addLast(2);
247
+ deque.addLast(3);
248
+
249
+ expect(deque.get(0)).toBe(1);
250
+ expect(deque.get(1)).toBe(2);
251
+ expect(deque.get(2)).toBe(3);
252
+ });
253
+
254
+ test('should return null for out-of-bounds index', () => {
255
+ expect(deque.get(0)).toBe(null);
256
+ expect(deque.get(1)).toBe(null);
257
+ expect(deque.get(-1)).toBe(null);
258
+ });
259
+
260
+ test('should check if the deque is empty', () => {
261
+ expect(deque.isEmpty()).toBe(true);
262
+
263
+ deque.addLast(1);
264
+ expect(deque.isEmpty()).toBe(false);
265
+
266
+ deque.popFirst();
267
+ expect(deque.isEmpty()).toBe(true);
268
+ });
269
+
270
+ test('should set elements at a specific index', () => {
271
+ deque.addLast(1);
272
+ deque.addLast(2);
273
+ deque.addLast(3);
274
+
275
+ deque.set(1, 4);
276
+
277
+ expect(deque.get(0)).toBe(1);
278
+ expect(deque.get(1)).toBe(4);
279
+ expect(deque.get(2)).toBe(3);
280
+ });
281
+
282
+ test('should insert elements at a specific index', () => {
283
+ deque.addLast(1);
284
+ deque.addLast(2);
285
+ deque.addLast(3);
286
+
287
+ deque.insert(1, 4);
288
+
289
+ expect(deque.size).toBe(4);
290
+ expect(deque.get(0)).toBe(1);
291
+ expect(deque.get(1)).toBe(4);
292
+ expect(deque.get(2)).toBe(2);
293
+ expect(deque.get(3)).toBe(3);
294
+ });
295
+
296
+ test('should delete elements at a specific index', () => {
297
+ deque.addLast(1);
298
+ deque.addLast(2);
299
+ deque.addLast(3);
300
+
301
+ const deletedElement = deque.delete(1);
302
+
303
+ expect(deque.size).toBe(2);
304
+ expect(deletedElement[0]).toBe(2);
305
+ expect(deque.get(0)).toBe(1);
306
+ expect(deque.get(1)).toBe(3);
307
+ });
308
+ });
309
+
310
+ describe('ObjectDeque', () => {
311
+ let deque: ObjectDeque<number>;
312
+
313
+ beforeEach(() => {
314
+ deque = new ObjectDeque<number>();
315
+ });
316
+
317
+ test('should add elements to the front of the deque', () => {
318
+ deque.addFirst(1);
319
+ deque.addFirst(2);
320
+
321
+ expect(deque.size).toBe(2);
322
+ expect(deque.getFirst()).toBe(2);
323
+ expect(deque.getLast()).toBe(1);
324
+ });
325
+
326
+ test('should add elements to the end of the deque', () => {
327
+ deque.addLast(1);
328
+ deque.addLast(2);
329
+
330
+ expect(deque.size).toBe(2);
331
+ expect(deque.getFirst()).toBe(1);
332
+ expect(deque.getLast()).toBe(2);
333
+ });
334
+
335
+ test('should remove elements from the front of the deque', () => {
336
+ deque.addLast(1);
337
+ deque.addLast(2);
338
+
339
+ const removedElement = deque.popFirst();
340
+
341
+ expect(deque.size).toBe(1);
342
+ expect(removedElement).toBe(1);
343
+ expect(deque.getFirst()).toBe(2);
344
+ });
345
+
346
+ test('should remove elements from the end of the deque', () => {
347
+ deque.addLast(1);
348
+ deque.addLast(2);
349
+
350
+ const removedElement = deque.popFirst();
351
+
352
+ expect(deque.size).toBe(1);
353
+ expect(removedElement).toBe(1);
354
+ expect(deque.getLast()).toBe(2);
355
+ });
356
+
357
+ test('should return the element at the front of the deque without removing it', () => {
358
+ deque.addFirst(1);
359
+ deque.addFirst(2);
360
+
361
+ expect(deque.getFirst()).toBe(2);
362
+ expect(deque.size).toBe(2);
363
+ });
364
+
365
+ test('should return the element at the end of the deque without removing it', () => {
366
+ deque.addLast(1);
367
+ deque.addLast(2);
368
+
369
+ expect(deque.getLast()).toBe(2);
370
+ expect(deque.size).toBe(2);
371
+ });
372
+
373
+ test('should return the correct size of the deque', () => {
374
+ deque.addFirst(1);
375
+ deque.addLast(2);
376
+ deque.addLast(3);
377
+
378
+ expect(deque.size).toBe(3);
379
+ });
380
+
381
+ test('should check if the deque is empty', () => {
382
+ expect(deque.isEmpty()).toBe(true);
383
+
384
+ deque.addFirst(1);
385
+
386
+ expect(deque.isEmpty()).toBe(false);
387
+ });
388
+
389
+ test('should set elements at a specific index', () => {
390
+ deque.addFirst(1);
391
+ deque.addLast(2);
392
+ deque.addLast(3);
393
+
394
+ expect(deque.getFirst()).toBe(1);
395
+ expect(deque.get(1)).toBe(2);
396
+ expect(deque.getLast()).toBe(3);
397
+ });
398
+
399
+ test('should insert elements at a specific index', () => {
400
+ deque.addFirst(1);
401
+ deque.addLast(2);
402
+ deque.addLast(3);
403
+
404
+ expect(deque.size).toBe(3);
405
+ expect(deque.getFirst()).toBe(1);
406
+ expect(deque.get(1)).toBe(2);
407
+ expect(deque.get(2)).toBe(3);
408
+ expect(deque.getLast()).toBe(3);
409
+ });
410
+ });
@@ -1,6 +1,8 @@
1
1
  import {LinkedListQueue, Queue} from '../../../../src';
2
2
  import {bigO, magnitude} from '../../../utils';
3
+ import {isDebugTest} from '../../../config';
3
4
 
5
+ const isDebug = isDebugTest;
4
6
  describe('Queue Operation Test', () => {
5
7
  it('should validate a queue', () => {
6
8
  const queue = new Queue<number>();
@@ -84,7 +86,7 @@ describe('Queue', () => {
84
86
  queue.push(2);
85
87
  expect(queue.size).toBe(2);
86
88
  expect(queue.peek()).toBe(1);
87
- expect(queue.peekLast()).toBe(2);
89
+ expect(queue.getLast()).toBe(2);
88
90
  });
89
91
 
90
92
  it('should shift elements from the front of the queue', () => {
@@ -94,7 +96,7 @@ describe('Queue', () => {
94
96
  expect(shifted).toBe(1);
95
97
  expect(queue.size).toBe(1);
96
98
  expect(queue.peek()).toBe(2);
97
- expect(queue.peekLast()).toBe(2);
99
+ expect(queue.getLast()).toBe(2);
98
100
  });
99
101
 
100
102
  it('should handle shifting when queue reaches half size', () => {
@@ -115,7 +117,7 @@ describe('Queue', () => {
115
117
  queue.push(1);
116
118
  queue.push(2);
117
119
  expect(queue.peek()).toBe(1);
118
- expect(queue.peekLast()).toBe(2);
120
+ expect(queue.getLast()).toBe(2);
119
121
  });
120
122
 
121
123
  it('should handle shifting when the queue is empty', () => {
@@ -127,7 +129,7 @@ describe('Queue', () => {
127
129
 
128
130
  it('should handle peeking when the queue is empty', () => {
129
131
  expect(queue.peek()).toBeUndefined();
130
- expect(queue.peekLast()).toBeUndefined();
132
+ expect(queue.getLast()).toBeUndefined();
131
133
  });
132
134
 
133
135
  it('should handle clearing the queue', () => {
@@ -137,7 +139,7 @@ describe('Queue', () => {
137
139
  queue.clear();
138
140
  expect(queue.size).toBe(0);
139
141
  expect(queue.peek()).toBeUndefined();
140
- expect(queue.peekLast()).toBeUndefined();
142
+ expect(queue.getLast()).toBeUndefined();
141
143
  });
142
144
 
143
145
  it('should clone the queue', () => {
@@ -147,7 +149,7 @@ describe('Queue', () => {
147
149
  const clonedQueue = queue.clone();
148
150
  expect(clonedQueue.size).toBe(3);
149
151
  expect(clonedQueue.peek()).toBe(1);
150
- expect(clonedQueue.peekLast()).toBe(3);
152
+ expect(clonedQueue.getLast()).toBe(3);
151
153
  });
152
154
 
153
155
  it('should handle creating a queue from an array', () => {
@@ -155,7 +157,7 @@ describe('Queue', () => {
155
157
  const newQueue = Queue.fromArray(elements);
156
158
  expect(newQueue.size).toBe(5);
157
159
  expect(newQueue.peek()).toBe(1);
158
- expect(newQueue.peekLast()).toBe(5);
160
+ expect(newQueue.getLast()).toBe(5);
159
161
  });
160
162
 
161
163
  it('should iterate through the queue', () => {
@@ -209,7 +211,7 @@ describe('Queue Performance Test', () => {
209
211
  for (let i = 0; i < dataSize; i++) {
210
212
  queue.dequeue();
211
213
  }
212
- console.log(`Queue Performance Test: ${performance.now() - startTime} ms`);
214
+ isDebug && console.log(`Queue Performance Test: ${performance.now() - startTime} ms`);
213
215
  expect(performance.now() - startTime).toBeLessThan(bigO.LINEAR * 100);
214
216
  });
215
217