data-structure-typed 1.49.4 → 1.49.5

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 (154) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +1 -3
  3. package/README_zh-CN.md +1 -1
  4. package/dist/cjs/data-structures/base/iterable-base.d.ts +1 -1
  5. package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
  6. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +1 -13
  8. package/dist/cjs/data-structures/binary-tree/binary-tree.js +19 -49
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  12. package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +0 -16
  13. package/dist/cjs/data-structures/binary-tree/tree-multimap.js +1 -43
  14. package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
  15. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +1 -1
  16. package/dist/cjs/data-structures/graph/abstract-graph.js +3 -2
  17. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  18. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  19. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
  20. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  21. package/dist/cjs/data-structures/hash/hash-map.d.ts +1 -1
  22. package/dist/cjs/data-structures/hash/hash-map.js +2 -2
  23. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  24. package/dist/cjs/data-structures/heap/heap.js +2 -3
  25. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  26. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  27. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  28. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  29. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  30. package/dist/cjs/data-structures/matrix/index.d.ts +0 -2
  31. package/dist/cjs/data-structures/matrix/index.js +0 -2
  32. package/dist/cjs/data-structures/matrix/index.js.map +1 -1
  33. package/dist/cjs/data-structures/matrix/matrix.d.ts +128 -10
  34. package/dist/cjs/data-structures/matrix/matrix.js +400 -15
  35. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  36. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  37. package/dist/cjs/data-structures/queue/deque.d.ts +2 -2
  38. package/dist/cjs/data-structures/queue/deque.js +5 -7
  39. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  40. package/dist/cjs/data-structures/queue/queue.d.ts +1 -1
  41. package/dist/cjs/types/data-structures/base/base.d.ts +1 -1
  42. package/dist/cjs/types/data-structures/heap/heap.d.ts +1 -1
  43. package/dist/cjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  44. package/dist/cjs/utils/utils.d.ts +1 -0
  45. package/dist/cjs/utils/utils.js +6 -1
  46. package/dist/cjs/utils/utils.js.map +1 -1
  47. package/dist/mjs/data-structures/base/iterable-base.d.ts +1 -1
  48. package/dist/mjs/data-structures/binary-tree/avl-tree.js +2 -1
  49. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +1 -13
  50. package/dist/mjs/data-structures/binary-tree/binary-tree.js +20 -50
  51. package/dist/mjs/data-structures/binary-tree/bst.js +2 -1
  52. package/dist/mjs/data-structures/binary-tree/rb-tree.js +2 -1
  53. package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +0 -16
  54. package/dist/mjs/data-structures/binary-tree/tree-multimap.js +3 -44
  55. package/dist/mjs/data-structures/graph/abstract-graph.d.ts +1 -1
  56. package/dist/mjs/data-structures/graph/abstract-graph.js +4 -3
  57. package/dist/mjs/data-structures/hash/hash-map.d.ts +1 -1
  58. package/dist/mjs/data-structures/hash/hash-map.js +2 -2
  59. package/dist/mjs/data-structures/heap/heap.js +2 -3
  60. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  61. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +1 -1
  62. package/dist/mjs/data-structures/matrix/index.d.ts +0 -2
  63. package/dist/mjs/data-structures/matrix/index.js +0 -2
  64. package/dist/mjs/data-structures/matrix/matrix.d.ts +128 -10
  65. package/dist/mjs/data-structures/matrix/matrix.js +399 -16
  66. package/dist/mjs/data-structures/queue/deque.d.ts +2 -2
  67. package/dist/mjs/data-structures/queue/deque.js +7 -9
  68. package/dist/mjs/data-structures/queue/queue.d.ts +1 -1
  69. package/dist/mjs/data-structures/queue/queue.js +1 -1
  70. package/dist/mjs/types/data-structures/base/base.d.ts +1 -1
  71. package/dist/mjs/types/data-structures/heap/heap.d.ts +1 -1
  72. package/dist/mjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  73. package/dist/mjs/utils/utils.d.ts +1 -0
  74. package/dist/mjs/utils/utils.js +4 -0
  75. package/dist/umd/data-structure-typed.js +356 -524
  76. package/dist/umd/data-structure-typed.min.js +2 -2
  77. package/dist/umd/data-structure-typed.min.js.map +1 -1
  78. package/package.json +4 -3
  79. package/src/data-structures/base/index.ts +1 -1
  80. package/src/data-structures/base/iterable-base.ts +7 -10
  81. package/src/data-structures/binary-tree/avl-tree.ts +15 -8
  82. package/src/data-structures/binary-tree/binary-tree.ts +57 -74
  83. package/src/data-structures/binary-tree/bst.ts +16 -13
  84. package/src/data-structures/binary-tree/rb-tree.ts +16 -10
  85. package/src/data-structures/binary-tree/tree-multimap.ts +11 -48
  86. package/src/data-structures/graph/abstract-graph.ts +13 -11
  87. package/src/data-structures/graph/directed-graph.ts +1 -3
  88. package/src/data-structures/graph/map-graph.ts +6 -1
  89. package/src/data-structures/graph/undirected-graph.ts +3 -6
  90. package/src/data-structures/hash/hash-map.ts +18 -16
  91. package/src/data-structures/heap/heap.ts +7 -10
  92. package/src/data-structures/heap/max-heap.ts +2 -1
  93. package/src/data-structures/heap/min-heap.ts +2 -1
  94. package/src/data-structures/linked-list/singly-linked-list.ts +2 -3
  95. package/src/data-structures/matrix/index.ts +0 -2
  96. package/src/data-structures/matrix/matrix.ts +442 -13
  97. package/src/data-structures/priority-queue/min-priority-queue.ts +11 -10
  98. package/src/data-structures/queue/deque.ts +18 -39
  99. package/src/data-structures/queue/queue.ts +1 -1
  100. package/src/interfaces/binary-tree.ts +7 -2
  101. package/src/types/common.ts +4 -4
  102. package/src/types/data-structures/base/base.ts +14 -3
  103. package/src/types/data-structures/base/index.ts +1 -1
  104. package/src/types/data-structures/graph/abstract-graph.ts +4 -2
  105. package/src/types/data-structures/hash/hash-map.ts +3 -3
  106. package/src/types/data-structures/heap/heap.ts +2 -2
  107. package/src/types/data-structures/priority-queue/priority-queue.ts +2 -2
  108. package/src/utils/utils.ts +7 -1
  109. package/test/integration/avl-tree.test.ts +18 -1
  110. package/test/integration/bst.test.ts +2 -2
  111. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +1 -1
  112. package/test/performance/data-structures/comparison/comparison.test.ts +6 -11
  113. package/test/performance/data-structures/hash/hash-map.test.ts +3 -4
  114. package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +0 -1
  115. package/test/performance/data-structures/queue/deque.test.ts +6 -7
  116. package/test/performance/data-structures/queue/queue.test.ts +10 -9
  117. package/test/performance/reportor.ts +14 -15
  118. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +14 -3
  119. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +59 -24
  120. package/test/unit/data-structures/binary-tree/bst.test.ts +52 -26
  121. package/test/unit/data-structures/binary-tree/overall.test.ts +16 -18
  122. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +17 -6
  123. package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +37 -21
  124. package/test/unit/data-structures/graph/directed-graph.test.ts +104 -45
  125. package/test/unit/data-structures/graph/undirected-graph.test.ts +57 -40
  126. package/test/unit/data-structures/hash/hash-map.test.ts +48 -28
  127. package/test/unit/data-structures/hash/hash-table.test.ts +0 -4
  128. package/test/unit/data-structures/heap/heap.test.ts +0 -1
  129. package/test/unit/data-structures/heap/min-heap.test.ts +6 -5
  130. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +10 -11
  131. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +3 -4
  132. package/test/unit/data-structures/matrix/matrix.test.ts +345 -52
  133. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +1 -1
  134. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -1
  135. package/test/unit/data-structures/queue/deque.test.ts +0 -6
  136. package/test/unit/data-structures/queue/queue.test.ts +1 -1
  137. package/test/unit/data-structures/stack/stack.test.ts +3 -4
  138. package/test/unit/unrestricted-interconversion.test.ts +50 -44
  139. package/test/utils/performanc.ts +1 -1
  140. package/typedoc.json +30 -0
  141. package/dist/cjs/data-structures/matrix/matrix2d.d.ts +0 -107
  142. package/dist/cjs/data-structures/matrix/matrix2d.js +0 -200
  143. package/dist/cjs/data-structures/matrix/matrix2d.js.map +0 -1
  144. package/dist/cjs/data-structures/matrix/vector2d.d.ts +0 -200
  145. package/dist/cjs/data-structures/matrix/vector2d.js +0 -291
  146. package/dist/cjs/data-structures/matrix/vector2d.js.map +0 -1
  147. package/dist/mjs/data-structures/matrix/matrix2d.d.ts +0 -107
  148. package/dist/mjs/data-structures/matrix/matrix2d.js +0 -196
  149. package/dist/mjs/data-structures/matrix/vector2d.d.ts +0 -200
  150. package/dist/mjs/data-structures/matrix/vector2d.js +0 -289
  151. package/src/data-structures/matrix/matrix2d.ts +0 -211
  152. package/src/data-structures/matrix/vector2d.ts +0 -315
  153. package/test/unit/data-structures/matrix/matrix2d.test.ts +0 -345
  154. package/test/unit/data-structures/matrix/vector2d.test.ts +0 -171
@@ -33,24 +33,22 @@ describe('Overall BinaryTree Test', () => {
33
33
  objBST.add([11, { key: 11, keyA: 11 }]);
34
34
  objBST.add([3, { key: 3, keyA: 3 }]);
35
35
 
36
- objBST.addMany(
37
- [
38
- [15, { key: 15, keyA: 15 }],
39
- [1, { key: 1, keyA: 1 }],
40
- [8, { key: 8, keyA: 8 }],
41
- [13, { key: 13, keyA: 13 }],
42
- [16, { key: 16, keyA: 16 }],
43
- [2, { key: 2, keyA: 2 }],
44
- [6, { key: 6, keyA: 6 }],
45
- [9, { key: 9, keyA: 9 }],
46
- [12, { key: 12, keyA: 12 }],
47
- [14, { key: 14, keyA: 14 }],
48
- [4, { key: 4, keyA: 4 }],
49
- [7, { key: 7, keyA: 7 }],
50
- [10, { key: 10, keyA: 10 }],
51
- [5, { key: 5, keyA: 5 }]
52
- ]
53
- );
36
+ objBST.addMany([
37
+ [15, { key: 15, keyA: 15 }],
38
+ [1, { key: 1, keyA: 1 }],
39
+ [8, { key: 8, keyA: 8 }],
40
+ [13, { key: 13, keyA: 13 }],
41
+ [16, { key: 16, keyA: 16 }],
42
+ [2, { key: 2, keyA: 2 }],
43
+ [6, { key: 6, keyA: 6 }],
44
+ [9, { key: 9, keyA: 9 }],
45
+ [12, { key: 12, keyA: 12 }],
46
+ [14, { key: 14, keyA: 14 }],
47
+ [4, { key: 4, keyA: 4 }],
48
+ [7, { key: 7, keyA: 7 }],
49
+ [10, { key: 10, keyA: 10 }],
50
+ [5, { key: 5, keyA: 5 }]
51
+ ]);
54
52
 
55
53
  objBST.delete(11);
56
54
 
@@ -501,9 +501,9 @@ describe('RedBlackTree', () => {
501
501
  expect(tree.isAVLBalanced()).toBe(true);
502
502
 
503
503
  tree.clear();
504
- tree.addMany([10, 20, 30, 40, 50, 60])
504
+ tree.addMany([10, 20, 30, 40, 50, 60]);
505
505
  expect(tree.isAVLBalanced()).toBe(false);
506
- })
506
+ });
507
507
  });
508
508
 
509
509
  describe('RedBlackTree iterative methods test', () => {
@@ -537,13 +537,20 @@ describe('RedBlackTree iterative methods test', () => {
537
537
  test('filter should return a new tree with filtered elements', () => {
538
538
  const filteredTree = rbTree.filter((value, key) => key > 1);
539
539
  expect(filteredTree.size).toBe(2);
540
- expect([...filteredTree]).toEqual([[2, 'b'], [3, 'c']]);
540
+ expect([...filteredTree]).toEqual([
541
+ [2, 'b'],
542
+ [3, 'c']
543
+ ]);
541
544
  });
542
545
 
543
546
  test('map should return a new tree with modified elements', () => {
544
547
  const mappedTree = rbTree.map((value, key) => (key * 2).toString());
545
548
  expect(mappedTree.size).toBe(3);
546
- expect([...mappedTree]).toEqual([[1, '2'], [2, '4'], [3, '6']]);
549
+ expect([...mappedTree]).toEqual([
550
+ [1, '2'],
551
+ [2, '4'],
552
+ [3, '6']
553
+ ]);
547
554
  });
548
555
 
549
556
  test('reduce should accumulate values', () => {
@@ -558,6 +565,10 @@ describe('RedBlackTree iterative methods test', () => {
558
565
  }
559
566
 
560
567
  expect(entries.length).toBe(3);
561
- expect(entries).toEqual([[1, 'a'], [2, 'b'], [3, 'c']]);
568
+ expect(entries).toEqual([
569
+ [1, 'a'],
570
+ [2, 'b'],
571
+ [3, 'c']
572
+ ]);
562
573
  });
563
- });
574
+ });
@@ -15,21 +15,30 @@ describe('TreeMultimap count', () => {
15
15
  let tm: TreeMultimap<number>;
16
16
  beforeEach(() => {
17
17
  tm = new TreeMultimap<number>();
18
-
19
- })
18
+ });
20
19
  it('Should added isolated node count ', () => {
21
- tm.addMany([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]);
20
+ tm.addMany([
21
+ [1, 1],
22
+ [2, 2],
23
+ [3, 3],
24
+ [4, 4],
25
+ [5, 5]
26
+ ]);
22
27
  const newNode = new TreeMultimapNode(3, 33, 10);
23
28
  tm.add(newNode);
24
- expect(tm.count).toBe(15)
25
- })
29
+ expect(tm.count).toBe(15);
30
+ });
26
31
 
27
32
  it('Should count', () => {
28
- tm.addMany([[1, 1], [2, 2], [3, 3]]);
29
- tm.lesserOrGreaterTraverse(node => node.count += 2, CP.gt, 1);
30
- expect(tm.count).toBe(7)
31
- })
32
- })
33
+ tm.addMany([
34
+ [1, 1],
35
+ [2, 2],
36
+ [3, 3]
37
+ ]);
38
+ tm.lesserOrGreaterTraverse(node => (node.count += 2), CP.gt, 1);
39
+ expect(tm.count).toBe(7);
40
+ });
41
+ });
33
42
 
34
43
  describe('TreeMultimap operations test1', () => {
35
44
  it('should perform various operations on a Binary Search Tree with numeric values1', () => {
@@ -256,7 +265,7 @@ describe('TreeMultimap operations test1', () => {
256
265
  expect(objTreeMultimap).toBeInstanceOf(TreeMultimap);
257
266
  objTreeMultimap.add([11, { key: 11, keyA: 11 }]);
258
267
  objTreeMultimap.add([3, { key: 3, keyA: 3 }]);
259
- const values: [number, { key: number, keyA: number }][] = [
268
+ const values: [number, { key: number; keyA: number }][] = [
260
269
  [15, { key: 15, keyA: 15 }],
261
270
  [1, { key: 1, keyA: 1 }],
262
271
  [8, { key: 8, keyA: 8 }],
@@ -273,9 +282,7 @@ describe('TreeMultimap operations test1', () => {
273
282
  [5, { key: 5, keyA: 5 }]
274
283
  ];
275
284
 
276
- objTreeMultimap.addMany(
277
- values
278
- );
285
+ objTreeMultimap.addMany(values);
279
286
 
280
287
  expect(objTreeMultimap.root).toBeInstanceOf(TreeMultimapNode);
281
288
 
@@ -529,9 +536,7 @@ describe('TreeMultimap operations test recursively1', () => {
529
536
  [5, { key: 5, keyA: 5 }]
530
537
  ];
531
538
 
532
- objTreeMultimap.addMany(
533
- values
534
- );
539
+ objTreeMultimap.addMany(values);
535
540
 
536
541
  expect(objTreeMultimap.root).toBeInstanceOf(TreeMultimapNode);
537
542
 
@@ -632,13 +637,20 @@ describe('TreeMultimap iterative methods test', () => {
632
637
  test('filter should return a new tree with filtered elements', () => {
633
638
  const filteredTree = treeMM.filter((value, key) => key > 1);
634
639
  expect(filteredTree.size).toBe(2);
635
- expect([...filteredTree]).toEqual([[2, 'b'], [3, 'c']]);
640
+ expect([...filteredTree]).toEqual([
641
+ [2, 'b'],
642
+ [3, 'c']
643
+ ]);
636
644
  });
637
645
 
638
646
  test('map should return a new tree with modified elements', () => {
639
647
  const mappedTree = treeMM.map((value, key) => (key * 2).toString());
640
648
  expect(mappedTree.size).toBe(3);
641
- expect([...mappedTree]).toEqual([[1, '2'], [2, '4'], [3, '6']]);
649
+ expect([...mappedTree]).toEqual([
650
+ [1, '2'],
651
+ [2, '4'],
652
+ [3, '6']
653
+ ]);
642
654
  });
643
655
 
644
656
  test('reduce should accumulate values', () => {
@@ -653,11 +665,15 @@ describe('TreeMultimap iterative methods test', () => {
653
665
  }
654
666
 
655
667
  expect(entries.length).toBe(3);
656
- expect(entries).toEqual([[1, 'a'], [2, 'b'], [3, 'c']]);
668
+ expect(entries).toEqual([
669
+ [1, 'a'],
670
+ [2, 'b'],
671
+ [3, 'c']
672
+ ]);
657
673
  });
658
674
 
659
675
  test('should clone work well', () => {
660
- expect(treeMM.count).toBe(21)
676
+ expect(treeMM.count).toBe(21);
661
677
  const cloned = treeMM.clone();
662
678
  expect(cloned.root?.left?.key).toBe(1);
663
679
  expect(cloned.root?.right?.value).toBe('c');
@@ -378,11 +378,61 @@ describe('Inherit from DirectedGraph and perform operations test2.', () => {
378
378
 
379
379
  expect(predecessor).toBeInstanceOf(Array);
380
380
  expect(predecessor.length).toBe(9);
381
- expect(predecessor[0]).toEqual([vertex2, undefined, vertex2, undefined, vertex3, undefined, vertex4, undefined, undefined]);
382
- expect(predecessor[1]).toEqual([undefined, vertex1, undefined, vertex1, vertex3, undefined, vertex4, undefined, vertex1]);
383
- expect(predecessor[5]).toEqual([undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]);
384
- expect(predecessor[7]).toEqual([undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]);
385
- expect(predecessor[8]).toEqual([vertex7, vertex7, vertex7, vertex7, vertex7, undefined, undefined, undefined, vertex7]);
381
+ expect(predecessor[0]).toEqual([
382
+ vertex2,
383
+ undefined,
384
+ vertex2,
385
+ undefined,
386
+ vertex3,
387
+ undefined,
388
+ vertex4,
389
+ undefined,
390
+ undefined
391
+ ]);
392
+ expect(predecessor[1]).toEqual([
393
+ undefined,
394
+ vertex1,
395
+ undefined,
396
+ vertex1,
397
+ vertex3,
398
+ undefined,
399
+ vertex4,
400
+ undefined,
401
+ vertex1
402
+ ]);
403
+ expect(predecessor[5]).toEqual([
404
+ undefined,
405
+ undefined,
406
+ undefined,
407
+ undefined,
408
+ undefined,
409
+ undefined,
410
+ undefined,
411
+ undefined,
412
+ undefined
413
+ ]);
414
+ expect(predecessor[7]).toEqual([
415
+ undefined,
416
+ undefined,
417
+ undefined,
418
+ undefined,
419
+ undefined,
420
+ undefined,
421
+ undefined,
422
+ undefined,
423
+ undefined
424
+ ]);
425
+ expect(predecessor[8]).toEqual([
426
+ vertex7,
427
+ vertex7,
428
+ vertex7,
429
+ vertex7,
430
+ vertex7,
431
+ undefined,
432
+ undefined,
433
+ undefined,
434
+ vertex7
435
+ ]);
386
436
  }
387
437
 
388
438
  const dijkstraRes12tt = myGraph.dijkstra(1, 2, true, true);
@@ -622,7 +672,10 @@ describe('DirectedGraph iterative Methods', () => {
622
672
 
623
673
  test('filter should return vertexMap that satisfy the condition', () => {
624
674
  const filtered = graph.filter((value, vertex) => vertex === 'A' || vertex === 'B');
625
- expect(filtered).toEqual([["A", undefined], ["B", undefined]]);
675
+ expect(filtered).toEqual([
676
+ ['A', undefined],
677
+ ['B', undefined]
678
+ ]);
626
679
  });
627
680
 
628
681
  test('map should apply a function to each vertex and return a new array', () => {
@@ -637,53 +690,53 @@ describe('DirectedGraph iterative Methods', () => {
637
690
 
638
691
  test('Removing an edge of a DirectedGraph should delete additional edges', () => {
639
692
  const dg = new DirectedGraph();
640
- dg.addVertex('hello')
641
- dg.addVertex('hi')
642
- dg.addVertex('hey')
643
- dg.addEdge('hello', 'hi')
644
- dg.addEdge('hello', 'hey')
645
- expect(dg.getEdge('hello', 'hi')?.src).toBe('hello')
646
- expect(dg.getEdge('hello', 'hi')?.dest).toBe('hi')
647
- expect(dg.getEdge('hello', 'hey')?.src).toBe('hello')
648
- expect(dg.getEdge('hello', 'hey')?.dest).toBe('hey')
649
- dg.deleteEdge('hello', 'hi')
650
- expect(dg.getEdge('hello', 'hi')).toBe(undefined)
651
- expect(dg.getEdge('hello', 'hey')).toBeInstanceOf(DirectedEdge)
652
- expect(dg.incomingEdgesOf("Hi")).toEqual([])
693
+ dg.addVertex('hello');
694
+ dg.addVertex('hi');
695
+ dg.addVertex('hey');
696
+ dg.addEdge('hello', 'hi');
697
+ dg.addEdge('hello', 'hey');
698
+ expect(dg.getEdge('hello', 'hi')?.src).toBe('hello');
699
+ expect(dg.getEdge('hello', 'hi')?.dest).toBe('hi');
700
+ expect(dg.getEdge('hello', 'hey')?.src).toBe('hello');
701
+ expect(dg.getEdge('hello', 'hey')?.dest).toBe('hey');
702
+ dg.deleteEdge('hello', 'hi');
703
+ expect(dg.getEdge('hello', 'hi')).toBe(undefined);
704
+ expect(dg.getEdge('hello', 'hey')).toBeInstanceOf(DirectedEdge);
705
+ expect(dg.incomingEdgesOf('Hi')).toEqual([]);
653
706
  });
654
707
 
655
708
  test('Removing a vertex of a DirectedGraph should delete additional edges', () => {
656
709
  const graph = new DirectedGraph();
657
710
 
658
- graph.addVertex("Hello");
659
- graph.addVertex("Hi");
711
+ graph.addVertex('Hello');
712
+ graph.addVertex('Hi');
660
713
 
661
- graph.addEdge("Hello", "Hi");
662
- graph.deleteVertex("Hello");
714
+ graph.addEdge('Hello', 'Hi');
715
+ graph.deleteVertex('Hello');
663
716
 
664
- expect(graph.incomingEdgesOf("Hi")).toEqual([]);
665
- })
717
+ expect(graph.incomingEdgesOf('Hi')).toEqual([]);
718
+ });
666
719
 
667
720
  test('Removing a vertex from a DirectedGraph should remove its edges', () => {
668
721
  const dg = new DirectedGraph();
669
- dg.addVertex('hello')
670
- dg.addVertex('world')
671
- dg.addVertex('earth')
722
+ dg.addVertex('hello');
723
+ dg.addVertex('world');
724
+ dg.addVertex('earth');
672
725
 
673
- dg.addEdge('hello', 'world')
674
- dg.addEdge('hello', 'earth')
675
- dg.addEdge('world', 'earth')
726
+ dg.addEdge('hello', 'world');
727
+ dg.addEdge('hello', 'earth');
728
+ dg.addEdge('world', 'earth');
676
729
 
677
730
  expect(dg.getEdge('hello', 'world')?.src).toBe('hello');
678
- expect(dg.edgeSet().length).toBe(3)
679
- expect(dg.edgeSet()[0].dest).toBe('world')
731
+ expect(dg.edgeSet().length).toBe(3);
732
+ expect(dg.edgeSet()[0].dest).toBe('world');
680
733
 
681
- dg.deleteVertex('hello')
682
- expect(dg.edgeSet().length).toBe(1)
683
- expect(dg.edgeSet()?.[0].src).toBe('world')
734
+ dg.deleteVertex('hello');
735
+ expect(dg.edgeSet().length).toBe(1);
736
+ expect(dg.edgeSet()?.[0].src).toBe('world');
684
737
 
685
738
  expect(dg.getEdge('hello', 'world')).toBe(undefined);
686
- })
739
+ });
687
740
  });
688
741
 
689
742
  describe('DirectedGraph getCycles', () => {
@@ -702,8 +755,8 @@ describe('DirectedGraph getCycles', () => {
702
755
  graph.addEdge('E', 'B');
703
756
  const cycles = graph.getCycles();
704
757
  expect(cycles.length).toBe(1);
705
- expect(cycles[0]).toEqual(["B", "D", "E"]);
706
- })
758
+ expect(cycles[0]).toEqual(['B', 'D', 'E']);
759
+ });
707
760
 
708
761
  test('should simple cycles graph getCycles return correct result', () => {
709
762
  const graph = new DirectedGraph();
@@ -719,8 +772,11 @@ describe('DirectedGraph getCycles', () => {
719
772
  graph.addEdge('A', 'D');
720
773
  graph.addEdge('D', 'C');
721
774
  const cycles = graph.getCycles();
722
- expect(cycles.length).toBe(2)
723
- expect(cycles).toEqual([["A", "B", "C"], ["A", "D", "C"]])
775
+ expect(cycles.length).toBe(2);
776
+ expect(cycles).toEqual([
777
+ ['A', 'B', 'C'],
778
+ ['A', 'D', 'C']
779
+ ]);
724
780
  });
725
781
 
726
782
  test('should 3 cycles graph getCycles return correct result', () => {
@@ -746,8 +802,11 @@ describe('DirectedGraph getCycles', () => {
746
802
  graph.addEdge('G', 'A');
747
803
 
748
804
  const cycles = graph.getCycles();
749
- expect(cycles.length).toBe(3)
750
- expect(cycles).toEqual([["A", "C", "G"], ["B", "D", "E"], ["B", "F", "E"]]);
805
+ expect(cycles.length).toBe(3);
806
+ expect(cycles).toEqual([
807
+ ['A', 'C', 'G'],
808
+ ['B', 'D', 'E'],
809
+ ['B', 'F', 'E']
810
+ ]);
751
811
  });
752
- })
753
-
812
+ });
@@ -176,53 +176,52 @@ describe('UndirectedGraph', () => {
176
176
 
177
177
  test('Removing an edge of a UndirectedGraph should not delete additional edges', () => {
178
178
  const dg = new UndirectedGraph();
179
- dg.addVertex('hello')
180
- dg.addVertex('hi')
181
- dg.addVertex('hey')
182
- dg.addEdge('hello', 'hi')
183
- dg.addEdge('hello', 'hey')
184
- expect(dg.getEdge('hello', 'hi')?.vertexMap[0]).toBe('hello')
185
- expect(dg.getEdge('hello', 'hi')?.vertexMap[1]).toBe('hi')
186
- expect(dg.getEdge('hello', 'hey')?.vertexMap[0]).toBe('hello')
187
- expect(dg.getEdge('hello', 'hey')?.vertexMap[1]).toBe('hey')
188
- dg.deleteEdge('hello', 'hi')
189
- expect(dg.getEdge('hello', 'hi')).toBe(undefined)
190
- expect(dg.getEdge('hello', 'hey')).toBeInstanceOf(UndirectedEdge)
179
+ dg.addVertex('hello');
180
+ dg.addVertex('hi');
181
+ dg.addVertex('hey');
182
+ dg.addEdge('hello', 'hi');
183
+ dg.addEdge('hello', 'hey');
184
+ expect(dg.getEdge('hello', 'hi')?.vertexMap[0]).toBe('hello');
185
+ expect(dg.getEdge('hello', 'hi')?.vertexMap[1]).toBe('hi');
186
+ expect(dg.getEdge('hello', 'hey')?.vertexMap[0]).toBe('hello');
187
+ expect(dg.getEdge('hello', 'hey')?.vertexMap[1]).toBe('hey');
188
+ dg.deleteEdge('hello', 'hi');
189
+ expect(dg.getEdge('hello', 'hi')).toBe(undefined);
190
+ expect(dg.getEdge('hello', 'hey')).toBeInstanceOf(UndirectedEdge);
191
191
  });
192
192
 
193
-
194
193
  test('Removing a vertex of a DirectedGraph should delete additional edges', () => {
195
194
  const graph = new UndirectedGraph();
196
195
 
197
- graph.addVertex("Hello");
198
- graph.addVertex("Hi");
196
+ graph.addVertex('Hello');
197
+ graph.addVertex('Hi');
199
198
 
200
- graph.addEdge("Hello", "Hi");
201
- graph.deleteVertex("Hello");
199
+ graph.addEdge('Hello', 'Hi');
200
+ graph.deleteVertex('Hello');
202
201
 
203
- expect(graph.edgesOf("Hi")).toEqual([]);
204
- })
202
+ expect(graph.edgesOf('Hi')).toEqual([]);
203
+ });
205
204
 
206
205
  test('Removing a vertex from a UndirectedGraph should remove its edges', () => {
207
206
  const dg = new UndirectedGraph();
208
- dg.addVertex('hello')
209
- dg.addVertex('world')
210
- dg.addVertex('earth')
207
+ dg.addVertex('hello');
208
+ dg.addVertex('world');
209
+ dg.addVertex('earth');
211
210
 
212
- dg.addEdge('hello', 'world')
213
- dg.addEdge('hello', 'earth')
214
- dg.addEdge('world', 'earth')
211
+ dg.addEdge('hello', 'world');
212
+ dg.addEdge('hello', 'earth');
213
+ dg.addEdge('world', 'earth');
215
214
 
216
215
  expect(dg.getEdge('hello', 'world')?.vertexMap[0]).toBe('hello');
217
- expect(dg.edgeSet().length).toBe(3)
218
- expect(dg.edgeSet()[0].vertexMap).toEqual(['hello', 'world'])
216
+ expect(dg.edgeSet().length).toBe(3);
217
+ expect(dg.edgeSet()[0].vertexMap).toEqual(['hello', 'world']);
219
218
 
220
- dg.deleteVertex('hello')
221
- expect(dg.edgeSet().length).toBe(1)
222
- expect(dg.edgeSet()?.[0].vertexMap[0]).toBe('world')
219
+ dg.deleteVertex('hello');
220
+ expect(dg.edgeSet().length).toBe(1);
221
+ expect(dg.edgeSet()?.[0].vertexMap[0]).toBe('world');
223
222
 
224
223
  expect(dg.getEdge('hello', 'world')).toBe(undefined);
225
- })
224
+ });
226
225
  });
227
226
 
228
227
  describe('cycles, strongly connected components, bridges, articular points in UndirectedGraph', () => {
@@ -258,8 +257,7 @@ describe('cycles, strongly connected components, bridges, articular points in Un
258
257
  expect(lowMap.size).toBe(8);
259
258
  });
260
259
 
261
- it("Should return Infinity if dest is not found", () => {
262
-
260
+ it('Should return Infinity if dest is not found', () => {
263
261
  const graph = new UndirectedGraph<string>();
264
262
 
265
263
  for (let i = 0; i < 3; ++i) {
@@ -291,8 +289,12 @@ describe('UndirectedGraph getCycles', () => {
291
289
  graph.addEdge('E', 'B');
292
290
  const cycles = graph.getCycles();
293
291
  expect(cycles.length).toBe(3);
294
- expect(cycles).toEqual([["A", "B", "D", "C"], ["A", "B", "E", "D", "C"], ["B", "D", "E"]]);
295
- })
292
+ expect(cycles).toEqual([
293
+ ['A', 'B', 'D', 'C'],
294
+ ['A', 'B', 'E', 'D', 'C'],
295
+ ['B', 'D', 'E']
296
+ ]);
297
+ });
296
298
 
297
299
  test('should simple cycles graph getCycles return correct result', () => {
298
300
  const graph = new UndirectedGraph();
@@ -308,8 +310,12 @@ describe('UndirectedGraph getCycles', () => {
308
310
  graph.addEdge('A', 'D');
309
311
  graph.addEdge('D', 'C');
310
312
  const cycles = graph.getCycles();
311
- expect(cycles.length).toBe(3)
312
- expect(cycles).toEqual([["A", "B", "C"], ["A", "B", "C", "D"], ["A", "C", "D"]])
313
+ expect(cycles.length).toBe(3);
314
+ expect(cycles).toEqual([
315
+ ['A', 'B', 'C'],
316
+ ['A', 'B', 'C', 'D'],
317
+ ['A', 'C', 'D']
318
+ ]);
313
319
  });
314
320
 
315
321
  test('should 3 cycles graph getCycles return correct result', () => {
@@ -335,7 +341,18 @@ describe('UndirectedGraph getCycles', () => {
335
341
  graph.addEdge('G', 'A');
336
342
 
337
343
  const cycles = graph.getCycles();
338
- expect(cycles.length).toBe(10)
339
- expect(cycles).toEqual([["A", "B", "D", "C"], ["A", "B", "D", "C", "G"], ["A", "B", "E", "D", "C"], ["A", "B", "E", "D", "C", "G"], ["A", "B", "F", "E", "D", "C"], ["A", "B", "F", "E", "D", "C", "G"], ["A", "C", "G"], ["B", "D", "E"], ["B", "D", "E", "F"], ["B", "E", "F"]]);
344
+ expect(cycles.length).toBe(10);
345
+ expect(cycles).toEqual([
346
+ ['A', 'B', 'D', 'C'],
347
+ ['A', 'B', 'D', 'C', 'G'],
348
+ ['A', 'B', 'E', 'D', 'C'],
349
+ ['A', 'B', 'E', 'D', 'C', 'G'],
350
+ ['A', 'B', 'F', 'E', 'D', 'C'],
351
+ ['A', 'B', 'F', 'E', 'D', 'C', 'G'],
352
+ ['A', 'C', 'G'],
353
+ ['B', 'D', 'E'],
354
+ ['B', 'D', 'E', 'F'],
355
+ ['B', 'E', 'F']
356
+ ]);
340
357
  });
341
- })
358
+ });