data-structure-typed 1.54.3 → 2.0.0
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.
- package/CHANGELOG.md +1 -1
- package/benchmark/report.html +26 -2
- package/benchmark/report.json +292 -42
- package/dist/cjs/data-structures/base/iterable-element-base.d.ts +14 -40
- package/dist/cjs/data-structures/base/iterable-element-base.js +14 -11
- package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
- package/dist/cjs/data-structures/base/linear-base.d.ts +277 -0
- package/dist/cjs/data-structures/base/linear-base.js +553 -0
- package/dist/cjs/data-structures/base/linear-base.js.map +1 -0
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +12 -8
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +50 -37
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +64 -0
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +64 -0
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +62 -0
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +67 -5
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +3 -3
- package/dist/cjs/data-structures/binary-tree/bst.js +14 -14
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +1 -7
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js +1 -7
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +175 -14
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +210 -40
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.js +2 -2
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.d.ts +3 -11
- package/dist/cjs/data-structures/heap/heap.js +0 -10
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/max-heap.d.ts +2 -2
- package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/min-heap.d.ts +2 -2
- package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +131 -146
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +79 -75
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +217 -169
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +2 -2
- package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +130 -91
- package/dist/cjs/data-structures/queue/deque.js +269 -169
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +84 -40
- package/dist/cjs/data-structures/queue/queue.js +134 -50
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/data-structures/stack/stack.d.ts +3 -11
- package/dist/cjs/data-structures/stack/stack.js +0 -10
- package/dist/cjs/data-structures/stack/stack.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +4 -3
- package/dist/cjs/data-structures/trie/trie.js +3 -0
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/types/data-structures/base/base.d.ts +9 -4
- package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
- package/dist/cjs/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
- package/dist/cjs/types/data-structures/queue/deque.d.ts +2 -3
- package/dist/cjs/types/data-structures/queue/queue.d.ts +2 -2
- package/dist/esm/data-structures/base/iterable-element-base.d.ts +14 -40
- package/dist/esm/data-structures/base/iterable-element-base.js +14 -11
- package/dist/esm/data-structures/base/iterable-element-base.js.map +1 -1
- package/dist/esm/data-structures/base/linear-base.d.ts +277 -0
- package/dist/esm/data-structures/base/linear-base.js +549 -0
- package/dist/esm/data-structures/base/linear-base.js.map +1 -0
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +12 -8
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +50 -36
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +64 -0
- package/dist/esm/data-structures/binary-tree/avl-tree.js +64 -0
- package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +62 -0
- package/dist/esm/data-structures/binary-tree/binary-tree.js +67 -5
- package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/bst.d.ts +3 -3
- package/dist/esm/data-structures/binary-tree/bst.js +14 -12
- package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +1 -7
- package/dist/esm/data-structures/binary-tree/red-black-tree.js +1 -7
- package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +175 -14
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js +210 -39
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/graph/abstract-graph.js +2 -2
- package/dist/esm/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/esm/data-structures/heap/heap.d.ts +3 -11
- package/dist/esm/data-structures/heap/heap.js +0 -10
- package/dist/esm/data-structures/heap/heap.js.map +1 -1
- package/dist/esm/data-structures/heap/max-heap.d.ts +2 -2
- package/dist/esm/data-structures/heap/max-heap.js.map +1 -1
- package/dist/esm/data-structures/heap/min-heap.d.ts +2 -2
- package/dist/esm/data-structures/heap/min-heap.js.map +1 -1
- package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
- package/dist/esm/data-structures/linked-list/doubly-linked-list.js +132 -148
- package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +79 -75
- package/dist/esm/data-structures/linked-list/singly-linked-list.js +217 -170
- package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
- package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
- package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +2 -2
- package/dist/esm/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/esm/data-structures/queue/deque.d.ts +130 -91
- package/dist/esm/data-structures/queue/deque.js +269 -169
- package/dist/esm/data-structures/queue/deque.js.map +1 -1
- package/dist/esm/data-structures/queue/queue.d.ts +84 -40
- package/dist/esm/data-structures/queue/queue.js +135 -51
- package/dist/esm/data-structures/queue/queue.js.map +1 -1
- package/dist/esm/data-structures/stack/stack.d.ts +3 -11
- package/dist/esm/data-structures/stack/stack.js +0 -10
- package/dist/esm/data-structures/stack/stack.js.map +1 -1
- package/dist/esm/data-structures/trie/trie.d.ts +4 -3
- package/dist/esm/data-structures/trie/trie.js +3 -0
- package/dist/esm/data-structures/trie/trie.js.map +1 -1
- package/dist/esm/types/data-structures/base/base.d.ts +9 -4
- package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
- package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/esm/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
- package/dist/esm/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
- package/dist/esm/types/data-structures/queue/deque.d.ts +2 -3
- package/dist/esm/types/data-structures/queue/queue.d.ts +2 -2
- package/dist/umd/data-structure-typed.js +1246 -635
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +6 -6
- package/src/data-structures/base/iterable-element-base.ts +29 -20
- package/src/data-structures/base/linear-base.ts +649 -0
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +51 -36
- package/src/data-structures/binary-tree/avl-tree.ts +64 -0
- package/src/data-structures/binary-tree/binary-tree.ts +5 -5
- package/src/data-structures/binary-tree/bst.ts +9 -9
- package/src/data-structures/binary-tree/tree-multi-map.ts +214 -40
- package/src/data-structures/graph/abstract-graph.ts +2 -2
- package/src/data-structures/heap/heap.ts +3 -14
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/heap/min-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +144 -160
- package/src/data-structures/linked-list/singly-linked-list.ts +241 -185
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -5
- package/src/data-structures/priority-queue/min-priority-queue.ts +2 -5
- package/src/data-structures/priority-queue/priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +286 -183
- package/src/data-structures/queue/queue.ts +149 -63
- package/src/data-structures/stack/stack.ts +3 -18
- package/src/data-structures/trie/trie.ts +7 -3
- package/src/types/data-structures/base/base.ts +17 -8
- package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
- package/src/types/data-structures/binary-tree/tree-multi-map.ts +1 -1
- package/src/types/data-structures/linked-list/doubly-linked-list.ts +2 -2
- package/src/types/data-structures/linked-list/singly-linked-list.ts +2 -2
- package/src/types/data-structures/queue/deque.ts +2 -3
- package/src/types/data-structures/queue/queue.ts +2 -2
- package/test/integration/all-in-one.test.ts +1 -1
- package/test/integration/avl-tree.test.ts +1 -1
- package/test/integration/bst.test.ts +2 -2
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +168 -0
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +15 -14
- package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +1 -1
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +165 -7
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +135 -27
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +111 -11
- package/test/unit/data-structures/queue/deque.test.ts +241 -60
- package/test/unit/data-structures/queue/queue.test.ts +118 -19
- package/test/unit/unrestricted-interconversion.test.ts +1 -1
|
@@ -11,21 +11,21 @@ describe('Queue', () => {
|
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('new Queue() should create an empty queue', () => {
|
|
14
|
-
expect(queue.
|
|
14
|
+
expect(queue.length).toBe(0);
|
|
15
15
|
expect(queue.isEmpty()).toBeTruthy();
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
it('push should add elements to the queue', () => {
|
|
19
19
|
queue.push(1);
|
|
20
20
|
queue.push(2);
|
|
21
|
-
expect(queue.
|
|
21
|
+
expect(queue.length).toBe(2);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
it('shift should remove the first element', () => {
|
|
25
25
|
queue.push(1);
|
|
26
26
|
queue.push(2);
|
|
27
27
|
expect(queue.shift()).toBe(1);
|
|
28
|
-
expect(queue.
|
|
28
|
+
expect(queue.length).toBe(1);
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
it('shift should return undefined if queue is empty', () => {
|
|
@@ -36,17 +36,17 @@ describe('Queue', () => {
|
|
|
36
36
|
queue.push(1);
|
|
37
37
|
queue.push(2);
|
|
38
38
|
expect(queue.first).toBe(1);
|
|
39
|
-
expect(queue.
|
|
39
|
+
expect(queue.length).toBe(2);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
it('first should return undefined if queue is empty', () => {
|
|
43
43
|
expect(queue.first).toBeUndefined();
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
it('
|
|
46
|
+
it('length should return the number of elements', () => {
|
|
47
47
|
queue.push(1);
|
|
48
48
|
queue.push(2);
|
|
49
|
-
expect(queue.
|
|
49
|
+
expect(queue.length).toBe(2);
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
it('isEmpty should return true if the queue is empty', () => {
|
|
@@ -68,7 +68,7 @@ describe('Queue', () => {
|
|
|
68
68
|
queue.push(1);
|
|
69
69
|
queue.push(2);
|
|
70
70
|
queue.clear();
|
|
71
|
-
expect(queue.
|
|
71
|
+
expect(queue.length).toBe(0);
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
it('forEach should iterate over all elements', () => {
|
|
@@ -90,6 +90,16 @@ describe('Queue', () => {
|
|
|
90
90
|
expect(queue.isEmpty()).toBeTruthy();
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
+
it('push with maxLen', () => {
|
|
94
|
+
const queue = new Queue<number>([], { maxLen: 10 });
|
|
95
|
+
for (let i = 0; i < 1000; i++) {
|
|
96
|
+
queue.push(i);
|
|
97
|
+
}
|
|
98
|
+
expect(queue.maxLen).toBe(10);
|
|
99
|
+
expect(queue.length).toBe(10);
|
|
100
|
+
expect(queue.first).toBe(990);
|
|
101
|
+
});
|
|
102
|
+
|
|
93
103
|
it('compact method should work well', () => {
|
|
94
104
|
for (let i = 0; i < 1000; i++) queue.push(i);
|
|
95
105
|
|
|
@@ -119,9 +129,9 @@ describe('Queue', () => {
|
|
|
119
129
|
toElementFn: rawElement => rawElement.id
|
|
120
130
|
});
|
|
121
131
|
|
|
122
|
-
expect(queue.
|
|
132
|
+
expect(queue.length).toBe(5);
|
|
123
133
|
queue.shift();
|
|
124
|
-
expect(queue.
|
|
134
|
+
expect(queue.length).toBe(4);
|
|
125
135
|
expect(queue.at(1)).toBe('3');
|
|
126
136
|
});
|
|
127
137
|
|
|
@@ -193,11 +203,11 @@ describe('Queue', () => {
|
|
|
193
203
|
queue.push(9);
|
|
194
204
|
queue.push(10);
|
|
195
205
|
expect(queue.elements.length).toBe(10);
|
|
196
|
-
while (queue.
|
|
197
|
-
expect(queue.
|
|
206
|
+
while (queue.length > 7) queue.shift();
|
|
207
|
+
expect(queue.length).toBe(7);
|
|
198
208
|
expect(queue.elements.length).toBe(10);
|
|
199
209
|
queue.shift();
|
|
200
|
-
expect(queue.
|
|
210
|
+
expect(queue.length).toBe(6);
|
|
201
211
|
expect(queue.elements.length).toBe(6);
|
|
202
212
|
});
|
|
203
213
|
});
|
|
@@ -260,7 +270,7 @@ describe('Queue - Additional Methods', () => {
|
|
|
260
270
|
queue.push(1);
|
|
261
271
|
queue.push(2);
|
|
262
272
|
expect(queue.last).toBe(2);
|
|
263
|
-
expect(queue.
|
|
273
|
+
expect(queue.length).toBe(2);
|
|
264
274
|
});
|
|
265
275
|
|
|
266
276
|
it('peekLast should return undefined if queue is empty', () => {
|
|
@@ -288,12 +298,101 @@ describe('Queue - Additional Methods', () => {
|
|
|
288
298
|
});
|
|
289
299
|
});
|
|
290
300
|
|
|
301
|
+
describe('Queue Additional Methods', () => {
|
|
302
|
+
// Slice method implementation and test
|
|
303
|
+
test('slice should return a new list with specified range', () => {
|
|
304
|
+
const list = new Queue([1, 2, 3, 4, 5]);
|
|
305
|
+
const slicedList = list.slice(1, 4);
|
|
306
|
+
|
|
307
|
+
expect(slicedList.toArray()).toEqual([2, 3, 4]);
|
|
308
|
+
expect(list.length).toBe(5); // Original list unchanged
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
// Splice method implementation
|
|
312
|
+
test('splice should modify list and return removed elements', () => {
|
|
313
|
+
const list = new Queue([1, 2, 3, 4, 5]);
|
|
314
|
+
const removedList = list.splice(2, 2, 6, 7);
|
|
315
|
+
|
|
316
|
+
expect(list.toArray()).toEqual([1, 2, 6, 7, 5]);
|
|
317
|
+
expect(removedList.toArray()).toEqual([3, 4]);
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
// Concat method test
|
|
321
|
+
test('concat should combine multiple lists', () => {
|
|
322
|
+
const list1 = new Queue([1, 2]);
|
|
323
|
+
const list2 = new Queue([3, 4]);
|
|
324
|
+
const list3 = new Queue([5, 6]);
|
|
325
|
+
|
|
326
|
+
const concatenatedList = list1.concat(list2, list3);
|
|
327
|
+
expect(concatenatedList.toArray()).toEqual([1, 2, 3, 4, 5, 6]);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
// Sort method test
|
|
331
|
+
test('sort should order elements in ascending order', () => {
|
|
332
|
+
const list = new Queue([5, 2, 8, 1, 9]);
|
|
333
|
+
list.sort((a, b) => a - b);
|
|
334
|
+
|
|
335
|
+
expect(list.toArray()).toEqual([1, 2, 5, 8, 9]);
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
// Reverse method test
|
|
339
|
+
test('reverse should invert the list order', () => {
|
|
340
|
+
const list = new Queue([1, 2, 3, 4, 5]);
|
|
341
|
+
list.reverse();
|
|
342
|
+
|
|
343
|
+
expect(list.toArray()).toEqual([5, 4, 3, 2, 1]);
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
// Join method test
|
|
347
|
+
test('join should convert list to string with separator', () => {
|
|
348
|
+
const list = new Queue(['a', 'b', 'c']);
|
|
349
|
+
|
|
350
|
+
expect(list.join('-')).toBe('a-b-c');
|
|
351
|
+
expect(list.join()).toBe('a,b,c');
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
// IndexOf method test
|
|
355
|
+
test('indexOf should return first occurrence index', () => {
|
|
356
|
+
const list = new Queue([1, 2, 3, 2, 1]);
|
|
357
|
+
|
|
358
|
+
expect(list.indexOf(2)).toBe(1);
|
|
359
|
+
expect(list.indexOf(4)).toBe(-1);
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
// LastIndexOf method test
|
|
363
|
+
test('lastIndexOf should return last occurrence index', () => {
|
|
364
|
+
const list = new Queue([1, 2, 3, 2, 1]);
|
|
365
|
+
|
|
366
|
+
expect(list.lastIndexOf(2)).toBe(3);
|
|
367
|
+
expect(list.lastIndexOf(4)).toBe(-1);
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
// findIndex method test
|
|
371
|
+
test('findIndex should return first occurrence index', () => {
|
|
372
|
+
const list = new Queue([1, 2, 3, 2, 1]);
|
|
373
|
+
expect(list.findIndex(item => item === 2)).toBe(1);
|
|
374
|
+
expect(list.findIndex(item => item === 4)).toBe(-1);
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
// fill method test
|
|
378
|
+
test('fill should return fill all the list', () => {
|
|
379
|
+
let list = new Queue([1, 2, 3, 2, 1]);
|
|
380
|
+
expect([...list.fill(9)]).toEqual([9, 9, 9, 9, 9]);
|
|
381
|
+
list = new Queue([1, 2, 3, 2, 1]);
|
|
382
|
+
expect([...list.fill(9, 2, 3)]).toEqual([1, 2, 9, 2, 1]);
|
|
383
|
+
list = new Queue([1, 2, 3, 2, 1]);
|
|
384
|
+
expect([...list.fill(9, -3, -2)]).toEqual([1, 2, 9, 2, 1]);
|
|
385
|
+
list = new Queue([1, 2, 3, 2, 1]);
|
|
386
|
+
expect([...list.fill(9, -2, -3)]).toEqual([1, 2, 3, 2, 1]);
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
|
|
291
390
|
describe('Queue - Static and Clone Methods', () => {
|
|
292
391
|
it('fromArray should create a new queue from an array', () => {
|
|
293
392
|
const array = [1, 2, 3];
|
|
294
393
|
const queue = Queue.fromArray(array);
|
|
295
394
|
expect(queue.toArray()).toEqual(array);
|
|
296
|
-
expect(queue.
|
|
395
|
+
expect(queue.length).toBe(array.length);
|
|
297
396
|
});
|
|
298
397
|
|
|
299
398
|
it('fromArray should create an empty queue from an empty array', () => {
|
|
@@ -308,7 +407,7 @@ describe('Queue - Static and Clone Methods', () => {
|
|
|
308
407
|
|
|
309
408
|
const clonedQueue = originalQueue.clone();
|
|
310
409
|
expect(clonedQueue.toArray()).toEqual(originalQueue.toArray());
|
|
311
|
-
expect(clonedQueue.
|
|
410
|
+
expect(clonedQueue.length).toBe(originalQueue.length);
|
|
312
411
|
});
|
|
313
412
|
|
|
314
413
|
it('clone should not affect the original queue when mutated', () => {
|
|
@@ -319,7 +418,7 @@ describe('Queue - Static and Clone Methods', () => {
|
|
|
319
418
|
const clonedQueue = originalQueue.clone();
|
|
320
419
|
clonedQueue.push(3);
|
|
321
420
|
|
|
322
|
-
expect(clonedQueue.
|
|
421
|
+
expect(clonedQueue.length).not.toBe(originalQueue.length);
|
|
323
422
|
expect(originalQueue.toArray()).not.toContain(3);
|
|
324
423
|
});
|
|
325
424
|
});
|
|
@@ -335,14 +434,14 @@ describe('LinkedListQueue', () => {
|
|
|
335
434
|
|
|
336
435
|
it('should push elements to the end of the queue', () => {
|
|
337
436
|
expect(queue.first).toBe('A');
|
|
338
|
-
expect(queue.
|
|
437
|
+
expect(queue.length).toBe(2);
|
|
339
438
|
});
|
|
340
439
|
|
|
341
440
|
it('should shift elements from the front of the queue', () => {
|
|
342
441
|
const dequeued = queue.shift();
|
|
343
442
|
expect(dequeued).toBe('A');
|
|
344
443
|
expect(queue.first).toBe('B');
|
|
345
|
-
expect(queue.
|
|
444
|
+
expect(queue.length).toBe(1);
|
|
346
445
|
});
|
|
347
446
|
|
|
348
447
|
it('should peek at the front of the queue', () => {
|
|
@@ -352,6 +451,6 @@ describe('LinkedListQueue', () => {
|
|
|
352
451
|
it('should clone method work correctly', () => {
|
|
353
452
|
const cloned = queue.clone();
|
|
354
453
|
expect(cloned instanceof LinkedListQueue).toBe(true);
|
|
355
|
-
expect(cloned.
|
|
454
|
+
expect(cloned.length).toBe(2);
|
|
356
455
|
});
|
|
357
456
|
});
|