data-structure-typed 1.54.2 → 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.
Files changed (213) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/LICENSE +2 -2
  3. package/README.md +14 -1
  4. package/README_zh-CN.md +1 -1
  5. package/benchmark/report.html +28 -1
  6. package/benchmark/report.json +327 -18
  7. package/dist/cjs/data-structures/base/iterable-element-base.d.ts +14 -40
  8. package/dist/cjs/data-structures/base/iterable-element-base.js +14 -11
  9. package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
  10. package/dist/cjs/data-structures/base/linear-base.d.ts +277 -0
  11. package/dist/cjs/data-structures/base/linear-base.js +553 -0
  12. package/dist/cjs/data-structures/base/linear-base.js.map +1 -0
  13. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
  14. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +8 -7
  15. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +23 -19
  17. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +51 -38
  18. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  19. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +89 -21
  20. package/dist/cjs/data-structures/binary-tree/avl-tree.js +76 -8
  21. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  22. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +173 -225
  23. package/dist/cjs/data-structures/binary-tree/binary-tree.js +244 -149
  24. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  25. package/dist/cjs/data-structures/binary-tree/bst.d.ts +62 -56
  26. package/dist/cjs/data-structures/binary-tree/bst.js +89 -133
  27. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  28. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +19 -25
  29. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +7 -13
  30. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  31. package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +19 -19
  32. package/dist/cjs/data-structures/binary-tree/tree-counter.js +12 -12
  33. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
  34. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +186 -25
  35. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +211 -41
  36. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  37. package/dist/cjs/data-structures/graph/abstract-graph.js +2 -2
  38. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  39. package/dist/cjs/data-structures/heap/heap.d.ts +3 -11
  40. package/dist/cjs/data-structures/heap/heap.js +0 -10
  41. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  42. package/dist/cjs/data-structures/heap/max-heap.d.ts +2 -2
  43. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  44. package/dist/cjs/data-structures/heap/min-heap.d.ts +2 -2
  45. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  46. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
  47. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +131 -146
  48. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  49. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +79 -75
  50. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +217 -169
  51. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  52. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
  53. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  54. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
  55. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  56. package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +2 -2
  57. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  58. package/dist/cjs/data-structures/queue/deque.d.ts +130 -91
  59. package/dist/cjs/data-structures/queue/deque.js +269 -169
  60. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  61. package/dist/cjs/data-structures/queue/queue.d.ts +84 -40
  62. package/dist/cjs/data-structures/queue/queue.js +134 -50
  63. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  64. package/dist/cjs/data-structures/stack/stack.d.ts +3 -11
  65. package/dist/cjs/data-structures/stack/stack.js +0 -10
  66. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  67. package/dist/cjs/data-structures/trie/trie.d.ts +4 -3
  68. package/dist/cjs/data-structures/trie/trie.js +3 -0
  69. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  70. package/dist/cjs/types/data-structures/base/base.d.ts +9 -4
  71. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  72. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  73. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
  74. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
  75. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
  76. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  77. package/dist/cjs/types/data-structures/queue/deque.d.ts +2 -3
  78. package/dist/cjs/types/data-structures/queue/queue.d.ts +2 -2
  79. package/dist/cjs/utils/utils.d.ts +2 -2
  80. package/dist/esm/data-structures/base/iterable-element-base.d.ts +14 -40
  81. package/dist/esm/data-structures/base/iterable-element-base.js +14 -11
  82. package/dist/esm/data-structures/base/iterable-element-base.js.map +1 -1
  83. package/dist/esm/data-structures/base/linear-base.d.ts +277 -0
  84. package/dist/esm/data-structures/base/linear-base.js +549 -0
  85. package/dist/esm/data-structures/base/linear-base.js.map +1 -0
  86. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
  87. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +9 -8
  88. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  89. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +23 -19
  90. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +52 -38
  91. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  92. package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +89 -21
  93. package/dist/esm/data-structures/binary-tree/avl-tree.js +77 -9
  94. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
  95. package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +173 -225
  96. package/dist/esm/data-structures/binary-tree/binary-tree.js +248 -153
  97. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
  98. package/dist/esm/data-structures/binary-tree/bst.d.ts +62 -56
  99. package/dist/esm/data-structures/binary-tree/bst.js +90 -132
  100. package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
  101. package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +19 -25
  102. package/dist/esm/data-structures/binary-tree/red-black-tree.js +8 -14
  103. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
  104. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +19 -19
  105. package/dist/esm/data-structures/binary-tree/tree-counter.js +13 -13
  106. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
  107. package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +186 -25
  108. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +212 -41
  109. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  110. package/dist/esm/data-structures/graph/abstract-graph.js +2 -2
  111. package/dist/esm/data-structures/graph/abstract-graph.js.map +1 -1
  112. package/dist/esm/data-structures/heap/heap.d.ts +3 -11
  113. package/dist/esm/data-structures/heap/heap.js +0 -10
  114. package/dist/esm/data-structures/heap/heap.js.map +1 -1
  115. package/dist/esm/data-structures/heap/max-heap.d.ts +2 -2
  116. package/dist/esm/data-structures/heap/max-heap.js.map +1 -1
  117. package/dist/esm/data-structures/heap/min-heap.d.ts +2 -2
  118. package/dist/esm/data-structures/heap/min-heap.js.map +1 -1
  119. package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
  120. package/dist/esm/data-structures/linked-list/doubly-linked-list.js +132 -148
  121. package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  122. package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +79 -75
  123. package/dist/esm/data-structures/linked-list/singly-linked-list.js +217 -170
  124. package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -1
  125. package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
  126. package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  127. package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
  128. package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  129. package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +2 -2
  130. package/dist/esm/data-structures/priority-queue/priority-queue.js.map +1 -1
  131. package/dist/esm/data-structures/queue/deque.d.ts +130 -91
  132. package/dist/esm/data-structures/queue/deque.js +269 -169
  133. package/dist/esm/data-structures/queue/deque.js.map +1 -1
  134. package/dist/esm/data-structures/queue/queue.d.ts +84 -40
  135. package/dist/esm/data-structures/queue/queue.js +135 -51
  136. package/dist/esm/data-structures/queue/queue.js.map +1 -1
  137. package/dist/esm/data-structures/stack/stack.d.ts +3 -11
  138. package/dist/esm/data-structures/stack/stack.js +0 -10
  139. package/dist/esm/data-structures/stack/stack.js.map +1 -1
  140. package/dist/esm/data-structures/trie/trie.d.ts +4 -3
  141. package/dist/esm/data-structures/trie/trie.js +3 -0
  142. package/dist/esm/data-structures/trie/trie.js.map +1 -1
  143. package/dist/esm/types/data-structures/base/base.d.ts +9 -4
  144. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  145. package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  146. package/dist/esm/types/data-structures/binary-tree/bst.d.ts +1 -1
  147. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
  148. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
  149. package/dist/esm/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  150. package/dist/esm/types/data-structures/queue/deque.d.ts +2 -3
  151. package/dist/esm/types/data-structures/queue/queue.d.ts +2 -2
  152. package/dist/esm/utils/utils.d.ts +2 -2
  153. package/dist/umd/data-structure-typed.js +1548 -920
  154. package/dist/umd/data-structure-typed.min.js +5 -12
  155. package/dist/umd/data-structure-typed.min.js.map +1 -1
  156. package/package.json +7 -7
  157. package/src/data-structures/base/iterable-element-base.ts +29 -20
  158. package/src/data-structures/base/linear-base.ts +649 -0
  159. package/src/data-structures/binary-tree/avl-tree-counter.ts +30 -23
  160. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +74 -49
  161. package/src/data-structures/binary-tree/avl-tree.ts +99 -29
  162. package/src/data-structures/binary-tree/binary-tree.ts +474 -257
  163. package/src/data-structures/binary-tree/bst.ts +150 -152
  164. package/src/data-structures/binary-tree/red-black-tree.ts +27 -35
  165. package/src/data-structures/binary-tree/tree-counter.ts +33 -27
  166. package/src/data-structures/binary-tree/tree-multi-map.ts +235 -53
  167. package/src/data-structures/graph/abstract-graph.ts +2 -2
  168. package/src/data-structures/heap/heap.ts +3 -14
  169. package/src/data-structures/heap/max-heap.ts +2 -2
  170. package/src/data-structures/heap/min-heap.ts +2 -2
  171. package/src/data-structures/linked-list/doubly-linked-list.ts +144 -160
  172. package/src/data-structures/linked-list/singly-linked-list.ts +241 -185
  173. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -5
  174. package/src/data-structures/priority-queue/min-priority-queue.ts +2 -5
  175. package/src/data-structures/priority-queue/priority-queue.ts +2 -2
  176. package/src/data-structures/queue/deque.ts +286 -183
  177. package/src/data-structures/queue/queue.ts +149 -63
  178. package/src/data-structures/stack/stack.ts +3 -18
  179. package/src/data-structures/trie/trie.ts +7 -3
  180. package/src/types/data-structures/base/base.ts +17 -8
  181. package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
  182. package/src/types/data-structures/binary-tree/binary-tree.ts +1 -0
  183. package/src/types/data-structures/binary-tree/bst.ts +1 -1
  184. package/src/types/data-structures/binary-tree/tree-multi-map.ts +1 -1
  185. package/src/types/data-structures/linked-list/doubly-linked-list.ts +2 -2
  186. package/src/types/data-structures/linked-list/singly-linked-list.ts +2 -2
  187. package/src/types/data-structures/queue/deque.ts +2 -3
  188. package/src/types/data-structures/queue/queue.ts +2 -2
  189. package/src/utils/utils.ts +2 -2
  190. package/test/integration/all-in-one.test.ts +1 -1
  191. package/test/integration/avl-tree.test.ts +1 -1
  192. package/test/integration/bst.test.ts +2 -2
  193. package/test/integration/compile.mjs +21 -21
  194. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +71 -0
  195. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +81 -0
  196. package/test/performance/{reportor.js → reportor.mjs} +264 -8
  197. package/test/performance/reportor.ts +1 -1
  198. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +7 -7
  199. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +172 -5
  200. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +72 -4
  201. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +132 -82
  202. package/test/unit/data-structures/binary-tree/bst.test.ts +12 -12
  203. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +5 -13
  204. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +4 -4
  205. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +168 -10
  206. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +135 -27
  207. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +111 -11
  208. package/test/unit/data-structures/queue/deque.test.ts +241 -60
  209. package/test/unit/data-structures/queue/queue.test.ts +118 -19
  210. package/test/unit/unrestricted-interconversion.test.ts +1 -1
  211. package/test/utils/json2html.ts +0 -154
  212. package/test/performance/data-structures/binary-tree/avl-tree.test.js +0 -45
  213. /package/test/performance/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +0 -0
@@ -37,6 +37,16 @@ describe('SinglyLinkedList Operation Test', () => {
37
37
  list.push(2);
38
38
  expect(list.toArray()).toEqual([1, 2]);
39
39
  });
40
+
41
+ it('push with maxLen', () => {
42
+ const list = new SinglyLinkedList<number>([], { maxLen: 10 });
43
+ for (let i = 0; i < 1000; i++) {
44
+ list.push(i);
45
+ }
46
+ expect(list.maxLen).toBe(10);
47
+ expect(list.length).toBe(10);
48
+ expect(list.first).toBe(990);
49
+ });
40
50
  });
41
51
 
42
52
  describe('pop', () => {
@@ -187,7 +197,7 @@ describe('SinglyLinkedList Operation Test', () => {
187
197
  list.push(3);
188
198
  list.clear();
189
199
  expect(list.toArray()).toEqual([]);
190
- expect(list.size).toBe(0);
200
+ expect(list.length).toBe(0);
191
201
  expect(list.isEmpty()).toBe(true);
192
202
  });
193
203
  });
@@ -277,10 +287,10 @@ describe('SinglyLinkedList Operation Test', () => {
277
287
 
278
288
  describe('getLength', () => {
279
289
  it('should return the correct length of the list', () => {
280
- expect(list.size).toBe(0);
290
+ expect(list.length).toBe(0);
281
291
  list.push(1);
282
292
  list.push(2);
283
- expect(list.size).toBe(2);
293
+ expect(list.length).toBe(2);
284
294
  });
285
295
  });
286
296
 
@@ -290,14 +300,14 @@ describe('SinglyLinkedList Operation Test', () => {
290
300
  list.push(2);
291
301
  list.push(3);
292
302
  const removed = list.deleteAt(1);
293
- expect(removed).toBe(true);
303
+ expect(removed).toBe(2);
294
304
  expect(list.toArray()).toEqual([1, 3]);
295
305
  });
296
306
 
297
307
  it('should return undefined for an out-of-bounds index', () => {
298
308
  list.push(1);
299
309
  const removed = list.deleteAt(1);
300
- expect(removed).toBe(false);
310
+ expect(removed).toBe(undefined);
301
311
  });
302
312
 
303
313
  it('should delete and return the first element', () => {
@@ -308,7 +318,7 @@ describe('SinglyLinkedList Operation Test', () => {
308
318
  const removed = list.deleteAt(0);
309
319
  expect(list.first).toBe(2);
310
320
  expect(list.last).toBe(2);
311
- expect(removed).toBe(true);
321
+ expect(removed).toBe(1);
312
322
  expect(list.toArray()).toEqual([2]);
313
323
  });
314
324
 
@@ -316,7 +326,7 @@ describe('SinglyLinkedList Operation Test', () => {
316
326
  list.push(1);
317
327
  list.push(2);
318
328
  const removed = list.deleteAt(1);
319
- expect(removed).toBe(true);
329
+ expect(removed).toBe(2);
320
330
  expect(list.toArray()).toEqual([1]);
321
331
  });
322
332
  });
@@ -448,6 +458,95 @@ describe('SinglyLinkedList Operation Test', () => {
448
458
  });
449
459
  });
450
460
 
461
+ describe('SinglyLinkedList Additional Methods', () => {
462
+ // Slice method implementation and test
463
+ test('slice should return a new list with specified range', () => {
464
+ const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
465
+ const slicedList = list.slice(1, 4);
466
+
467
+ expect(slicedList.toArray()).toEqual([2, 3, 4]);
468
+ expect(list.length).toBe(5); // Original list unchanged
469
+ });
470
+
471
+ // Splice method implementation
472
+ test('splice should modify list and return removed elements', () => {
473
+ const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
474
+ const removedList = list.splice(2, 2, 6, 7);
475
+
476
+ expect(list.toArray()).toEqual([1, 2, 6, 7, 5]);
477
+ expect(removedList.toArray()).toEqual([3, 4]);
478
+ });
479
+
480
+ // Concat method test
481
+ test('concat should combine multiple lists', () => {
482
+ const list1 = new SinglyLinkedList([1, 2]);
483
+ const list2 = new SinglyLinkedList([3, 4]);
484
+ const list3 = new SinglyLinkedList([5, 6]);
485
+
486
+ const concatenatedList = list1.concat(list2, list3);
487
+ expect(concatenatedList.toArray()).toEqual([1, 2, 3, 4, 5, 6]);
488
+ });
489
+
490
+ // Sort method test
491
+ test('sort should order elements in ascending order', () => {
492
+ const list = new SinglyLinkedList([5, 2, 8, 1, 9]);
493
+ list.sort((a, b) => a - b);
494
+
495
+ expect(list.toArray()).toEqual([1, 2, 5, 8, 9]);
496
+ });
497
+
498
+ // Reverse method test
499
+ test('reverse should invert the list order', () => {
500
+ const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
501
+ list.reverse();
502
+
503
+ expect(list.toArray()).toEqual([5, 4, 3, 2, 1]);
504
+ });
505
+
506
+ // Join method test
507
+ test('join should convert list to string with separator', () => {
508
+ const list = new SinglyLinkedList(['a', 'b', 'c']);
509
+
510
+ expect(list.join('-')).toBe('a-b-c');
511
+ expect(list.join()).toBe('a,b,c');
512
+ });
513
+
514
+ // IndexOf method test
515
+ test('indexOf should return first occurrence index', () => {
516
+ const list = new SinglyLinkedList([1, 2, 3, 2, 1]);
517
+
518
+ expect(list.indexOf(2)).toBe(1);
519
+ expect(list.indexOf(4)).toBe(-1);
520
+ });
521
+
522
+ // LastIndexOf method test
523
+ test('lastIndexOf should return last occurrence index', () => {
524
+ const list = new SinglyLinkedList([1, 2, 3, 2, 1]);
525
+
526
+ expect(list.lastIndexOf(2)).toBe(3);
527
+ expect(list.lastIndexOf(4)).toBe(-1);
528
+ });
529
+
530
+ // findIndex method test
531
+ test('findIndex should return first occurrence index', () => {
532
+ const list = new SinglyLinkedList([1, 2, 3, 2, 1]);
533
+ expect(list.findIndex(item => item === 2)).toBe(1);
534
+ expect(list.findIndex(item => item === 4)).toBe(-1);
535
+ });
536
+
537
+ // fill method test
538
+ test('fill should return fill all the list', () => {
539
+ let list = new SinglyLinkedList([1, 2, 3, 2, 1]);
540
+ expect([...list.fill(9)]).toEqual([9, 9, 9, 9, 9]);
541
+ list = new SinglyLinkedList([1, 2, 3, 2, 1]);
542
+ expect([...list.fill(9, 2, 3)]).toEqual([1, 2, 9, 2, 1]);
543
+ list = new SinglyLinkedList([1, 2, 3, 2, 1]);
544
+ expect([...list.fill(9, -3, -2)]).toEqual([1, 2, 9, 2, 1]);
545
+ list = new SinglyLinkedList([1, 2, 3, 2, 1]);
546
+ expect([...list.fill(9, -2, -3)]).toEqual([1, 2, 3, 2, 1]);
547
+ });
548
+ });
549
+
451
550
  describe('SinglyLinkedList', () => {
452
551
  let list: SinglyLinkedList<number>;
453
552
 
@@ -458,7 +557,7 @@ describe('SinglyLinkedList', () => {
458
557
  it('should initialize an empty list', () => {
459
558
  expect(list.head).toBe(undefined);
460
559
  expect(list.tail).toBe(undefined);
461
- expect(list.size).toBe(0);
560
+ expect(list.length).toBe(0);
462
561
  });
463
562
 
464
563
  it('should push elements to the end of the list', () => {
@@ -466,7 +565,7 @@ describe('SinglyLinkedList', () => {
466
565
  list.push(2);
467
566
  expect(list.head!.value).toBe(1);
468
567
  expect(list.tail!.value).toBe(2);
469
- expect(list.size).toBe(2);
568
+ expect(list.length).toBe(2);
470
569
  });
471
570
 
472
571
  it('should pop elements from the end of the list', () => {
@@ -476,7 +575,7 @@ describe('SinglyLinkedList', () => {
476
575
  expect(popped).toBe(2);
477
576
  expect(list.head!.value).toBe(1);
478
577
  expect(list.tail!.value).toBe(1);
479
- expect(list.size).toBe(1);
578
+ expect(list.length).toBe(1);
480
579
  });
481
580
 
482
581
  it('should reverse the list', () => {
@@ -545,7 +644,8 @@ describe('iterable methods', () => {
545
644
  expect(sl.some(element => element > 2)).toBe(true);
546
645
 
547
646
  expect([...sl.filter(element => element > 2)]).toEqual([3]);
548
- expect([...sl.map(element => element * 2)]).toEqual([2, 4, 6]);
647
+ const mappedSl = sl.map(element => element * 2);
648
+ expect([...mappedSl]).toEqual([2, 4, 6]);
549
649
  expect(sl.reduce((accumulator, element) => accumulator + element, 0)).toEqual(6);
550
650
  });
551
651
  });