data-structure-typed 1.15.1 → 1.16.1

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 (224) hide show
  1. package/README.md +398 -27
  2. package/dist/data-structures/binary-tree/binary-tree.d.ts +30 -30
  3. package/dist/data-structures/binary-tree/binary-tree.js +55 -55
  4. package/dist/data-structures/binary-tree/segment-tree.d.ts +17 -17
  5. package/dist/data-structures/binary-tree/segment-tree.js +30 -30
  6. package/dist/data-structures/graph/abstract-graph.d.ts +6 -6
  7. package/dist/data-structures/graph/abstract-graph.js +6 -6
  8. package/dist/data-structures/graph/directed-graph.d.ts +4 -4
  9. package/dist/data-structures/graph/directed-graph.js +6 -6
  10. package/dist/data-structures/graph/undirected-graph.d.ts +3 -3
  11. package/dist/data-structures/hash/coordinate-map.d.ts +2 -2
  12. package/dist/data-structures/hash/coordinate-set.d.ts +2 -2
  13. package/dist/data-structures/heap/heap.d.ts +40 -25
  14. package/dist/data-structures/heap/heap.js +72 -27
  15. package/dist/data-structures/heap/max-heap.d.ts +3 -3
  16. package/dist/data-structures/heap/min-heap.d.ts +3 -3
  17. package/dist/data-structures/index.d.ts +1 -0
  18. package/dist/data-structures/index.js +1 -0
  19. package/dist/data-structures/linked-list/doubly-linked-list.d.ts +9 -9
  20. package/dist/data-structures/linked-list/doubly-linked-list.js +12 -12
  21. package/dist/data-structures/linked-list/singly-linked-list.d.ts +7 -7
  22. package/dist/data-structures/priority-queue/max-priority-queue.d.ts +4 -5
  23. package/dist/data-structures/priority-queue/max-priority-queue.js +30 -6
  24. package/dist/data-structures/priority-queue/min-priority-queue.d.ts +4 -5
  25. package/dist/data-structures/priority-queue/min-priority-queue.js +31 -6
  26. package/dist/data-structures/priority-queue/priority-queue.d.ts +20 -9
  27. package/dist/data-structures/priority-queue/priority-queue.js +34 -28
  28. package/dist/data-structures/queue/deque.d.ts +1 -1
  29. package/dist/data-structures/tree/index.d.ts +1 -0
  30. package/dist/data-structures/tree/index.js +17 -0
  31. package/dist/data-structures/tree/tree.d.ts +9 -0
  32. package/dist/data-structures/tree/tree.js +52 -0
  33. package/dist/data-structures/types/heap.d.ts +0 -4
  34. package/dist/utils/types/utils.d.ts +1 -3
  35. package/dist/utils/types/utils.js +0 -14
  36. package/dist/utils/utils.js +0 -197
  37. package/docs/.nojekyll +1 -0
  38. package/docs/assets/highlight.css +92 -0
  39. package/docs/assets/main.js +58 -0
  40. package/docs/assets/search.js +1 -0
  41. package/docs/assets/style.css +1367 -0
  42. package/docs/classes/AVLTree.html +2192 -0
  43. package/docs/classes/AVLTreeNode.html +574 -0
  44. package/docs/classes/AaTree.html +150 -0
  45. package/docs/classes/AbstractEdge.html +269 -0
  46. package/docs/classes/AbstractGraph.html +927 -0
  47. package/docs/classes/AbstractVertex.html +215 -0
  48. package/docs/classes/ArrayDeque.html +417 -0
  49. package/docs/classes/BST.html +2038 -0
  50. package/docs/classes/BSTNode.html +570 -0
  51. package/docs/classes/BTree.html +150 -0
  52. package/docs/classes/BinaryIndexedTree.html +289 -0
  53. package/docs/classes/BinaryTree.html +1827 -0
  54. package/docs/classes/BinaryTreeNode.html +533 -0
  55. package/docs/classes/Character.html +198 -0
  56. package/docs/classes/CoordinateMap.html +469 -0
  57. package/docs/classes/CoordinateSet.html +430 -0
  58. package/docs/classes/Deque.html +767 -0
  59. package/docs/classes/DirectedEdge.html +354 -0
  60. package/docs/classes/DirectedGraph.html +1243 -0
  61. package/docs/classes/DirectedVertex.html +226 -0
  62. package/docs/classes/DoublyLinkedList.html +733 -0
  63. package/docs/classes/DoublyLinkedListNode.html +258 -0
  64. package/docs/classes/Heap.html +482 -0
  65. package/docs/classes/HeapItem.html +233 -0
  66. package/docs/classes/Matrix2D.html +480 -0
  67. package/docs/classes/MatrixNTI2D.html +218 -0
  68. package/docs/classes/MaxHeap.html +500 -0
  69. package/docs/classes/MaxPriorityQueue.html +809 -0
  70. package/docs/classes/MinHeap.html +501 -0
  71. package/docs/classes/MinPriorityQueue.html +811 -0
  72. package/docs/classes/Navigator.html +291 -0
  73. package/docs/classes/ObjectDeque.html +423 -0
  74. package/docs/classes/PriorityQueue.html +733 -0
  75. package/docs/classes/Queue.html +370 -0
  76. package/docs/classes/RBTree.html +150 -0
  77. package/docs/classes/SegmentTree.html +345 -0
  78. package/docs/classes/SegmentTreeNode.html +418 -0
  79. package/docs/classes/SinglyLinkedList.html +1105 -0
  80. package/docs/classes/SinglyLinkedListNode.html +375 -0
  81. package/docs/classes/SplayTree.html +150 -0
  82. package/docs/classes/Stack.html +346 -0
  83. package/docs/classes/TreeMultiSet.html +2036 -0
  84. package/docs/classes/TreeNode.html +236 -0
  85. package/docs/classes/Trie.html +350 -0
  86. package/docs/classes/TrieNode.html +258 -0
  87. package/docs/classes/TwoThreeTree.html +150 -0
  88. package/docs/classes/UndirectedEdge.html +313 -0
  89. package/docs/classes/UndirectedGraph.html +1080 -0
  90. package/docs/classes/UndirectedVertex.html +226 -0
  91. package/docs/classes/Vector2D.html +783 -0
  92. package/docs/enums/CP.html +159 -0
  93. package/docs/enums/FamilyPosition.html +159 -0
  94. package/docs/enums/LoopType.html +160 -0
  95. package/docs/index.html +494 -0
  96. package/docs/interfaces/AVLTreeDeleted.html +161 -0
  97. package/docs/interfaces/BinaryTreeNodeObj.html +168 -0
  98. package/docs/interfaces/HeapOptions.html +167 -0
  99. package/docs/interfaces/IDirectedGraph.html +243 -0
  100. package/docs/interfaces/IGraph.html +427 -0
  101. package/docs/interfaces/NavigatorParams.html +197 -0
  102. package/docs/interfaces/PriorityQueueOptions.html +168 -0
  103. package/docs/modules.html +218 -0
  104. package/docs/types/BSTComparator.html +140 -0
  105. package/docs/types/BSTDeletedResult.html +137 -0
  106. package/docs/types/BinaryTreeDeleted.html +137 -0
  107. package/docs/types/BinaryTreeNodeId.html +125 -0
  108. package/docs/types/BinaryTreeNodePropertyName.html +125 -0
  109. package/docs/types/DFSOrderPattern.html +125 -0
  110. package/docs/types/DijkstraResult.html +145 -0
  111. package/docs/types/Direction.html +125 -0
  112. package/docs/types/DoublyLinkedListGetBy.html +125 -0
  113. package/docs/types/NodeOrPropertyName.html +125 -0
  114. package/docs/types/PriorityQueueComparator.html +145 -0
  115. package/docs/types/PriorityQueueDFSOrderPattern.html +125 -0
  116. package/docs/types/ResultByProperty.html +130 -0
  117. package/docs/types/ResultsByProperty.html +130 -0
  118. package/docs/types/SegmentTreeNodeVal.html +125 -0
  119. package/docs/types/SpecifyOptional.html +132 -0
  120. package/docs/types/Thunk.html +133 -0
  121. package/docs/types/ToThunkFn.html +133 -0
  122. package/docs/types/TopologicalStatus.html +125 -0
  123. package/docs/types/TreeMultiSetDeletedResult.html +137 -0
  124. package/docs/types/TrlAsyncFn.html +138 -0
  125. package/docs/types/TrlFn.html +138 -0
  126. package/docs/types/Turning.html +125 -0
  127. package/docs/types/VertexId.html +125 -0
  128. package/{tests/unit/data-structures/binary-tree → notes}/bst.test.ts +11 -15
  129. package/notes/note.md +23 -0
  130. package/package.json +2 -4
  131. package/.idea/data-structure-typed.iml +0 -14
  132. package/.idea/modules.xml +0 -8
  133. package/.idea/vcs.xml +0 -6
  134. package/src/assets/complexities-diff.jpg +0 -0
  135. package/src/assets/data-structure-complexities.jpg +0 -0
  136. package/src/assets/logo.png +0 -0
  137. package/src/data-structures/binary-tree/aa-tree.ts +0 -3
  138. package/src/data-structures/binary-tree/avl-tree.ts +0 -293
  139. package/src/data-structures/binary-tree/b-tree.ts +0 -3
  140. package/src/data-structures/binary-tree/binary-indexed-tree.ts +0 -69
  141. package/src/data-structures/binary-tree/binary-tree.ts +0 -1485
  142. package/src/data-structures/binary-tree/bst.ts +0 -497
  143. package/src/data-structures/binary-tree/diagrams/avl-tree-inserting.gif +0 -0
  144. package/src/data-structures/binary-tree/diagrams/bst-rotation.gif +0 -0
  145. package/src/data-structures/binary-tree/diagrams/segment-tree.png +0 -0
  146. package/src/data-structures/binary-tree/index.ts +0 -11
  147. package/src/data-structures/binary-tree/rb-tree.ts +0 -3
  148. package/src/data-structures/binary-tree/segment-tree.ts +0 -248
  149. package/src/data-structures/binary-tree/splay-tree.ts +0 -3
  150. package/src/data-structures/binary-tree/tree-multiset.ts +0 -53
  151. package/src/data-structures/binary-tree/two-three-tree.ts +0 -3
  152. package/src/data-structures/diagrams/README.md +0 -5
  153. package/src/data-structures/graph/abstract-graph.ts +0 -956
  154. package/src/data-structures/graph/diagrams/adjacency-list-pros-cons.jpg +0 -0
  155. package/src/data-structures/graph/diagrams/adjacency-list.jpg +0 -0
  156. package/src/data-structures/graph/diagrams/adjacency-matrix-pros-cons.jpg +0 -0
  157. package/src/data-structures/graph/diagrams/adjacency-matrix.jpg +0 -0
  158. package/src/data-structures/graph/diagrams/dfs-can-do.jpg +0 -0
  159. package/src/data-structures/graph/diagrams/edge-list-pros-cons.jpg +0 -0
  160. package/src/data-structures/graph/diagrams/edge-list.jpg +0 -0
  161. package/src/data-structures/graph/diagrams/max-flow.jpg +0 -0
  162. package/src/data-structures/graph/diagrams/mst.jpg +0 -0
  163. package/src/data-structures/graph/diagrams/tarjan-articulation-point-bridge.png +0 -0
  164. package/src/data-structures/graph/diagrams/tarjan-complicate-simple.png +0 -0
  165. package/src/data-structures/graph/diagrams/tarjan-strongly-connected-component.png +0 -0
  166. package/src/data-structures/graph/diagrams/tarjan.mp4 +0 -0
  167. package/src/data-structures/graph/diagrams/tarjan.webp +0 -0
  168. package/src/data-structures/graph/directed-graph.ts +0 -424
  169. package/src/data-structures/graph/index.ts +0 -3
  170. package/src/data-structures/graph/undirected-graph.ts +0 -254
  171. package/src/data-structures/hash/coordinate-map.ts +0 -71
  172. package/src/data-structures/hash/coordinate-set.ts +0 -60
  173. package/src/data-structures/hash/hash-table.ts +0 -1
  174. package/src/data-structures/hash/index.ts +0 -6
  175. package/src/data-structures/hash/pair.ts +0 -1
  176. package/src/data-structures/hash/tree-map.ts +0 -1
  177. package/src/data-structures/hash/tree-set.ts +0 -1
  178. package/src/data-structures/heap/heap.ts +0 -156
  179. package/src/data-structures/heap/index.ts +0 -3
  180. package/src/data-structures/heap/max-heap.ts +0 -31
  181. package/src/data-structures/heap/min-heap.ts +0 -34
  182. package/src/data-structures/index.ts +0 -13
  183. package/src/data-structures/linked-list/doubly-linked-list.ts +0 -351
  184. package/src/data-structures/linked-list/index.ts +0 -2
  185. package/src/data-structures/linked-list/singly-linked-list.ts +0 -748
  186. package/src/data-structures/linked-list/skip-linked-list.ts +0 -1
  187. package/src/data-structures/matrix/index.ts +0 -4
  188. package/src/data-structures/matrix/matrix.ts +0 -27
  189. package/src/data-structures/matrix/matrix2d.ts +0 -208
  190. package/src/data-structures/matrix/navigator.ts +0 -122
  191. package/src/data-structures/matrix/vector2d.ts +0 -316
  192. package/src/data-structures/priority-queue/index.ts +0 -3
  193. package/src/data-structures/priority-queue/max-priority-queue.ts +0 -24
  194. package/src/data-structures/priority-queue/min-priority-queue.ts +0 -24
  195. package/src/data-structures/priority-queue/priority-queue.ts +0 -346
  196. package/src/data-structures/queue/deque.ts +0 -241
  197. package/src/data-structures/queue/index.ts +0 -2
  198. package/src/data-structures/queue/queue.ts +0 -120
  199. package/src/data-structures/stack/index.ts +0 -1
  200. package/src/data-structures/stack/stack.ts +0 -98
  201. package/src/data-structures/trie/index.ts +0 -1
  202. package/src/data-structures/trie/trie.ts +0 -225
  203. package/src/data-structures/types/abstract-graph.ts +0 -51
  204. package/src/data-structures/types/avl-tree.ts +0 -6
  205. package/src/data-structures/types/binary-tree.ts +0 -15
  206. package/src/data-structures/types/bst.ts +0 -5
  207. package/src/data-structures/types/directed-graph.ts +0 -18
  208. package/src/data-structures/types/doubly-linked-list.ts +0 -1
  209. package/src/data-structures/types/heap.ts +0 -8
  210. package/src/data-structures/types/index.ts +0 -13
  211. package/src/data-structures/types/navigator.ts +0 -13
  212. package/src/data-structures/types/priority-queue.ts +0 -9
  213. package/src/data-structures/types/segment-tree.ts +0 -1
  214. package/src/data-structures/types/singly-linked-list.ts +0 -1
  215. package/src/data-structures/types/tree-multiset.ts +0 -3
  216. package/src/index.ts +0 -1
  217. package/src/utils/index.ts +0 -2
  218. package/src/utils/types/index.ts +0 -1
  219. package/src/utils/types/utils.ts +0 -176
  220. package/src/utils/utils.ts +0 -290
  221. package/tests/unit/data-structures/graph/abstract-graph.ts +0 -0
  222. package/tests/unit/data-structures/graph/directed-graph.test.ts +0 -495
  223. package/tests/unit/data-structures/graph/index.ts +0 -3
  224. package/tests/unit/data-structures/graph/undirected-graph.ts +0 -0
@@ -1,495 +0,0 @@
1
- import {DirectedEdge, DirectedGraph, DirectedVertex, VertexId} from '../../../../src';
2
-
3
- class MyVertex extends DirectedVertex {
4
- data: string;
5
-
6
- constructor(id: VertexId, data: string) {
7
- super(id);
8
- this.data = data;
9
- }
10
- }
11
-
12
- class MyEdge extends DirectedEdge {
13
- data: string;
14
-
15
- constructor(v1: VertexId, v2: VertexId, weight: number, data: string) {
16
- super(v1, v2, weight);
17
- this.data = data;
18
- }
19
- }
20
-
21
- class MyGraph<V extends MyVertex, E extends MyEdge> extends DirectedGraph<V, E> {
22
- constructor() {
23
- super();
24
- }
25
- }
26
-
27
- describe('DirectedGraph Test1', () => {
28
- let graph: DirectedGraph<DirectedVertex, DirectedEdge>;
29
-
30
- beforeEach(() => {
31
- graph = new DirectedGraph();
32
- });
33
-
34
-
35
- it('should add vertices', () => {
36
- const vertex1 = new DirectedVertex('A');
37
- const vertex2 = new DirectedVertex('B');
38
-
39
- graph.addVertex(vertex1);
40
- graph.addVertex(vertex2);
41
-
42
- expect(graph.hasVertex(vertex1)).toBe(true);
43
- expect(graph.hasVertex(vertex2)).toBe(true);
44
- });
45
-
46
- it('should add edges', () => {
47
- const vertex1 = new DirectedVertex('A');
48
- const vertex2 = new DirectedVertex('B');
49
- const edge = new DirectedEdge('A', 'B');
50
-
51
- graph.addVertex(vertex1);
52
- graph.addVertex(vertex2);
53
- graph.addEdge(edge);
54
-
55
- expect(graph.hasEdge('A', 'B')).toBe(true);
56
- expect(graph.hasEdge('B', 'A')).toBe(false);
57
- });
58
-
59
- it('should remove edges', () => {
60
- const vertex1 = new DirectedVertex('A');
61
- const vertex2 = new DirectedVertex('B');
62
- const edge = new DirectedEdge('A', 'B');
63
-
64
- graph.addVertex(vertex1);
65
- graph.addVertex(vertex2);
66
- graph.addEdge(edge);
67
-
68
- expect(graph.removeEdge(edge)).toBe(edge);
69
- expect(graph.hasEdge('A', 'B')).toBe(false);
70
- });
71
-
72
- // Add more test cases for other methods...
73
-
74
- it('should perform topological sort', () => {
75
- // Create a graph with vertices and edges
76
- const vertexA = new DirectedVertex('A');
77
- const vertexB = new DirectedVertex('B');
78
- const vertexC = new DirectedVertex('C');
79
- const edgeAB = new DirectedEdge('A', 'B');
80
- const edgeBC = new DirectedEdge('B', 'C');
81
-
82
- graph.addVertex(vertexA);
83
- graph.addVertex(vertexB);
84
- graph.addVertex(vertexC);
85
- graph.addEdge(edgeAB);
86
- graph.addEdge(edgeBC);
87
-
88
- // Perform topological sort
89
- const topologicalOrder = graph.topologicalSort();
90
-
91
- if (topologicalOrder) expect(topologicalOrder.map(v => v.id)).toEqual(['A', 'B', 'C']);
92
-
93
- });
94
-
95
- // Add more test cases for other methods...
96
- });
97
-
98
-
99
- describe('DirectedGraph Test2 operations', () => {
100
- const myGraph = new DirectedGraph<MyVertex, MyEdge>();
101
-
102
- test('Add vertices', () => {
103
- myGraph.addVertex(new MyVertex(1, 'data1'));
104
- myGraph.addVertex(new MyVertex(2, 'data2'));
105
- myGraph.addVertex(new MyVertex(3, 'data3'));
106
- myGraph.addVertex(new MyVertex(4, 'data4'));
107
- myGraph.addVertex(new MyVertex(5, 'data5'));
108
- myGraph.addVertex(new MyVertex(6, 'data6'));
109
- myGraph.addVertex(new MyVertex(7, 'data7'));
110
- myGraph.addVertex(new MyVertex(8, 'data8'));
111
- myGraph.addVertex(new MyVertex(9, 'data9'));
112
-
113
- });
114
-
115
- test('Add edges', () => {
116
- myGraph.addVertex(new MyVertex(1, 'data1'));
117
- myGraph.addVertex(new MyVertex(2, 'data2'));
118
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
119
- myGraph.addEdge(new MyEdge(2, 1, 20, 'edge-data2-1'));
120
-
121
- expect(myGraph.edgeSet().length).toBe(2);
122
- // TODO
123
- expect(myGraph.getEdge(1, 2)).toBeInstanceOf(MyEdge);
124
- expect(myGraph.getEdge(2, 1)).toBeInstanceOf(MyEdge);
125
- });
126
-
127
- test('Get edge', () => {
128
-
129
- const edge1 = myGraph.getEdge(1, 2);
130
- const edge2 = myGraph.getEdge(myGraph.getVertex(1), myGraph.getVertex(2));
131
- const edge3 = myGraph.getEdge(1, '100');
132
-
133
- expect(edge1).toBeInstanceOf(MyEdge);
134
- edge1 && expect(edge1.src).toBe(1);
135
- expect(edge1).toEqual(edge2);
136
- expect(edge3).toBeNull();
137
- });
138
-
139
- test('Edge set and vertex set', () => {
140
- const edges = myGraph.edgeSet();
141
- const vertices = myGraph.vertexSet();
142
-
143
- });
144
-
145
- test('Remove edge between vertices', () => {
146
- myGraph.addVertex(new MyVertex(1, 'data1'));
147
- myGraph.addVertex(new MyVertex(2, 'data2'));
148
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
149
-
150
- const removedEdge = myGraph.removeEdgeBetween(1, 2);
151
- const edgeAfterRemoval = myGraph.getEdge(1, 2);
152
-
153
- expect(removedEdge).toBeInstanceOf(MyEdge);
154
- if (removedEdge) {
155
- removedEdge && expect(removedEdge.data).toBe('edge-data1-2');
156
- removedEdge && expect(removedEdge.src).toBe(1)
157
- }
158
- expect(edgeAfterRemoval).toBeNull();
159
- });
160
-
161
- test('Topological sort', () => {
162
-
163
- const sorted = myGraph.topologicalSort();
164
-
165
- expect(sorted).toBeInstanceOf(Array);
166
- if (sorted && sorted.length > 0) {
167
- expect(sorted.length).toBe(9);
168
- expect(sorted[0].data).toBe('data9');
169
- expect(sorted[3].data).toBe('data6');
170
- expect(sorted[8].id).toBe(1);
171
- }
172
-
173
- });
174
-
175
- test('Minimum path between vertices', () => {
176
- myGraph.addVertex(new MyVertex(1, 'data1'));
177
- myGraph.addVertex(new MyVertex(2, 'data2'));
178
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
179
-
180
- const minPath = myGraph.getMinPathBetween(1, 2);
181
- });
182
-
183
- test('All paths between vertices', () => {
184
- // Add vertices and edges as needed for this test
185
- myGraph.addVertex(new MyVertex(1, 'data1'));
186
- myGraph.addVertex(new MyVertex(2, 'data2'));
187
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
188
-
189
- const allPaths = myGraph.getAllPathsBetween(1, 2);
190
-
191
- // Add expect statements here to verify the allPaths
192
- });
193
- });
194
-
195
-
196
- describe('DirectedGraph Test3', () => {
197
- const myGraph = new DirectedGraph<MyVertex, MyEdge>();
198
-
199
- it('should test graph operations', () => {
200
- const vertex1 = new MyVertex(1, 'data1');
201
- const vertex2 = new MyVertex(2, 'data2');
202
- const vertex3 = new MyVertex(3, 'data3');
203
- const vertex4 = new MyVertex(4, 'data4');
204
- const vertex5 = new MyVertex(5, 'data5');
205
- const vertex6 = new MyVertex(6, 'data6');
206
- const vertex7 = new MyVertex(7, 'data7');
207
- const vertex8 = new MyVertex(8, 'data8');
208
- const vertex9 = new MyVertex(9, 'data9');
209
- myGraph.addVertex(vertex1);
210
- myGraph.addVertex(vertex2);
211
- myGraph.addVertex(vertex3);
212
- myGraph.addVertex(vertex4);
213
- myGraph.addVertex(vertex5);
214
- myGraph.addVertex(vertex6);
215
- myGraph.addVertex(vertex7);
216
- myGraph.addVertex(vertex8);
217
- myGraph.addVertex(vertex9);
218
-
219
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
220
- myGraph.addEdge(new MyEdge(2, 1, 20, 'edge-data2-1'));
221
-
222
- expect(myGraph.getEdge(1, 2)).toBeTruthy();
223
- expect(myGraph.getEdge(2, 1)).toBeTruthy();
224
- expect(myGraph.getEdge(1, '100')).toBeFalsy();
225
-
226
- // Add the rest of your assertions here...
227
-
228
- myGraph.removeEdgeBetween(1, 2);
229
- expect(myGraph.getEdge(1, 2)).toBeFalsy();
230
-
231
- myGraph.addEdge(new MyEdge(3, 1, 3, 'edge-data-3-1'));
232
-
233
- myGraph.addEdge(new MyEdge(1, 9, 19, 'edge-data1-9'));
234
- myGraph.addEdge(new MyEdge(9, 7, 97, 'edge-data9-7'));
235
-
236
- myGraph.addEdge(new MyEdge(7, 9, 79, 'edge-data7-9'));
237
-
238
- myGraph.addEdge(new MyEdge(1, 4, 14, 'edge-data1-4'));
239
-
240
- myGraph.addEdge(new MyEdge(4, 7, 47, 'edge-data4-7'));
241
-
242
- myGraph.addEdge(new MyEdge(1, 2, 12, 'edge-data1-2'));
243
-
244
- myGraph.addEdge(new MyEdge(2, 3, 23, 'edge-data2-3'));
245
-
246
- myGraph.addEdge(new MyEdge(3, 5, 35, 'edge-data3-5'));
247
-
248
- myGraph.addEdge(new MyEdge(5, 7, 57, 'edge-data5-7'));
249
-
250
- myGraph.addEdge(new MyEdge(7, 3, 73, 'edge-data7-3'));
251
- const topologicalSorted = myGraph.topologicalSort();
252
- expect(topologicalSorted).toBeNull();
253
-
254
- const minPath1to7 = myGraph.getMinPathBetween(1, 7);
255
-
256
- expect(minPath1to7).toBeInstanceOf(Array);
257
- if (minPath1to7 && minPath1to7.length > 0) {
258
- expect(minPath1to7).toHaveLength(3);
259
- expect(minPath1to7[0]).toBeInstanceOf(MyVertex);
260
- expect(minPath1to7[0].id).toBe(1);
261
- expect(minPath1to7[1].id).toBe(9);
262
- expect(minPath1to7[2].id).toBe(7);
263
- }
264
-
265
- const fordResult1 = myGraph.bellmanFord(1);
266
- expect(fordResult1).toBeTruthy();
267
- expect(fordResult1.hasNegativeCycle).toBeUndefined();
268
- const {distMap, preMap, paths, min, minPath} = fordResult1;
269
- expect(distMap).toBeInstanceOf(Map);
270
- expect(distMap.size).toBe(9);
271
- expect(distMap.get(vertex1)).toBe(0);
272
- expect(distMap.get(vertex2)).toBe(12);
273
- expect(distMap.get(vertex3)).toBe(35);
274
- expect(distMap.get(vertex4)).toBe(14);
275
- expect(distMap.get(vertex5)).toBe(70);
276
- expect(distMap.get(vertex6)).toBe(Infinity);
277
- expect(distMap.get(vertex7)).toBe(61);
278
- expect(distMap.get(vertex8)).toBe(Infinity);
279
- expect(distMap.get(vertex9)).toBe(19);
280
-
281
- expect(preMap).toBeInstanceOf(Map);
282
- expect(preMap.size).toBe(0);
283
-
284
- expect(paths).toBeInstanceOf(Array);
285
- expect(paths.length).toBe(0);
286
- expect(min).toBe(Infinity);
287
- expect(minPath).toBeInstanceOf(Array);
288
-
289
-
290
- const floydResult = myGraph.floyd();
291
- expect(floydResult).toBeTruthy();
292
- if (floydResult) {
293
- const {costs, predecessor} = floydResult;
294
- expect(costs).toBeInstanceOf(Array);
295
- expect(costs.length).toBe(9);
296
- expect(costs[0]).toEqual([32, 12, 35, 14, 70, Infinity, 61, Infinity, 19]);
297
- expect(costs[1]).toEqual([20, 32, 23, 34, 58, Infinity, 81, Infinity, 39]);
298
- expect(costs[2]).toEqual([3, 15, 38, 17, 35, Infinity, 64, Infinity, 22]);
299
- expect(costs[3]).toEqual([123, 135, 120, 137, 155, Infinity, 47, Infinity, 126]);
300
- expect(costs[4]).toEqual([133, 145, 130, 147, 165, Infinity, 57, Infinity, 136]);
301
- expect(costs[5]).toEqual([Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity]);
302
- expect(costs[6]).toEqual([76, 88, 73, 90, 108, Infinity, 137, Infinity, 79]);
303
- expect(costs[7]).toEqual([Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity]);
304
- expect(costs[8]).toEqual([173, 185, 170, 187, 205, Infinity, 97, Infinity, 176]);
305
-
306
- expect(predecessor).toBeInstanceOf(Array);
307
- expect(predecessor.length).toBe(9);
308
- expect(predecessor[0]).toEqual([vertex2, null, vertex2, null, vertex3, null, vertex4, null, null]);
309
- expect(predecessor[1]).toEqual([null, vertex1, null, vertex1, vertex3, null, vertex4, null, vertex1]);
310
- expect(predecessor[5]).toEqual([null, null, null, null, null, null, null, null, null]);
311
- expect(predecessor[7]).toEqual([null, null, null, null, null, null, null, null, null]);
312
- expect(predecessor[8]).toEqual([vertex7, vertex7, vertex7, vertex7, vertex7, null, null, null, vertex7]);
313
- }
314
-
315
- const dijkstraRes12tt = myGraph.dijkstra(1, 2, true, true);
316
-
317
- expect(dijkstraRes12tt).toBeTruthy();
318
- if (dijkstraRes12tt) {
319
- const {distMap, minDist, minPath, paths, preMap, seen} = dijkstraRes12tt;
320
- expect(distMap).toBeInstanceOf(Map);
321
- expect(distMap.size).toBe(9);
322
- expect(distMap.get(vertex1)).toBe(0);
323
- expect(distMap.get(vertex2)).toBe(12);
324
- expect(distMap.get(vertex3)).toBe(Infinity);
325
- expect(distMap.get(vertex4)).toBe(14);
326
- expect(distMap.get(vertex5)).toBe(Infinity);
327
- expect(distMap.get(vertex6)).toBe(Infinity);
328
- expect(distMap.get(vertex7)).toBe(Infinity);
329
- expect(distMap.get(vertex8)).toBe(Infinity);
330
- expect(distMap.get(vertex9)).toBe(19);
331
-
332
- expect(minDist).toBe(12);
333
- expect(minPath).toBeInstanceOf(Array);
334
- expect(minPath.length).toBe(2);
335
- expect(minPath[0]).toBe(vertex1);
336
- expect(minPath[1]).toBe(vertex2);
337
-
338
- expect(paths).toBeInstanceOf(Array);
339
- expect(paths.length).toBe(9);
340
- expect(paths[0]).toBeInstanceOf(Array);
341
- expect(paths[0][0]).toBe(vertex1);
342
-
343
- expect(paths[1]).toBeInstanceOf(Array);
344
- expect(paths[1][0]).toBe(vertex1);
345
- expect(paths[1][1]).toBe(vertex2);
346
-
347
- expect(paths[2]).toBeInstanceOf(Array);
348
- expect(paths[2][0]).toBe(vertex3);
349
- expect(paths[3]).toBeInstanceOf(Array);
350
- expect(paths[3][0]).toBe(vertex1);
351
- expect(paths[3][1]).toBe(vertex4);
352
- expect(paths[4]).toBeInstanceOf(Array);
353
- expect(paths[4][0]).toBe(vertex5);
354
-
355
- expect(paths[5]).toBeInstanceOf(Array);
356
- expect(paths[5][0]).toBe(vertex6);
357
- expect(paths[6]).toBeInstanceOf(Array);
358
- expect(paths[6][0]).toBe(vertex7);
359
- expect(paths[7]).toBeInstanceOf(Array);
360
- expect(paths[7][0]).toBe(vertex8);
361
- expect(paths[8]).toBeInstanceOf(Array);
362
- expect(paths[8][0]).toBe(vertex1);
363
- expect(paths[8][1]).toBe(vertex9);
364
-
365
- }
366
-
367
- const dijkstraRes1ntt = myGraph.dijkstra(1, null, true, true);
368
-
369
- expect(dijkstraRes1ntt).toBeTruthy();
370
- if (dijkstraRes1ntt) {
371
- const {distMap, minDist, minPath, paths, preMap, seen} = dijkstraRes1ntt;
372
- expect(distMap).toBeInstanceOf(Map);
373
- expect(distMap.size).toBe(9);
374
- expect(distMap.get(vertex1)).toBe(0);
375
- expect(distMap.get(vertex2)).toBe(12);
376
- expect(distMap.get(vertex3)).toBe(35);
377
- expect(distMap.get(vertex4)).toBe(14);
378
- expect(distMap.get(vertex5)).toBe(70);
379
- expect(distMap.get(vertex6)).toBe(Infinity);
380
- expect(distMap.get(vertex7)).toBe(61);
381
- expect(distMap.get(vertex8)).toBe(Infinity);
382
- expect(distMap.get(vertex9)).toBe(19);
383
-
384
- expect(minDist).toBe(12);
385
- expect(minPath).toBeInstanceOf(Array);
386
- expect(minPath.length).toBe(2);
387
- expect(minPath[0]).toBe(vertex1);
388
- expect(minPath[1]).toBe(vertex2);
389
-
390
- expect(paths).toBeInstanceOf(Array);
391
- expect(paths.length).toBe(9);
392
- expect(paths[0]).toBeInstanceOf(Array);
393
- expect(paths[0][0]).toBe(vertex1);
394
-
395
- expect(paths[1]).toBeInstanceOf(Array);
396
- expect(paths[1][0]).toBe(vertex1);
397
- expect(paths[1][1]).toBe(vertex2);
398
-
399
- expect(paths[2]).toBeInstanceOf(Array);
400
- expect(paths[2][0]).toBe(vertex1);
401
- expect(paths[2][1]).toBe(vertex2);
402
- expect(paths[2][2]).toBe(vertex3);
403
-
404
- expect(paths[3]).toBeInstanceOf(Array);
405
- expect(paths[3][0]).toBe(vertex1);
406
- expect(paths[3][1]).toBe(vertex4);
407
-
408
- expect(paths[4]).toBeInstanceOf(Array);
409
- expect(paths[4][0]).toBe(vertex1);
410
- expect(paths[4][1]).toBe(vertex2);
411
- expect(paths[4][2]).toBe(vertex3);
412
- expect(paths[4][3]).toBe(vertex5);
413
-
414
- expect(paths[5]).toBeInstanceOf(Array);
415
- expect(paths[5][0]).toBe(vertex6);
416
-
417
- expect(paths[6]).toBeInstanceOf(Array);
418
- expect(paths[6][0]).toBe(vertex1);
419
- expect(paths[6][1]).toBe(vertex4);
420
- expect(paths[6][2]).toBe(vertex7);
421
-
422
- expect(paths[7]).toBeInstanceOf(Array);
423
- expect(paths[7][0]).toBe(vertex8);
424
-
425
- expect(paths[8]).toBeInstanceOf(Array);
426
- expect(paths[8][0]).toBe(vertex1);
427
- expect(paths[8][1]).toBe(vertex9);
428
-
429
- }
430
-
431
- const dijkstraWithoutHeapRes1ntt = myGraph.dijkstraWithoutHeap(1, null, true, true);
432
- expect(dijkstraWithoutHeapRes1ntt).toBeTruthy();
433
- if (dijkstraWithoutHeapRes1ntt) {
434
- const {distMap, minDist, minPath, paths, preMap, seen} = dijkstraWithoutHeapRes1ntt;
435
- expect(distMap).toBeInstanceOf(Map);
436
- expect(distMap.size).toBe(9);
437
- expect(distMap.get(vertex1)).toBe(0);
438
- expect(distMap.get(vertex2)).toBe(12);
439
- expect(distMap.get(vertex3)).toBe(35);
440
- expect(distMap.get(vertex4)).toBe(14);
441
- expect(distMap.get(vertex5)).toBe(70);
442
- expect(distMap.get(vertex6)).toBe(Infinity);
443
- expect(distMap.get(vertex7)).toBe(61);
444
- expect(distMap.get(vertex8)).toBe(Infinity);
445
- expect(distMap.get(vertex9)).toBe(19);
446
-
447
- expect(minDist).toBe(12);
448
- expect(minPath).toBeInstanceOf(Array);
449
- expect(minPath.length).toBe(2);
450
- expect(minPath[0]).toBe(vertex1);
451
- expect(minPath[1]).toBe(vertex2);
452
-
453
- expect(paths).toBeInstanceOf(Array);
454
- expect(paths.length).toBe(9);
455
- expect(paths[0]).toBeInstanceOf(Array);
456
- expect(paths[0][0]).toBe(vertex1);
457
-
458
- expect(paths[1]).toBeInstanceOf(Array);
459
- expect(paths[1][0]).toBe(vertex1);
460
- expect(paths[1][1]).toBe(vertex2);
461
-
462
- expect(paths[2]).toBeInstanceOf(Array);
463
- expect(paths[2][0]).toBe(vertex1);
464
- expect(paths[2][1]).toBe(vertex2);
465
- expect(paths[2][2]).toBe(vertex3);
466
-
467
- expect(paths[3]).toBeInstanceOf(Array);
468
- expect(paths[3][0]).toBe(vertex1);
469
- expect(paths[3][1]).toBe(vertex4);
470
-
471
- expect(paths[4]).toBeInstanceOf(Array);
472
- expect(paths[4][0]).toBe(vertex1);
473
- expect(paths[4][1]).toBe(vertex2);
474
- expect(paths[4][2]).toBe(vertex3);
475
- expect(paths[4][3]).toBe(vertex5);
476
-
477
- expect(paths[5]).toBeInstanceOf(Array);
478
- expect(paths[5][0]).toBe(vertex6);
479
-
480
- expect(paths[6]).toBeInstanceOf(Array);
481
- expect(paths[6][0]).toBe(vertex1);
482
- expect(paths[6][1]).toBe(vertex4);
483
- expect(paths[6][2]).toBe(vertex7);
484
-
485
- expect(paths[7]).toBeInstanceOf(Array);
486
- expect(paths[7][0]).toBe(vertex8);
487
-
488
- expect(paths[8]).toBeInstanceOf(Array);
489
- expect(paths[8][0]).toBe(vertex1);
490
- expect(paths[8][1]).toBe(vertex9);
491
-
492
- }
493
- });
494
- });
495
-
@@ -1,3 +0,0 @@
1
- export * from './abstract-graph';
2
- export * from './directed-graph.test';
3
- export * from './undirected-graph';