data-structure-typed 2.4.0 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +2 -3
  3. package/README_CN.md +0 -1
  4. package/dist/cjs/index.cjs +85 -30
  5. package/dist/cjs-legacy/index.cjs +85 -30
  6. package/dist/esm/index.mjs +85 -30
  7. package/dist/esm-legacy/index.mjs +85 -30
  8. package/dist/types/data-structures/binary-tree/tree-map.d.ts +17 -6
  9. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +13 -5
  10. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +12 -5
  11. package/dist/types/data-structures/binary-tree/tree-set.d.ts +15 -4
  12. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +6 -1
  13. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +6 -1
  14. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +6 -1
  15. package/dist/umd/data-structure-typed.js +85 -29
  16. package/dist/umd/data-structure-typed.min.js +4 -4
  17. package/package.json +11 -5
  18. package/src/data-structures/binary-tree/tree-map.ts +35 -13
  19. package/src/data-structures/binary-tree/tree-multi-map.ts +41 -20
  20. package/src/data-structures/binary-tree/tree-multi-set.ts +17 -6
  21. package/src/data-structures/binary-tree/tree-set.ts +19 -6
  22. package/src/data-structures/trie/trie.ts +6 -8
  23. package/src/types/data-structures/binary-tree/tree-map.ts +7 -1
  24. package/src/types/data-structures/binary-tree/tree-multi-set.ts +7 -1
  25. package/src/types/data-structures/binary-tree/tree-set.ts +7 -1
  26. package/CMakeLists.txt +0 -52
  27. package/benchmark/report.html +0 -143
  28. package/benchmark/report.json +0 -1972
  29. package/build/CMakeCache.txt +0 -603
  30. package/build/CMakeFiles/4.0.3/CMakeCXXCompiler.cmake +0 -104
  31. package/build/CMakeFiles/4.0.3/CMakeDetermineCompilerABI_CXX.bin +0 -0
  32. package/build/CMakeFiles/4.0.3/CMakeSystem.cmake +0 -15
  33. package/build/CMakeFiles/4.0.3/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -920
  34. package/build/CMakeFiles/4.0.3/CompilerIdCXX/a.out +0 -0
  35. package/build/CMakeFiles/4.0.3/CompilerIdCXX/apple-sdk.cpp +0 -1
  36. package/build/CMakeFiles/CMakeConfigureLog.yaml +0 -2146
  37. package/build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  38. package/build/CMakeFiles/InstallScripts.json +0 -9
  39. package/build/CMakeFiles/Makefile.cmake +0 -100
  40. package/build/CMakeFiles/Makefile2 +0 -720
  41. package/build/CMakeFiles/TargetDirectories.txt +0 -23
  42. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/DependInfo.cmake +0 -23
  43. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/build.make +0 -114
  44. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/cmake_clean.cmake +0 -11
  45. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.internal +0 -839
  46. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.make +0 -2506
  47. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.ts +0 -2
  48. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/depend.make +0 -2
  49. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/flags.make +0 -10
  50. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/link.txt +0 -1
  51. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/progress.make +0 -3
  52. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp.o +0 -0
  53. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp.o.d +0 -835
  54. package/build/CMakeFiles/avl-tree-benchmark.dir/DependInfo.cmake +0 -23
  55. package/build/CMakeFiles/avl-tree-benchmark.dir/build.make +0 -114
  56. package/build/CMakeFiles/avl-tree-benchmark.dir/cmake_clean.cmake +0 -11
  57. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.internal +0 -839
  58. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.make +0 -2506
  59. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.ts +0 -2
  60. package/build/CMakeFiles/avl-tree-benchmark.dir/depend.make +0 -2
  61. package/build/CMakeFiles/avl-tree-benchmark.dir/flags.make +0 -10
  62. package/build/CMakeFiles/avl-tree-benchmark.dir/link.txt +0 -1
  63. package/build/CMakeFiles/avl-tree-benchmark.dir/progress.make +0 -3
  64. package/build/CMakeFiles/avl-tree-benchmark.dir/test/performance/data-structures/binary-tree/avl-tree.test.cpp.o +0 -0
  65. package/build/CMakeFiles/avl-tree-benchmark.dir/test/performance/data-structures/binary-tree/avl-tree.test.cpp.o.d +0 -835
  66. package/build/CMakeFiles/cmake.check_cache +0 -1
  67. package/build/CMakeFiles/deque-benchmark.dir/DependInfo.cmake +0 -23
  68. package/build/CMakeFiles/deque-benchmark.dir/build.make +0 -114
  69. package/build/CMakeFiles/deque-benchmark.dir/cmake_clean.cmake +0 -11
  70. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.internal +0 -791
  71. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.make +0 -2362
  72. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.ts +0 -2
  73. package/build/CMakeFiles/deque-benchmark.dir/depend.make +0 -2
  74. package/build/CMakeFiles/deque-benchmark.dir/flags.make +0 -10
  75. package/build/CMakeFiles/deque-benchmark.dir/link.txt +0 -1
  76. package/build/CMakeFiles/deque-benchmark.dir/progress.make +0 -3
  77. package/build/CMakeFiles/deque-benchmark.dir/test/performance/data-structures/queue/deque.test.cpp.o +0 -0
  78. package/build/CMakeFiles/deque-benchmark.dir/test/performance/data-structures/queue/deque.test.cpp.o.d +0 -787
  79. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/DependInfo.cmake +0 -23
  80. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/build.make +0 -114
  81. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/cmake_clean.cmake +0 -11
  82. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.internal +0 -790
  83. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.make +0 -2359
  84. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.ts +0 -2
  85. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/depend.make +0 -2
  86. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/flags.make +0 -10
  87. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/link.txt +0 -1
  88. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/progress.make +0 -3
  89. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp.o +0 -0
  90. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp.o.d +0 -786
  91. package/build/CMakeFiles/hash-map-benchmark.dir/DependInfo.cmake +0 -23
  92. package/build/CMakeFiles/hash-map-benchmark.dir/build.make +0 -114
  93. package/build/CMakeFiles/hash-map-benchmark.dir/cmake_clean.cmake +0 -11
  94. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.internal +0 -790
  95. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.make +0 -2359
  96. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.ts +0 -2
  97. package/build/CMakeFiles/hash-map-benchmark.dir/depend.make +0 -2
  98. package/build/CMakeFiles/hash-map-benchmark.dir/flags.make +0 -10
  99. package/build/CMakeFiles/hash-map-benchmark.dir/link.txt +0 -1
  100. package/build/CMakeFiles/hash-map-benchmark.dir/progress.make +0 -3
  101. package/build/CMakeFiles/hash-map-benchmark.dir/test/performance/data-structures/hash/hash-map.test.cpp.o +0 -0
  102. package/build/CMakeFiles/hash-map-benchmark.dir/test/performance/data-structures/hash/hash-map.test.cpp.o.d +0 -786
  103. package/build/CMakeFiles/heap-benchmark.dir/DependInfo.cmake +0 -23
  104. package/build/CMakeFiles/heap-benchmark.dir/build.make +0 -114
  105. package/build/CMakeFiles/heap-benchmark.dir/cmake_clean.cmake +0 -11
  106. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.internal +0 -843
  107. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.make +0 -2518
  108. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.ts +0 -2
  109. package/build/CMakeFiles/heap-benchmark.dir/depend.make +0 -2
  110. package/build/CMakeFiles/heap-benchmark.dir/flags.make +0 -10
  111. package/build/CMakeFiles/heap-benchmark.dir/link.txt +0 -1
  112. package/build/CMakeFiles/heap-benchmark.dir/progress.make +0 -3
  113. package/build/CMakeFiles/heap-benchmark.dir/test/performance/data-structures/heap/heap.test.cpp.o +0 -0
  114. package/build/CMakeFiles/heap-benchmark.dir/test/performance/data-structures/heap/heap.test.cpp.o.d +0 -839
  115. package/build/CMakeFiles/priority-queue-benchmark.dir/DependInfo.cmake +0 -23
  116. package/build/CMakeFiles/priority-queue-benchmark.dir/build.make +0 -114
  117. package/build/CMakeFiles/priority-queue-benchmark.dir/cmake_clean.cmake +0 -11
  118. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.internal +0 -793
  119. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.make +0 -2368
  120. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.ts +0 -2
  121. package/build/CMakeFiles/priority-queue-benchmark.dir/depend.make +0 -2
  122. package/build/CMakeFiles/priority-queue-benchmark.dir/flags.make +0 -10
  123. package/build/CMakeFiles/priority-queue-benchmark.dir/link.txt +0 -1
  124. package/build/CMakeFiles/priority-queue-benchmark.dir/progress.make +0 -3
  125. package/build/CMakeFiles/priority-queue-benchmark.dir/test/performance/data-structures/priority-queue/priority-queue.test.cpp.o +0 -0
  126. package/build/CMakeFiles/priority-queue-benchmark.dir/test/performance/data-structures/priority-queue/priority-queue.test.cpp.o.d +0 -789
  127. package/build/CMakeFiles/progress.marks +0 -1
  128. package/build/CMakeFiles/queue-benchmark.dir/DependInfo.cmake +0 -23
  129. package/build/CMakeFiles/queue-benchmark.dir/build.make +0 -114
  130. package/build/CMakeFiles/queue-benchmark.dir/cmake_clean.cmake +0 -11
  131. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.internal +0 -793
  132. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.make +0 -2368
  133. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.ts +0 -2
  134. package/build/CMakeFiles/queue-benchmark.dir/depend.make +0 -2
  135. package/build/CMakeFiles/queue-benchmark.dir/flags.make +0 -10
  136. package/build/CMakeFiles/queue-benchmark.dir/link.txt +0 -1
  137. package/build/CMakeFiles/queue-benchmark.dir/progress.make +0 -3
  138. package/build/CMakeFiles/queue-benchmark.dir/test/performance/data-structures/queue/queue.test.cpp.o +0 -0
  139. package/build/CMakeFiles/queue-benchmark.dir/test/performance/data-structures/queue/queue.test.cpp.o.d +0 -789
  140. package/build/CMakeFiles/red-black-tree-benchmark.dir/DependInfo.cmake +0 -23
  141. package/build/CMakeFiles/red-black-tree-benchmark.dir/build.make +0 -114
  142. package/build/CMakeFiles/red-black-tree-benchmark.dir/cmake_clean.cmake +0 -11
  143. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.internal +0 -839
  144. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.make +0 -2506
  145. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.ts +0 -2
  146. package/build/CMakeFiles/red-black-tree-benchmark.dir/depend.make +0 -2
  147. package/build/CMakeFiles/red-black-tree-benchmark.dir/flags.make +0 -10
  148. package/build/CMakeFiles/red-black-tree-benchmark.dir/link.txt +0 -1
  149. package/build/CMakeFiles/red-black-tree-benchmark.dir/progress.make +0 -3
  150. package/build/CMakeFiles/red-black-tree-benchmark.dir/test/performance/data-structures/binary-tree/red-black-tree.test.cpp.o +0 -0
  151. package/build/CMakeFiles/red-black-tree-benchmark.dir/test/performance/data-structures/binary-tree/red-black-tree.test.cpp.o.d +0 -835
  152. package/build/CMakeFiles/singly-linked-list-benchmark.dir/DependInfo.cmake +0 -23
  153. package/build/CMakeFiles/singly-linked-list-benchmark.dir/build.make +0 -114
  154. package/build/CMakeFiles/singly-linked-list-benchmark.dir/cmake_clean.cmake +0 -11
  155. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.internal +0 -790
  156. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.make +0 -2359
  157. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.ts +0 -2
  158. package/build/CMakeFiles/singly-linked-list-benchmark.dir/depend.make +0 -2
  159. package/build/CMakeFiles/singly-linked-list-benchmark.dir/flags.make +0 -10
  160. package/build/CMakeFiles/singly-linked-list-benchmark.dir/link.txt +0 -1
  161. package/build/CMakeFiles/singly-linked-list-benchmark.dir/progress.make +0 -3
  162. package/build/CMakeFiles/singly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/singly-linked-list.test.cpp.o +0 -0
  163. package/build/CMakeFiles/singly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/singly-linked-list.test.cpp.o.d +0 -786
  164. package/build/CMakeFiles/stack-benchmark.dir/DependInfo.cmake +0 -23
  165. package/build/CMakeFiles/stack-benchmark.dir/build.make +0 -114
  166. package/build/CMakeFiles/stack-benchmark.dir/cmake_clean.cmake +0 -11
  167. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.internal +0 -793
  168. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.make +0 -2368
  169. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.ts +0 -2
  170. package/build/CMakeFiles/stack-benchmark.dir/depend.make +0 -2
  171. package/build/CMakeFiles/stack-benchmark.dir/flags.make +0 -10
  172. package/build/CMakeFiles/stack-benchmark.dir/link.txt +0 -1
  173. package/build/CMakeFiles/stack-benchmark.dir/progress.make +0 -3
  174. package/build/CMakeFiles/stack-benchmark.dir/test/performance/data-structures/stack/stack.test.cpp.o +0 -0
  175. package/build/CMakeFiles/stack-benchmark.dir/test/performance/data-structures/stack/stack.test.cpp.o.d +0 -789
  176. package/build/CMakeFiles/tree-map-benchmark.dir/DependInfo.cmake +0 -23
  177. package/build/CMakeFiles/tree-map-benchmark.dir/build.make +0 -114
  178. package/build/CMakeFiles/tree-map-benchmark.dir/cmake_clean.cmake +0 -11
  179. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.internal +0 -839
  180. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.make +0 -2506
  181. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.ts +0 -2
  182. package/build/CMakeFiles/tree-map-benchmark.dir/depend.make +0 -2
  183. package/build/CMakeFiles/tree-map-benchmark.dir/flags.make +0 -10
  184. package/build/CMakeFiles/tree-map-benchmark.dir/link.txt +0 -1
  185. package/build/CMakeFiles/tree-map-benchmark.dir/progress.make +0 -3
  186. package/build/CMakeFiles/tree-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-map.test.cpp.o +0 -0
  187. package/build/CMakeFiles/tree-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-map.test.cpp.o.d +0 -835
  188. package/build/CMakeFiles/tree-multi-map-benchmark.dir/DependInfo.cmake +0 -23
  189. package/build/CMakeFiles/tree-multi-map-benchmark.dir/build.make +0 -114
  190. package/build/CMakeFiles/tree-multi-map-benchmark.dir/cmake_clean.cmake +0 -11
  191. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.internal +0 -839
  192. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.make +0 -2506
  193. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.ts +0 -2
  194. package/build/CMakeFiles/tree-multi-map-benchmark.dir/depend.make +0 -2
  195. package/build/CMakeFiles/tree-multi-map-benchmark.dir/flags.make +0 -10
  196. package/build/CMakeFiles/tree-multi-map-benchmark.dir/link.txt +0 -1
  197. package/build/CMakeFiles/tree-multi-map-benchmark.dir/progress.make +0 -3
  198. package/build/CMakeFiles/tree-multi-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp.o +0 -0
  199. package/build/CMakeFiles/tree-multi-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp.o.d +0 -835
  200. package/build/CMakeFiles/tree-multi-set-benchmark.dir/DependInfo.cmake +0 -23
  201. package/build/CMakeFiles/tree-multi-set-benchmark.dir/build.make +0 -114
  202. package/build/CMakeFiles/tree-multi-set-benchmark.dir/cmake_clean.cmake +0 -11
  203. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.internal +0 -839
  204. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.make +0 -2506
  205. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.ts +0 -2
  206. package/build/CMakeFiles/tree-multi-set-benchmark.dir/depend.make +0 -2
  207. package/build/CMakeFiles/tree-multi-set-benchmark.dir/flags.make +0 -10
  208. package/build/CMakeFiles/tree-multi-set-benchmark.dir/link.txt +0 -1
  209. package/build/CMakeFiles/tree-multi-set-benchmark.dir/progress.make +0 -3
  210. package/build/CMakeFiles/tree-multi-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp.o +0 -0
  211. package/build/CMakeFiles/tree-multi-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp.o.d +0 -835
  212. package/build/CMakeFiles/tree-set-benchmark.dir/DependInfo.cmake +0 -23
  213. package/build/CMakeFiles/tree-set-benchmark.dir/build.make +0 -114
  214. package/build/CMakeFiles/tree-set-benchmark.dir/cmake_clean.cmake +0 -11
  215. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.internal +0 -839
  216. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.make +0 -2506
  217. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.ts +0 -2
  218. package/build/CMakeFiles/tree-set-benchmark.dir/depend.make +0 -2
  219. package/build/CMakeFiles/tree-set-benchmark.dir/flags.make +0 -10
  220. package/build/CMakeFiles/tree-set-benchmark.dir/link.txt +0 -1
  221. package/build/CMakeFiles/tree-set-benchmark.dir/progress.make +0 -3
  222. package/build/CMakeFiles/tree-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-set.test.cpp.o +0 -0
  223. package/build/CMakeFiles/tree-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-set.test.cpp.o.d +0 -835
  224. package/build/Makefile +0 -783
  225. package/build/_deps/benchmark-build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  226. package/build/_deps/benchmark-build/CMakeFiles/progress.marks +0 -1
  227. package/build/_deps/benchmark-build/Makefile +0 -140
  228. package/build/_deps/benchmark-build/benchmark.pc +0 -12
  229. package/build/_deps/benchmark-build/benchmarkConfig.cmake +0 -14
  230. package/build/_deps/benchmark-build/benchmarkConfigVersion.cmake +0 -65
  231. package/build/_deps/benchmark-build/benchmarkTargets.cmake +0 -84
  232. package/build/_deps/benchmark-build/cmake_install.cmake +0 -50
  233. package/build/_deps/benchmark-build/src/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  234. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/DependInfo.cmake +0 -41
  235. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark.cc.o +0 -0
  236. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark.cc.o.d +0 -875
  237. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o +0 -0
  238. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d +0 -802
  239. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o +0 -0
  240. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o.d +0 -772
  241. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o +0 -0
  242. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o.d +0 -841
  243. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o +0 -0
  244. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d +0 -833
  245. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/build.make +0 -402
  246. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/check.cc.o +0 -0
  247. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/check.cc.o.d +0 -784
  248. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/cmake_clean.cmake +0 -47
  249. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake +0 -3
  250. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/colorprint.cc.o +0 -0
  251. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/colorprint.cc.o.d +0 -791
  252. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o +0 -0
  253. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o.d +0 -795
  254. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.internal +0 -15519
  255. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.make +0 -17500
  256. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.ts +0 -2
  257. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/complexity.cc.o +0 -0
  258. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/complexity.cc.o.d +0 -793
  259. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/console_reporter.cc.o +0 -0
  260. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/console_reporter.cc.o.d +0 -802
  261. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/counter.cc.o +0 -0
  262. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/counter.cc.o.d +0 -773
  263. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o +0 -0
  264. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o.d +0 -799
  265. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/depend.make +0 -2
  266. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/flags.make +0 -10
  267. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/json_reporter.cc.o +0 -0
  268. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/json_reporter.cc.o.d +0 -800
  269. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/link.txt +0 -2
  270. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/perf_counters.cc.o +0 -0
  271. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/perf_counters.cc.o.d +0 -807
  272. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/progress.make +0 -21
  273. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/reporter.cc.o +0 -0
  274. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/reporter.cc.o.d +0 -798
  275. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/statistics.cc.o +0 -0
  276. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/statistics.cc.o.d +0 -800
  277. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/string_util.cc.o +0 -0
  278. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/string_util.cc.o.d +0 -795
  279. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/sysinfo.cc.o +0 -0
  280. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/sysinfo.cc.o.d +0 -933
  281. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/timers.cc.o +0 -0
  282. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/timers.cc.o.d +0 -904
  283. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake +0 -23
  284. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o +0 -0
  285. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d +0 -772
  286. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/build.make +0 -114
  287. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake +0 -11
  288. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake +0 -3
  289. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.internal +0 -776
  290. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.make +0 -2317
  291. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts +0 -2
  292. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/depend.make +0 -2
  293. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/flags.make +0 -10
  294. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/link.txt +0 -2
  295. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/progress.make +0 -3
  296. package/build/_deps/benchmark-build/src/CMakeFiles/progress.marks +0 -1
  297. package/build/_deps/benchmark-build/src/Makefile +0 -710
  298. package/build/_deps/benchmark-build/src/cmake_install.cmake +0 -45
  299. package/build/_deps/benchmark-build/src/libbenchmark.a +0 -0
  300. package/build/_deps/benchmark-build/src/libbenchmark_main.a +0 -0
  301. package/build/_deps/benchmark-src/.clang-format +0 -5
  302. package/build/_deps/benchmark-src/.clang-tidy +0 -7
  303. package/build/_deps/benchmark-src/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  304. package/build/_deps/benchmark-src/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  305. package/build/_deps/benchmark-src/.github/install_bazel.sh +0 -13
  306. package/build/_deps/benchmark-src/.github/libcxx-setup.sh +0 -26
  307. package/build/_deps/benchmark-src/.github/workflows/bazel.yml +0 -35
  308. package/build/_deps/benchmark-src/.github/workflows/build-and-test-min-cmake.yml +0 -46
  309. package/build/_deps/benchmark-src/.github/workflows/build-and-test-perfcounters.yml +0 -51
  310. package/build/_deps/benchmark-src/.github/workflows/build-and-test.yml +0 -114
  311. package/build/_deps/benchmark-src/.github/workflows/clang-format-lint.yml +0 -17
  312. package/build/_deps/benchmark-src/.github/workflows/clang-tidy.yml +0 -38
  313. package/build/_deps/benchmark-src/.github/workflows/doxygen.yml +0 -28
  314. package/build/_deps/benchmark-src/.github/workflows/pylint.yml +0 -28
  315. package/build/_deps/benchmark-src/.github/workflows/sanitizer.yml +0 -96
  316. package/build/_deps/benchmark-src/.github/workflows/test_bindings.yml +0 -29
  317. package/build/_deps/benchmark-src/.github/workflows/wheels.yml +0 -79
  318. package/build/_deps/benchmark-src/.travis.yml +0 -208
  319. package/build/_deps/benchmark-src/.ycm_extra_conf.py +0 -115
  320. package/build/_deps/benchmark-src/AUTHORS +0 -71
  321. package/build/_deps/benchmark-src/BUILD.bazel +0 -87
  322. package/build/_deps/benchmark-src/CMakeLists.txt +0 -340
  323. package/build/_deps/benchmark-src/CONTRIBUTING.md +0 -58
  324. package/build/_deps/benchmark-src/CONTRIBUTORS +0 -95
  325. package/build/_deps/benchmark-src/LICENSE +0 -202
  326. package/build/_deps/benchmark-src/MODULE.bazel +0 -24
  327. package/build/_deps/benchmark-src/README.md +0 -223
  328. package/build/_deps/benchmark-src/WORKSPACE +0 -22
  329. package/build/_deps/benchmark-src/WORKSPACE.bzlmod +0 -2
  330. package/build/_deps/benchmark-src/_config.yml +0 -2
  331. package/build/_deps/benchmark-src/appveyor.yml +0 -50
  332. package/build/_deps/benchmark-src/bazel/benchmark_deps.bzl +0 -65
  333. package/build/_deps/benchmark-src/bindings/python/BUILD +0 -3
  334. package/build/_deps/benchmark-src/bindings/python/build_defs.bzl +0 -25
  335. package/build/_deps/benchmark-src/bindings/python/google_benchmark/BUILD +0 -40
  336. package/build/_deps/benchmark-src/bindings/python/google_benchmark/__init__.py +0 -162
  337. package/build/_deps/benchmark-src/bindings/python/google_benchmark/benchmark.cc +0 -184
  338. package/build/_deps/benchmark-src/bindings/python/google_benchmark/example.py +0 -136
  339. package/build/_deps/benchmark-src/bindings/python/nanobind.BUILD +0 -17
  340. package/build/_deps/benchmark-src/bindings/python/python_headers.BUILD +0 -6
  341. package/build/_deps/benchmark-src/cmake/AddCXXCompilerFlag.cmake +0 -78
  342. package/build/_deps/benchmark-src/cmake/CXXFeatureCheck.cmake +0 -82
  343. package/build/_deps/benchmark-src/cmake/Config.cmake.in +0 -7
  344. package/build/_deps/benchmark-src/cmake/GetGitVersion.cmake +0 -58
  345. package/build/_deps/benchmark-src/cmake/GoogleTest.cmake +0 -58
  346. package/build/_deps/benchmark-src/cmake/GoogleTest.cmake.in +0 -59
  347. package/build/_deps/benchmark-src/cmake/benchmark.pc.in +0 -12
  348. package/build/_deps/benchmark-src/cmake/gnu_posix_regex.cpp +0 -12
  349. package/build/_deps/benchmark-src/cmake/llvm-toolchain.cmake +0 -8
  350. package/build/_deps/benchmark-src/cmake/posix_regex.cpp +0 -14
  351. package/build/_deps/benchmark-src/cmake/pthread_affinity.cpp +0 -16
  352. package/build/_deps/benchmark-src/cmake/split_list.cmake +0 -3
  353. package/build/_deps/benchmark-src/cmake/std_regex.cpp +0 -10
  354. package/build/_deps/benchmark-src/cmake/steady_clock.cpp +0 -7
  355. package/build/_deps/benchmark-src/cmake/thread_safety_attributes.cpp +0 -4
  356. package/build/_deps/benchmark-src/docs/AssemblyTests.md +0 -149
  357. package/build/_deps/benchmark-src/docs/_config.yml +0 -3
  358. package/build/_deps/benchmark-src/docs/assets/images/icon.png +0 -0
  359. package/build/_deps/benchmark-src/docs/assets/images/icon.xcf +0 -0
  360. package/build/_deps/benchmark-src/docs/assets/images/icon_black.png +0 -0
  361. package/build/_deps/benchmark-src/docs/assets/images/icon_black.xcf +0 -0
  362. package/build/_deps/benchmark-src/docs/dependencies.md +0 -13
  363. package/build/_deps/benchmark-src/docs/index.md +0 -12
  364. package/build/_deps/benchmark-src/docs/perf_counters.md +0 -35
  365. package/build/_deps/benchmark-src/docs/platform_specific_build_instructions.md +0 -48
  366. package/build/_deps/benchmark-src/docs/python_bindings.md +0 -34
  367. package/build/_deps/benchmark-src/docs/random_interleaving.md +0 -13
  368. package/build/_deps/benchmark-src/docs/reducing_variance.md +0 -100
  369. package/build/_deps/benchmark-src/docs/releasing.md +0 -41
  370. package/build/_deps/benchmark-src/docs/tools.md +0 -343
  371. package/build/_deps/benchmark-src/docs/user_guide.md +0 -1266
  372. package/build/_deps/benchmark-src/include/benchmark/benchmark.h +0 -1991
  373. package/build/_deps/benchmark-src/include/benchmark/export.h +0 -47
  374. package/build/_deps/benchmark-src/pyproject.toml +0 -50
  375. package/build/_deps/benchmark-src/setup.py +0 -113
  376. package/build/_deps/benchmark-src/src/CMakeLists.txt +0 -170
  377. package/build/_deps/benchmark-src/src/arraysize.h +0 -33
  378. package/build/_deps/benchmark-src/src/benchmark.cc +0 -779
  379. package/build/_deps/benchmark-src/src/benchmark_api_internal.cc +0 -118
  380. package/build/_deps/benchmark-src/src/benchmark_api_internal.h +0 -87
  381. package/build/_deps/benchmark-src/src/benchmark_main.cc +0 -18
  382. package/build/_deps/benchmark-src/src/benchmark_name.cc +0 -59
  383. package/build/_deps/benchmark-src/src/benchmark_register.cc +0 -520
  384. package/build/_deps/benchmark-src/src/benchmark_register.h +0 -109
  385. package/build/_deps/benchmark-src/src/benchmark_runner.cc +0 -497
  386. package/build/_deps/benchmark-src/src/benchmark_runner.h +0 -131
  387. package/build/_deps/benchmark-src/src/check.cc +0 -11
  388. package/build/_deps/benchmark-src/src/check.h +0 -106
  389. package/build/_deps/benchmark-src/src/colorprint.cc +0 -200
  390. package/build/_deps/benchmark-src/src/colorprint.h +0 -33
  391. package/build/_deps/benchmark-src/src/commandlineflags.cc +0 -298
  392. package/build/_deps/benchmark-src/src/commandlineflags.h +0 -133
  393. package/build/_deps/benchmark-src/src/complexity.cc +0 -244
  394. package/build/_deps/benchmark-src/src/complexity.h +0 -55
  395. package/build/_deps/benchmark-src/src/console_reporter.cc +0 -206
  396. package/build/_deps/benchmark-src/src/counter.cc +0 -80
  397. package/build/_deps/benchmark-src/src/counter.h +0 -32
  398. package/build/_deps/benchmark-src/src/csv_reporter.cc +0 -161
  399. package/build/_deps/benchmark-src/src/cycleclock.h +0 -230
  400. package/build/_deps/benchmark-src/src/internal_macros.h +0 -115
  401. package/build/_deps/benchmark-src/src/json_reporter.cc +0 -320
  402. package/build/_deps/benchmark-src/src/log.h +0 -88
  403. package/build/_deps/benchmark-src/src/mutex.h +0 -155
  404. package/build/_deps/benchmark-src/src/perf_counters.cc +0 -282
  405. package/build/_deps/benchmark-src/src/perf_counters.h +0 -200
  406. package/build/_deps/benchmark-src/src/re.h +0 -158
  407. package/build/_deps/benchmark-src/src/reporter.cc +0 -118
  408. package/build/_deps/benchmark-src/src/statistics.cc +0 -209
  409. package/build/_deps/benchmark-src/src/statistics.h +0 -44
  410. package/build/_deps/benchmark-src/src/string_util.cc +0 -254
  411. package/build/_deps/benchmark-src/src/string_util.h +0 -70
  412. package/build/_deps/benchmark-src/src/sysinfo.cc +0 -855
  413. package/build/_deps/benchmark-src/src/thread_manager.h +0 -63
  414. package/build/_deps/benchmark-src/src/thread_timer.h +0 -86
  415. package/build/_deps/benchmark-src/src/timers.cc +0 -272
  416. package/build/_deps/benchmark-src/src/timers.h +0 -48
  417. package/build/_deps/benchmark-src/test/AssemblyTests.cmake +0 -67
  418. package/build/_deps/benchmark-src/test/BUILD +0 -127
  419. package/build/_deps/benchmark-src/test/CMakeLists.txt +0 -309
  420. package/build/_deps/benchmark-src/test/args_product_test.cc +0 -77
  421. package/build/_deps/benchmark-src/test/basic_test.cc +0 -180
  422. package/build/_deps/benchmark-src/test/benchmark_gtest.cc +0 -169
  423. package/build/_deps/benchmark-src/test/benchmark_min_time_flag_iters_test.cc +0 -66
  424. package/build/_deps/benchmark-src/test/benchmark_min_time_flag_time_test.cc +0 -90
  425. package/build/_deps/benchmark-src/test/benchmark_name_gtest.cc +0 -82
  426. package/build/_deps/benchmark-src/test/benchmark_random_interleaving_gtest.cc +0 -126
  427. package/build/_deps/benchmark-src/test/benchmark_setup_teardown_test.cc +0 -157
  428. package/build/_deps/benchmark-src/test/benchmark_test.cc +0 -274
  429. package/build/_deps/benchmark-src/test/clobber_memory_assembly_test.cc +0 -64
  430. package/build/_deps/benchmark-src/test/commandlineflags_gtest.cc +0 -228
  431. package/build/_deps/benchmark-src/test/complexity_test.cc +0 -228
  432. package/build/_deps/benchmark-src/test/cxx03_test.cc +0 -62
  433. package/build/_deps/benchmark-src/test/diagnostics_test.cc +0 -91
  434. package/build/_deps/benchmark-src/test/display_aggregates_only_test.cc +0 -45
  435. package/build/_deps/benchmark-src/test/donotoptimize_assembly_test.cc +0 -201
  436. package/build/_deps/benchmark-src/test/donotoptimize_test.cc +0 -69
  437. package/build/_deps/benchmark-src/test/filter_test.cc +0 -117
  438. package/build/_deps/benchmark-src/test/fixture_test.cc +0 -51
  439. package/build/_deps/benchmark-src/test/internal_threading_test.cc +0 -185
  440. package/build/_deps/benchmark-src/test/link_main_test.cc +0 -9
  441. package/build/_deps/benchmark-src/test/map_test.cc +0 -59
  442. package/build/_deps/benchmark-src/test/memory_manager_test.cc +0 -47
  443. package/build/_deps/benchmark-src/test/min_time_parse_gtest.cc +0 -30
  444. package/build/_deps/benchmark-src/test/multiple_ranges_test.cc +0 -96
  445. package/build/_deps/benchmark-src/test/options_test.cc +0 -77
  446. package/build/_deps/benchmark-src/test/output_test.h +0 -211
  447. package/build/_deps/benchmark-src/test/output_test_helper.cc +0 -519
  448. package/build/_deps/benchmark-src/test/perf_counters_gtest.cc +0 -307
  449. package/build/_deps/benchmark-src/test/perf_counters_test.cc +0 -92
  450. package/build/_deps/benchmark-src/test/register_benchmark_test.cc +0 -196
  451. package/build/_deps/benchmark-src/test/repetitions_test.cc +0 -214
  452. package/build/_deps/benchmark-src/test/report_aggregates_only_test.cc +0 -41
  453. package/build/_deps/benchmark-src/test/reporter_output_test.cc +0 -1130
  454. package/build/_deps/benchmark-src/test/skip_with_error_test.cc +0 -199
  455. package/build/_deps/benchmark-src/test/spec_arg_test.cc +0 -105
  456. package/build/_deps/benchmark-src/test/spec_arg_verbosity_test.cc +0 -43
  457. package/build/_deps/benchmark-src/test/state_assembly_test.cc +0 -68
  458. package/build/_deps/benchmark-src/test/statistics_gtest.cc +0 -35
  459. package/build/_deps/benchmark-src/test/string_util_gtest.cc +0 -199
  460. package/build/_deps/benchmark-src/test/templated_fixture_test.cc +0 -28
  461. package/build/_deps/benchmark-src/test/time_unit_gtest.cc +0 -37
  462. package/build/_deps/benchmark-src/test/user_counters_tabular_test.cc +0 -558
  463. package/build/_deps/benchmark-src/test/user_counters_test.cc +0 -561
  464. package/build/_deps/benchmark-src/test/user_counters_thousands_test.cc +0 -186
  465. package/build/_deps/benchmark-src/tools/BUILD.bazel +0 -19
  466. package/build/_deps/benchmark-src/tools/compare.py +0 -432
  467. package/build/_deps/benchmark-src/tools/gbench/Inputs/test1_run1.json +0 -127
  468. package/build/_deps/benchmark-src/tools/gbench/Inputs/test1_run2.json +0 -127
  469. package/build/_deps/benchmark-src/tools/gbench/Inputs/test2_run.json +0 -81
  470. package/build/_deps/benchmark-src/tools/gbench/Inputs/test3_run0.json +0 -65
  471. package/build/_deps/benchmark-src/tools/gbench/Inputs/test3_run1.json +0 -65
  472. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run.json +0 -96
  473. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run0.json +0 -21
  474. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run1.json +0 -21
  475. package/build/_deps/benchmark-src/tools/gbench/__init__.py +0 -8
  476. package/build/_deps/benchmark-src/tools/gbench/report.py +0 -1201
  477. package/build/_deps/benchmark-src/tools/gbench/util.py +0 -203
  478. package/build/_deps/benchmark-src/tools/libpfm.BUILD.bazel +0 -22
  479. package/build/_deps/benchmark-src/tools/requirements.txt +0 -2
  480. package/build/_deps/benchmark-src/tools/strip_asm.py +0 -151
  481. package/build/_deps/benchmark-subbuild/CMakeCache.txt +0 -133
  482. package/build/_deps/benchmark-subbuild/CMakeFiles/4.0.3/CMakeSystem.cmake +0 -15
  483. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeConfigureLog.yaml +0 -11
  484. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  485. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeRuleHashes.txt +0 -11
  486. package/build/_deps/benchmark-subbuild/CMakeFiles/InstallScripts.json +0 -7
  487. package/build/_deps/benchmark-subbuild/CMakeFiles/Makefile.cmake +0 -52
  488. package/build/_deps/benchmark-subbuild/CMakeFiles/Makefile2 +0 -122
  489. package/build/_deps/benchmark-subbuild/CMakeFiles/TargetDirectories.txt +0 -3
  490. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate-complete +0 -0
  491. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/DependInfo.cmake +0 -22
  492. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/Labels.json +0 -46
  493. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/Labels.txt +0 -14
  494. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/build.make +0 -162
  495. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/cmake_clean.cmake +0 -17
  496. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/compiler_depend.make +0 -2
  497. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/compiler_depend.ts +0 -2
  498. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/progress.make +0 -10
  499. package/build/_deps/benchmark-subbuild/CMakeFiles/cmake.check_cache +0 -1
  500. package/build/_deps/benchmark-subbuild/CMakeFiles/progress.marks +0 -1
  501. package/build/_deps/benchmark-subbuild/CMakeLists.txt +0 -42
  502. package/build/_deps/benchmark-subbuild/Makefile +0 -162
  503. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-build +0 -0
  504. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-configure +0 -0
  505. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-done +0 -0
  506. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-download +0 -0
  507. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-gitclone-lastrun.txt +0 -15
  508. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-gitinfo.txt +0 -15
  509. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-install +0 -0
  510. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-mkdir +0 -0
  511. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-patch +0 -0
  512. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-patch-info.txt +0 -6
  513. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-test +0 -0
  514. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-update-info.txt +0 -7
  515. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-cfgcmd.txt +0 -1
  516. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-gitclone.cmake +0 -87
  517. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-gitupdate.cmake +0 -317
  518. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-mkdirs.cmake +0 -27
  519. package/build/_deps/benchmark-subbuild/cmake_install.cmake +0 -56
  520. package/build/bin/avl-rb-range-search-benchmark +0 -0
  521. package/build/bin/avl-tree-benchmark +0 -0
  522. package/build/bin/deque-benchmark +0 -0
  523. package/build/bin/doubly-linked-list-benchmark +0 -0
  524. package/build/bin/hash-map-benchmark +0 -0
  525. package/build/bin/heap-benchmark +0 -0
  526. package/build/bin/priority-queue-benchmark +0 -0
  527. package/build/bin/queue-benchmark +0 -0
  528. package/build/bin/red-black-tree-benchmark +0 -0
  529. package/build/bin/singly-linked-list-benchmark +0 -0
  530. package/build/bin/stack-benchmark +0 -0
  531. package/build/bin/tree-map-benchmark +0 -0
  532. package/build/bin/tree-multi-map-benchmark +0 -0
  533. package/build/bin/tree-multi-set-benchmark +0 -0
  534. package/build/bin/tree-set-benchmark +0 -0
  535. package/build/cmake_install.cmake +0 -66
  536. package/dist/cjs/index.cjs.map +0 -1
  537. package/dist/cjs-legacy/index.cjs.map +0 -1
  538. package/dist/esm/index.mjs.map +0 -1
  539. package/dist/esm-legacy/index.mjs.map +0 -1
  540. package/dist/umd/data-structure-typed.js.map +0 -1
  541. package/dist/umd/data-structure-typed.min.js.map +0 -1
  542. package/eslint.config.mjs +0 -73
  543. package/test/config.ts +0 -4
  544. package/test/integration/all-in-one.test.ts +0 -110
  545. package/test/integration/avl-tree.test.ts +0 -127
  546. package/test/integration/bst.test.ts +0 -385
  547. package/test/integration/compile.test.mjs +0 -159
  548. package/test/integration/compile.test.ts +0 -176
  549. package/test/integration/heap.test.js +0 -21
  550. package/test/integration/index.html +0 -462
  551. package/test/performance/benchmark-runner-enhanced.mjs +0 -818
  552. package/test/performance/cmake-benchmark-runner.mjs +0 -234
  553. package/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp +0 -112
  554. package/test/performance/data-structures/binary-tree/avl-rb-range-search.test.mjs +0 -51
  555. package/test/performance/data-structures/binary-tree/avl-tree.test.cpp +0 -181
  556. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +0 -138
  557. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.mjs +0 -85
  558. package/test/performance/data-structures/binary-tree/binary-tree.test.mjs +0 -100
  559. package/test/performance/data-structures/binary-tree/bst.test.mjs +0 -61
  560. package/test/performance/data-structures/binary-tree/red-black-tree-cjs.test.mjs +0 -259
  561. package/test/performance/data-structures/binary-tree/red-black-tree.test.cpp +0 -213
  562. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +0 -275
  563. package/test/performance/data-structures/binary-tree/tree-map.test.cpp +0 -129
  564. package/test/performance/data-structures/binary-tree/tree-map.test.mjs +0 -171
  565. package/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp +0 -205
  566. package/test/performance/data-structures/binary-tree/tree-multi-map.test.mjs +0 -106
  567. package/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp +0 -217
  568. package/test/performance/data-structures/binary-tree/tree-multi-set.test.mjs +0 -91
  569. package/test/performance/data-structures/binary-tree/tree-set.test.cpp +0 -127
  570. package/test/performance/data-structures/binary-tree/tree-set.test.mjs +0 -174
  571. package/test/performance/data-structures/comparison/comparison.test.mjs +0 -99
  572. package/test/performance/data-structures/graph/directed-graph.test.mjs +0 -38
  573. package/test/performance/data-structures/hash/hash-map.test.cpp +0 -183
  574. package/test/performance/data-structures/hash/hash-map.test.mjs +0 -187
  575. package/test/performance/data-structures/heap/heap.test.cpp +0 -61
  576. package/test/performance/data-structures/heap/heap.test.mjs +0 -31
  577. package/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp +0 -84
  578. package/test/performance/data-structures/linked-list/doubly-linked-list.test.mjs +0 -125
  579. package/test/performance/data-structures/linked-list/singly-linked-list.test.cpp +0 -77
  580. package/test/performance/data-structures/linked-list/singly-linked-list.test.mjs +0 -84
  581. package/test/performance/data-structures/priority-queue/max-priority-queue.test.mjs +0 -40
  582. package/test/performance/data-structures/priority-queue/priority-queue.test.cpp +0 -59
  583. package/test/performance/data-structures/priority-queue/priority-queue.test.mjs +0 -64
  584. package/test/performance/data-structures/queue/deque.test.cpp +0 -119
  585. package/test/performance/data-structures/queue/deque.test.mjs +0 -144
  586. package/test/performance/data-structures/queue/queue.test.cpp +0 -59
  587. package/test/performance/data-structures/queue/queue.test.mjs +0 -77
  588. package/test/performance/data-structures/stack/stack.test.cpp +0 -40
  589. package/test/performance/data-structures/stack/stack.test.mjs +0 -69
  590. package/test/performance/data-structures/trie/trie.test.mjs +0 -43
  591. package/test/performance/reportor-enhanced.mjs +0 -871
  592. package/test/performance/runner-config.json +0 -51
  593. package/test/types/index.ts +0 -1
  594. package/test/types/utils/big-o.ts +0 -1
  595. package/test/types/utils/index.ts +0 -2
  596. package/test/types/utils/json2html.ts +0 -5
  597. package/test/unit/data-structures/base/iterable-element-base.coverage.test.ts +0 -106
  598. package/test/unit/data-structures/base/iterable-element-base.more-branches.coverage.test.ts +0 -61
  599. package/test/unit/data-structures/base/linear-base.array.coverage.test.ts +0 -168
  600. package/test/unit/data-structures/base/linear-base.concat-else.coverage.test.ts +0 -82
  601. package/test/unit/data-structures/base/linear-base.coverage.test.ts +0 -72
  602. package/test/unit/data-structures/base/linear-base.more-branches.coverage.test.ts +0 -414
  603. package/test/unit/data-structures/binary-tree/avl-tree-node.familyPosition-root-left.coverage.test.ts +0 -17
  604. package/test/unit/data-structures/binary-tree/avl-tree.more-branches-2.coverage.test.ts +0 -99
  605. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -729
  606. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +0 -345
  607. package/test/unit/data-structures/binary-tree/binary-indexed-tree.more-branches.coverage.test.ts +0 -18
  608. package/test/unit/data-structures/binary-tree/binary-tree.more-branches.coverage.test.ts +0 -56
  609. package/test/unit/data-structures/binary-tree/binary-tree.remaining-branches.coverage.test.ts +0 -232
  610. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +0 -1912
  611. package/test/unit/data-structures/binary-tree/bst.bound-by-predicate.coverage.test.ts +0 -33
  612. package/test/unit/data-structures/binary-tree/bst.coverage.test.ts +0 -94
  613. package/test/unit/data-structures/binary-tree/bst.deletebykey.coverage.test.ts +0 -70
  614. package/test/unit/data-structures/binary-tree/bst.deletewhere.coverage.test.ts +0 -37
  615. package/test/unit/data-structures/binary-tree/bst.floor-lower-predicate.coverage.test.ts +0 -29
  616. package/test/unit/data-structures/binary-tree/bst.floor-setmany.coverage.test.ts +0 -72
  617. package/test/unit/data-structures/binary-tree/bst.getnode.range-ensure.coverage.test.ts +0 -22
  618. package/test/unit/data-structures/binary-tree/bst.misc-branches.coverage.test.ts +0 -100
  619. package/test/unit/data-structures/binary-tree/bst.more-branches-2.coverage.test.ts +0 -133
  620. package/test/unit/data-structures/binary-tree/bst.more-branches-3.coverage.test.ts +0 -45
  621. package/test/unit/data-structures/binary-tree/bst.more-branches-4.coverage.test.ts +0 -36
  622. package/test/unit/data-structures/binary-tree/bst.more-branches-5.coverage.test.ts +0 -40
  623. package/test/unit/data-structures/binary-tree/bst.more.coverage.test.ts +0 -39
  624. package/test/unit/data-structures/binary-tree/bst.node-family.coverage.test.ts +0 -29
  625. package/test/unit/data-structures/binary-tree/bst.range-pruning.coverage.test.ts +0 -43
  626. package/test/unit/data-structures/binary-tree/bst.search-fastpath.coverage.test.ts +0 -30
  627. package/test/unit/data-structures/binary-tree/bst.test.ts +0 -3472
  628. package/test/unit/data-structures/binary-tree/data/cost-of-living-by-country.ts +0 -259
  629. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -219
  630. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-corruption-repair.coverage.test.ts +0 -66
  631. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-max-update.coverage.test.ts +0 -18
  632. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-null.coverage.test.ts +0 -53
  633. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-stale-cache.coverage.test.ts +0 -25
  634. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-update.coverage.test.ts +0 -23
  635. package/test/unit/data-structures/binary-tree/red-black-tree.cache-delete.coverage.test.ts +0 -49
  636. package/test/unit/data-structures/binary-tree/red-black-tree.cache-edge.coverage.test.ts +0 -37
  637. package/test/unit/data-structures/binary-tree/red-black-tree.cache-stale-insert.coverage.test.ts +0 -39
  638. package/test/unit/data-structures/binary-tree/red-black-tree.coverage.test.ts +0 -334
  639. package/test/unit/data-structures/binary-tree/red-black-tree.delete-fixup.coverage.test.ts +0 -68
  640. package/test/unit/data-structures/binary-tree/red-black-tree.delete-successor.coverage.test.ts +0 -75
  641. package/test/unit/data-structures/binary-tree/red-black-tree.factories.coverage.test.ts +0 -26
  642. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-compare-update.coverage.test.ts +0 -74
  643. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-no-update.coverage.test.ts +0 -44
  644. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-nullish.coverage.test.ts +0 -61
  645. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-defined.coverage.test.ts +0 -35
  646. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-undefined.coverage.test.ts +0 -43
  647. package/test/unit/data-structures/binary-tree/red-black-tree.hint-more.coverage.test.ts +0 -99
  648. package/test/unit/data-structures/binary-tree/red-black-tree.hint.coverage.test.ts +0 -60
  649. package/test/unit/data-structures/binary-tree/red-black-tree.insert-cache-nullish.coverage.test.ts +0 -29
  650. package/test/unit/data-structures/binary-tree/red-black-tree.insert-header-parent-nullish.coverage.test.ts +0 -17
  651. package/test/unit/data-structures/binary-tree/red-black-tree.internal-walk.coverage.test.ts +0 -57
  652. package/test/unit/data-structures/binary-tree/red-black-tree.minmax-cache.test.ts +0 -65
  653. package/test/unit/data-structures/binary-tree/red-black-tree.misc-inputs.coverage.test.ts +0 -17
  654. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-2.coverage.test.ts +0 -121
  655. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-3.coverage.test.ts +0 -55
  656. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-4.coverage.test.ts +0 -44
  657. package/test/unit/data-structures/binary-tree/red-black-tree.predsucc.coverage.test.ts +0 -40
  658. package/test/unit/data-structures/binary-tree/red-black-tree.remaining-branches.coverage.test.ts +0 -123
  659. package/test/unit/data-structures/binary-tree/red-black-tree.set-inputs.coverage.test.ts +0 -64
  660. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-parent-cache.coverage.test.ts +0 -79
  661. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-remaining.coverage.test.ts +0 -44
  662. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-uncovered.coverage.test.ts +0 -74
  663. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +0 -936
  664. package/test/unit/data-structures/binary-tree/red-black-tree.update-branches.coverage.test.ts +0 -30
  665. package/test/unit/data-structures/binary-tree/segment-tree.more-branches.coverage.test.ts +0 -31
  666. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +0 -104
  667. package/test/unit/data-structures/binary-tree/tree-map.test.ts +0 -270
  668. package/test/unit/data-structures/binary-tree/tree-multi-map.coverage.test.ts +0 -245
  669. package/test/unit/data-structures/binary-tree/tree-multi-map.legacy.test.ts.skip +0 -1115
  670. package/test/unit/data-structures/binary-tree/tree-multi-map.more-branches-2.coverage.test.ts.skip +0 -59
  671. package/test/unit/data-structures/binary-tree/tree-multi-map.rfc.test.ts +0 -99
  672. package/test/unit/data-structures/binary-tree/tree-multi-map.simplified.test.ts +0 -482
  673. package/test/unit/data-structures/binary-tree/tree-multi-set.test.ts +0 -545
  674. package/test/unit/data-structures/binary-tree/tree-set.test.ts +0 -187
  675. package/test/unit/data-structures/graph/abstract-graph.more-branches-2.coverage.test.ts +0 -40
  676. package/test/unit/data-structures/graph/abstract-graph.more-branches-3.coverage.test.ts +0 -65
  677. package/test/unit/data-structures/graph/abstract-graph.more-branches-4.coverage.test.ts +0 -98
  678. package/test/unit/data-structures/graph/abstract-graph.more-branches-5.coverage.test.ts +0 -51
  679. package/test/unit/data-structures/graph/abstract-graph.more-branches.coverage.test.ts +0 -62
  680. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -117
  681. package/test/unit/data-structures/graph/directed-graph.more-branches-2.coverage.test.ts +0 -38
  682. package/test/unit/data-structures/graph/directed-graph.more-branches-3.coverage.test.ts +0 -25
  683. package/test/unit/data-structures/graph/directed-graph.more-branches.coverage.test.ts +0 -82
  684. package/test/unit/data-structures/graph/directed-graph.test.ts +0 -1185
  685. package/test/unit/data-structures/graph/map-graph.more-branches.coverage.test.ts +0 -22
  686. package/test/unit/data-structures/graph/map-graph.test.ts +0 -148
  687. package/test/unit/data-structures/graph/overall.test.ts +0 -49
  688. package/test/unit/data-structures/graph/salty-edges.json +0 -875
  689. package/test/unit/data-structures/graph/salty-vertexes.json +0 -200
  690. package/test/unit/data-structures/graph/undirected-graph.more-branches-2.coverage.test.ts +0 -35
  691. package/test/unit/data-structures/graph/undirected-graph.more-branches.coverage.test.ts +0 -87
  692. package/test/unit/data-structures/graph/undirected-graph.test.ts +0 -782
  693. package/test/unit/data-structures/hash/hash-map.more-branches.coverage.test.ts +0 -64
  694. package/test/unit/data-structures/hash/hash-map.test.ts +0 -1125
  695. package/test/unit/data-structures/hash/hash-map.toEntryFn-branch.coverage.test.ts +0 -9
  696. package/test/unit/data-structures/heap/heap.misc-branches.coverage.test.ts +0 -110
  697. package/test/unit/data-structures/heap/heap.remaining-branches.coverage.test.ts +0 -22
  698. package/test/unit/data-structures/heap/heap.test.ts +0 -760
  699. package/test/unit/data-structures/heap/max-heap.coverage.test.ts +0 -29
  700. package/test/unit/data-structures/heap/max-heap.test.ts +0 -98
  701. package/test/unit/data-structures/heap/min-heap.test.ts +0 -117
  702. package/test/unit/data-structures/linked-list/doubly-linked-list.more-branches.coverage.test.ts +0 -72
  703. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -1150
  704. package/test/unit/data-structures/linked-list/linked-list.test.ts +0 -8
  705. package/test/unit/data-structures/linked-list/linked-list.unshiftMany-else.coverage.test.ts +0 -15
  706. package/test/unit/data-structures/linked-list/singly-linked-list.coverage.test.ts +0 -221
  707. package/test/unit/data-structures/linked-list/singly-linked-list.more-branches.coverage.test.ts +0 -86
  708. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -836
  709. package/test/unit/data-structures/linked-list/skip-linked-list.more-branches.coverage.test.ts +0 -31
  710. package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +0 -13
  711. package/test/unit/data-structures/linked-list/skip-list.test.ts +0 -86
  712. package/test/unit/data-structures/matrix/matrix.more-branches.coverage.test.ts +0 -81
  713. package/test/unit/data-structures/matrix/matrix.pivotElement-nullish.coverage.test.ts +0 -28
  714. package/test/unit/data-structures/matrix/matrix.test.ts +0 -377
  715. package/test/unit/data-structures/matrix/navigator.test.ts +0 -244
  716. package/test/unit/data-structures/priority-queue/max-priority-queue.more-branches.coverage.test.ts +0 -10
  717. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +0 -160
  718. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +0 -78
  719. package/test/unit/data-structures/priority-queue/priority-queue.coverage.test.ts +0 -21
  720. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -101
  721. package/test/unit/data-structures/queue/deque.coverage.test.ts +0 -173
  722. package/test/unit/data-structures/queue/deque.more-branches-2.coverage.test.ts +0 -39
  723. package/test/unit/data-structures/queue/deque.more-branches-3.coverage.test.ts +0 -9
  724. package/test/unit/data-structures/queue/deque.more-branches.coverage.test.ts +0 -95
  725. package/test/unit/data-structures/queue/deque.test.ts +0 -936
  726. package/test/unit/data-structures/queue/queue.coverage.test.ts +0 -138
  727. package/test/unit/data-structures/queue/queue.more-branches-2.coverage.test.ts +0 -27
  728. package/test/unit/data-structures/queue/queue.test.ts +0 -703
  729. package/test/unit/data-structures/stack/stack.coverage.test.ts +0 -112
  730. package/test/unit/data-structures/stack/stack.test.ts +0 -438
  731. package/test/unit/data-structures/tree/tree.more-branches.coverage.test.ts +0 -9
  732. package/test/unit/data-structures/tree/tree.test.ts +0 -58
  733. package/test/unit/data-structures/trie/trie.more-branches-2.coverage.test.ts +0 -51
  734. package/test/unit/data-structures/trie/trie.test.ts +0 -1181
  735. package/test/unit/unrestricted-interconversion.test.ts +0 -299
  736. package/test/unit/utils/utils.test.ts +0 -174
  737. package/test/utils/array.ts +0 -5517
  738. package/test/utils/big-o.ts +0 -228
  739. package/test/utils/console.ts +0 -31
  740. package/test/utils/index.ts +0 -8
  741. package/test/utils/is.ts +0 -56
  742. package/test/utils/json2html.ts +0 -164
  743. package/test/utils/number.ts +0 -13
  744. package/test/utils/patch.ts +0 -33
  745. package/test/utils/perf.mjs +0 -34
  746. package/test/utils/performanc.ts +0 -7
  747. package/test/utils/string.ts +0 -49
  748. package/tsconfig.types.json +0 -15
  749. package/tsup.config.js +0 -63
  750. package/tsup.umd.config.js +0 -29
@@ -1,1185 +0,0 @@
1
- import { DirectedEdge, DirectedGraph, DirectedVertex, VertexKey } from '../../../../src';
2
-
3
- describe('DirectedGraph Operation Test', () => {
4
- let graph: DirectedGraph;
5
-
6
- beforeEach(() => {
7
- graph = new DirectedGraph();
8
- });
9
-
10
- it('should add vertexMap', () => {
11
- const vertex1 = new DirectedVertex('A');
12
- const vertex2 = new DirectedVertex('B');
13
-
14
- graph.addVertex(vertex1);
15
- graph.addVertex(vertex2);
16
-
17
- expect(graph.hasVertex(vertex1)).toBe(true);
18
- expect(graph.hasVertex(vertex2)).toBe(true);
19
- });
20
-
21
- it('should add edges', () => {
22
- const vertex1 = new DirectedVertex('A');
23
- const vertex2 = new DirectedVertex('B');
24
- const edge = new DirectedEdge('A', 'B');
25
- edge.src = edge.src;
26
- edge.dest = edge.dest;
27
-
28
- graph.addVertex(vertex1);
29
- graph.addVertex(vertex2);
30
- graph.addEdge(edge);
31
-
32
- expect(graph.outEdgeMap.size).toBe(1);
33
- expect(graph.inEdgeMap.size).toBe(1);
34
- expect(graph.hasEdge('A', 'B')).toBe(true);
35
- expect(graph.hasEdge('B', 'A')).toBe(false);
36
- });
37
-
38
- it('should delete edges', () => {
39
- const vertex1 = new DirectedVertex('A');
40
- // const vertex2 = new DirectedVertex('B');
41
- graph.createVertex('B');
42
- const edge = new DirectedEdge('A', 'B');
43
-
44
- graph.addVertex(vertex1);
45
- graph.addVertex('B');
46
- graph.addEdge(edge);
47
-
48
- expect(graph.deleteEdge(edge)).toBe(edge);
49
- expect(graph.hasEdge('A', 'B')).toBe(false);
50
- });
51
-
52
- it('should perform topological sort', () => {
53
- const vertexA = new DirectedVertex('A');
54
- const vertexB = new DirectedVertex('B');
55
- const vertexC = new DirectedVertex('C');
56
- const edgeAB = new DirectedEdge('A', 'B');
57
- graph.createEdge('B', 'C');
58
-
59
- graph.addVertex(vertexA);
60
- graph.addVertex(vertexB);
61
- graph.addVertex(vertexC);
62
- graph.addEdge(edgeAB);
63
- graph.addEdge('B', 'C');
64
-
65
- expect(graph.getEdgeSrc(edgeAB)).toBe(vertexA);
66
-
67
- const topologicalOrder = graph.topologicalSort();
68
- if (topologicalOrder) expect(topologicalOrder).toEqual(['A', 'B', 'C']);
69
-
70
- graph.deleteEdgesBetween('A', 'B');
71
-
72
- const topologicalOrder1 = graph.topologicalSort();
73
- if (topologicalOrder1) expect(topologicalOrder1).toEqual(['B', 'C', 'A']);
74
-
75
- expect(graph.incomingEdgesOf(vertexC)?.length).toBe(1);
76
- expect(graph.degreeOf(vertexA)).toBe(0);
77
- expect(graph.inDegreeOf(vertexC)).toBe(1);
78
- expect(graph.outDegreeOf(vertexC)).toBe(0);
79
- expect(graph.edgesOf(vertexC)?.length).toBe(1);
80
-
81
- expect(graph.tarjan().dfnMap.size).toBe(3);
82
- expect(graph.bellmanFord(vertexC, true, true, true)?.paths.length).toBe(3);
83
- expect(graph.getMinPathBetween('B', 'C', true)?.length).toBe(2);
84
- expect(graph.setEdgeWeight('B', 'C', 100)).toBe(true);
85
- expect(graph.getMinCostBetween('B', 'C', true)).toBe(100);
86
- expect(graph.getMinCostBetween('B', 'C')).toBe(1);
87
- expect(graph.getAllPathsBetween('B', 'C')?.length).toBe(1);
88
- expect(graph.deleteVertex(vertexB)).toBe(true);
89
- expect(graph.getAllPathsBetween('B', 'C')?.length).toBe(0);
90
-
91
- expect(graph.removeManyVertices([vertexB, vertexC])).toBe(true);
92
- });
93
- });
94
-
95
- class MyVertex<V = any> extends DirectedVertex<V> {
96
- constructor(key: VertexKey, value?: V) {
97
- super(key, value);
98
- this._data = value;
99
- }
100
-
101
- protected _data: V | undefined;
102
-
103
- get data(): V | undefined {
104
- return this._data;
105
- }
106
-
107
- set data(value: V | undefined) {
108
- this._data = value;
109
- }
110
- }
111
-
112
- class MyEdge<E = any> extends DirectedEdge<E> {
113
- constructor(v1: VertexKey, v2: VertexKey, weight?: number, value?: E) {
114
- super(v1, v2, weight, value);
115
- this._data = value;
116
- }
117
-
118
- protected _data: E | undefined;
119
-
120
- get data(): E | undefined {
121
- return this._data;
122
- }
123
-
124
- set data(value: E | undefined) {
125
- this._data = value;
126
- }
127
- }
128
-
129
- class MyDirectedGraph<
130
- V = any,
131
- E = any,
132
- VO extends MyVertex<V> = MyVertex<V>,
133
- EO extends MyEdge<E> = MyEdge<E>
134
- > extends DirectedGraph<V, E, VO, EO> {
135
- override createVertex(key: VertexKey, value: V): VO {
136
- return new MyVertex(key, value) as VO;
137
- }
138
-
139
- override createEdge(src: VertexKey, dest: VertexKey, weight?: number, value?: E): EO {
140
- return new MyEdge(src, dest, weight ?? 1, value) as EO;
141
- }
142
- }
143
-
144
- describe('Inherit from DirectedGraph and perform operations', () => {
145
- let myGraph = new MyDirectedGraph<string, string>();
146
- beforeEach(() => {
147
- myGraph = new MyDirectedGraph();
148
- });
149
-
150
- it('Add vertexMap', () => {
151
- myGraph.addVertex(1, 'data1');
152
- myGraph.addVertex(2, 'data2');
153
- myGraph.addVertex(3, 'data3');
154
- myGraph.addVertex(4, 'data4');
155
- myGraph.addVertex(5, 'data5');
156
- myGraph.addVertex(new MyVertex(6, 'data6'));
157
- myGraph.addVertex(new MyVertex(7, 'data7'));
158
- myGraph.addVertex(new MyVertex(8, 'data8'));
159
- myGraph.addVertex(new MyVertex(9, 'data9'));
160
- });
161
-
162
- it('Add edges', () => {
163
- myGraph.addVertex(1, 'data1');
164
- myGraph.addVertex(2, 'data2');
165
- myGraph.addEdge(1, 2, 10, 'edge-data1-2');
166
- myGraph.addEdge(new MyEdge(2, 1, 20, 'edge-data2-1'));
167
- myGraph.inEdgeMap = myGraph.inEdgeMap;
168
- myGraph.outEdgeMap = myGraph.outEdgeMap;
169
-
170
- expect(myGraph.edgeSet().length).toBe(2);
171
- // TODO
172
- expect(myGraph.getEdge(1, 2)).toBeInstanceOf(MyEdge);
173
- expect(myGraph.getEdge(2, 1)).toBeInstanceOf(MyEdge);
174
- });
175
-
176
- it('Get edge', () => {
177
- myGraph.addVertex(1, 'val1');
178
- myGraph.addVertex(2, 'val1');
179
- myGraph.addEdge(1, 2, 1, 'val1');
180
- const edge1 = myGraph.getEdge(1, 2);
181
- const edge2 = myGraph.getEdge(myGraph.getVertex(1), myGraph.getVertex(2));
182
- const edge3 = myGraph.getEdge(1, '100');
183
- // edge1.data has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
184
- expect(edge1).toBeInstanceOf(MyEdge);
185
- if (edge1) {
186
- expect(edge1.data).toBe('val1');
187
- expect(edge1?.value).toBe('val1');
188
- expect(edge1).toBeInstanceOf(MyEdge);
189
- expect(edge1.src).toBe(1);
190
- expect(edge1).toEqual(edge2);
191
- expect(edge3).toBe(undefined);
192
- }
193
- });
194
-
195
- it('Edge set and vertex set', () => {
196
- expect(true).toBeTruthy();
197
- });
198
-
199
- it('Remove edge between vertexMap', () => {
200
- expect(myGraph.isEmpty()).toBe(true);
201
- myGraph.addVertex(1, 'data1');
202
- myGraph.addVertex(2, 'data2');
203
- myGraph.addEdge(1, 2, 10, 'edge-data1-2');
204
- expect(myGraph.isEmpty()).toBe(false);
205
-
206
- const removedEdge = myGraph.deleteEdgeSrcToDest(1, 2);
207
- expect(myGraph.deleteEdgeSrcToDest(2, 10)).toBe(undefined);
208
- const edgeAfterRemoval = myGraph.getEdge(1, 2);
209
-
210
- expect(removedEdge).toBeInstanceOf(MyEdge);
211
- if (removedEdge) {
212
- if (removedEdge) expect(removedEdge.value).toBe('edge-data1-2');
213
- if (removedEdge) expect(removedEdge.src).toBe(1);
214
- }
215
- expect(edgeAfterRemoval).toBe(undefined);
216
- });
217
-
218
- it('should clear', () => {
219
- expect(myGraph.isEmpty()).toBe(true);
220
- myGraph.addVertex(1, 'data1');
221
- myGraph.addVertex(2, 'data2');
222
- myGraph.addEdge(1, 2, 10, 'edge-data1-2');
223
- expect(myGraph.isEmpty()).toBe(false);
224
- myGraph.clear();
225
- expect(myGraph.isEmpty()).toBe(true);
226
- });
227
-
228
- it('should clone', () => {
229
- myGraph.addVertex(1, 'data1');
230
- myGraph.addVertex(2, 'data2');
231
- myGraph.addEdge(1, 2, 10, 'edge-data1-2');
232
- const cloned = myGraph.clone();
233
- expect(cloned.hasVertex(1)).toBe(true);
234
- expect(cloned.hasEdge(1, 2)).toBe(true);
235
- });
236
-
237
- it('Topological sort', () => {
238
- const sorted = myGraph.topologicalSort();
239
-
240
- expect(sorted).toBeInstanceOf(Array);
241
- if (sorted && sorted.length > 0) {
242
- expect(sorted.length).toBe(9);
243
- if (sorted[0] instanceof MyVertex) expect(sorted[0].data).toBe('data9');
244
- if (sorted[3] instanceof MyVertex) expect(sorted[3].data).toBe('data6');
245
- if (sorted[8] instanceof MyVertex) expect(sorted[8].key).toBe(1);
246
- }
247
- });
248
-
249
- it('Minimum path between vertexMap', () => {
250
- myGraph.addVertex(new MyVertex(1, 'data1'));
251
- myGraph.addVertex(new MyVertex(2, 'data2'));
252
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
253
- });
254
-
255
- it('All paths between vertexMap', () => {
256
- // Add vertexMap and edges as needed for this test
257
- myGraph.addVertex(new MyVertex(1, 'data1'));
258
- myGraph.addVertex(new MyVertex(2, 'data2'));
259
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
260
-
261
- // Add expect statements here to verify the allPaths
262
- });
263
- });
264
-
265
- describe('Inherit from DirectedGraph and perform operations test2.', () => {
266
- const myGraph = new MyDirectedGraph<string, string>();
267
-
268
- it('should test graph operations', () => {
269
- const vertex1 = new MyVertex(1, 'data1');
270
- const vertex2 = new MyVertex(2, 'data2');
271
- const vertex3 = new MyVertex(3, 'data3');
272
- const vertex4 = new MyVertex(4, 'data4');
273
- const vertex5 = new MyVertex(5, 'data5');
274
- const vertex6 = new MyVertex(6, 'data6');
275
- const vertex7 = new MyVertex(7, 'data7');
276
- const vertex8 = new MyVertex(8, 'data8');
277
- const vertex9 = new MyVertex(9, 'data9');
278
- myGraph.addVertex(vertex1);
279
- myGraph.addVertex(vertex2);
280
- myGraph.addVertex(vertex3);
281
- myGraph.addVertex(vertex4);
282
- myGraph.addVertex(vertex5);
283
- myGraph.addVertex(vertex6);
284
- myGraph.addVertex(vertex7);
285
- myGraph.addVertex(vertex8);
286
- myGraph.addVertex(vertex9);
287
-
288
- myGraph.addEdge(new MyEdge(1, 2, 10, 'edge-data1-2'));
289
- myGraph.addEdge(new MyEdge(2, 1, 20, 'edge-data2-1'));
290
-
291
- expect(myGraph.getEdge(1, 2)).toBeTruthy();
292
- expect(myGraph.getEdge(2, 1)).toBeTruthy();
293
- expect(myGraph.getEdge(1, '100')).toBeFalsy();
294
-
295
- myGraph.deleteEdgeSrcToDest(1, 2);
296
- expect(myGraph.getEdge(1, 2)).toBeFalsy();
297
-
298
- myGraph.addEdge(3, 1, 3, 'edge-data-3-1');
299
-
300
- myGraph.addEdge(1, 9, 19, 'edge-data1-9');
301
-
302
- myGraph.addEdge(9, 7, 97, 'edge-data9-7');
303
-
304
- myGraph.addEdge(7, 9, 79, 'edge-data7-9');
305
-
306
- myGraph.addEdge(1, 4, 14, 'edge-data1-4');
307
-
308
- myGraph.addEdge(4, 7, 47, 'edge-data4-7');
309
-
310
- myGraph.addEdge(1, 2, 12, 'edge-data1-2');
311
-
312
- myGraph.addEdge(2, 3, 23, 'edge-data2-3');
313
-
314
- myGraph.addEdge(3, 5, 35, 'edge-data3-5');
315
-
316
- myGraph.addEdge(5, 7, 57, 'edge-data5-7');
317
-
318
- myGraph.addEdge(new MyEdge(7, 3, 73, 'edge-data7-3'));
319
- const topologicalSorted = myGraph.topologicalSort();
320
- expect(topologicalSorted).toBe(undefined);
321
-
322
- const minPath1to7 = myGraph.getMinPathBetween(1, 7);
323
-
324
- expect(minPath1to7).toBeInstanceOf(Array);
325
- if (minPath1to7 && minPath1to7.length > 0) {
326
- expect(minPath1to7).toHaveLength(3);
327
- expect(minPath1to7[0]).toBeInstanceOf(MyVertex);
328
- expect(minPath1to7[0].key).toBe(1);
329
- expect(minPath1to7[1].key).toBe(9);
330
- expect(minPath1to7[2].key).toBe(7);
331
- }
332
-
333
- const fordResult1 = myGraph.bellmanFord(1);
334
- expect(fordResult1).toBeTruthy();
335
- expect(fordResult1.hasNegativeCycle).toBeUndefined();
336
- const { distMap, preMap, paths, min, minPath } = fordResult1;
337
- expect(distMap).toBeInstanceOf(Map);
338
- expect(distMap.size).toBe(9);
339
- expect(distMap.get(vertex1)).toBe(0);
340
- expect(distMap.get(vertex2)).toBe(12);
341
- expect(distMap.get(vertex3)).toBe(35);
342
- expect(distMap.get(vertex4)).toBe(14);
343
- expect(distMap.get(vertex5)).toBe(70);
344
- expect(distMap.get(vertex6)).toBe(Number.MAX_SAFE_INTEGER);
345
- expect(distMap.get(vertex7)).toBe(61);
346
- expect(distMap.get(vertex8)).toBe(Number.MAX_SAFE_INTEGER);
347
- expect(distMap.get(vertex9)).toBe(19);
348
-
349
- expect(preMap).toBeInstanceOf(Map);
350
- expect(preMap.size).toBe(0);
351
-
352
- expect(paths).toBeInstanceOf(Array);
353
- expect(paths.length).toBe(0);
354
- expect(min).toBe(Number.MAX_SAFE_INTEGER);
355
- expect(minPath).toBeInstanceOf(Array);
356
-
357
- const floydResult = myGraph.floydWarshall();
358
- expect(floydResult).toBeTruthy();
359
- if (floydResult) {
360
- const { costs, predecessor } = floydResult;
361
- expect(costs).toBeInstanceOf(Array);
362
- expect(costs.length).toBe(9);
363
- expect(costs[0]).toEqual([32, 12, 35, 14, 70, Number.MAX_SAFE_INTEGER, 61, Number.MAX_SAFE_INTEGER, 19]);
364
- expect(costs[1]).toEqual([20, 32, 23, 34, 58, Number.MAX_SAFE_INTEGER, 81, Number.MAX_SAFE_INTEGER, 39]);
365
- expect(costs[2]).toEqual([3, 15, 38, 17, 35, Number.MAX_SAFE_INTEGER, 64, Number.MAX_SAFE_INTEGER, 22]);
366
- expect(costs[3]).toEqual([123, 135, 120, 137, 155, Number.MAX_SAFE_INTEGER, 47, Number.MAX_SAFE_INTEGER, 126]);
367
- expect(costs[4]).toEqual([133, 145, 130, 147, 165, Number.MAX_SAFE_INTEGER, 57, Number.MAX_SAFE_INTEGER, 136]);
368
- expect(costs[5]).toEqual([
369
- Number.MAX_SAFE_INTEGER,
370
- Number.MAX_SAFE_INTEGER,
371
- Number.MAX_SAFE_INTEGER,
372
- Number.MAX_SAFE_INTEGER,
373
- Number.MAX_SAFE_INTEGER,
374
- Number.MAX_SAFE_INTEGER,
375
- Number.MAX_SAFE_INTEGER,
376
- Number.MAX_SAFE_INTEGER,
377
- Number.MAX_SAFE_INTEGER
378
- ]);
379
- expect(costs[6]).toEqual([76, 88, 73, 90, 108, Number.MAX_SAFE_INTEGER, 137, Number.MAX_SAFE_INTEGER, 79]);
380
- expect(costs[7]).toEqual([
381
- Number.MAX_SAFE_INTEGER,
382
- Number.MAX_SAFE_INTEGER,
383
- Number.MAX_SAFE_INTEGER,
384
- Number.MAX_SAFE_INTEGER,
385
- Number.MAX_SAFE_INTEGER,
386
- Number.MAX_SAFE_INTEGER,
387
- Number.MAX_SAFE_INTEGER,
388
- Number.MAX_SAFE_INTEGER,
389
- Number.MAX_SAFE_INTEGER
390
- ]);
391
- expect(costs[8]).toEqual([173, 185, 170, 187, 205, Number.MAX_SAFE_INTEGER, 97, Number.MAX_SAFE_INTEGER, 176]);
392
-
393
- expect(predecessor).toBeInstanceOf(Array);
394
- expect(predecessor.length).toBe(9);
395
- expect(predecessor[0]).toEqual([
396
- vertex2,
397
- undefined,
398
- vertex2,
399
- undefined,
400
- vertex3,
401
- undefined,
402
- vertex4,
403
- undefined,
404
- undefined
405
- ]);
406
- expect(predecessor[1]).toEqual([
407
- undefined,
408
- vertex1,
409
- undefined,
410
- vertex1,
411
- vertex3,
412
- undefined,
413
- vertex4,
414
- undefined,
415
- vertex1
416
- ]);
417
- expect(predecessor[5]).toEqual([
418
- undefined,
419
- undefined,
420
- undefined,
421
- undefined,
422
- undefined,
423
- undefined,
424
- undefined,
425
- undefined,
426
- undefined
427
- ]);
428
- expect(predecessor[7]).toEqual([
429
- undefined,
430
- undefined,
431
- undefined,
432
- undefined,
433
- undefined,
434
- undefined,
435
- undefined,
436
- undefined,
437
- undefined
438
- ]);
439
- expect(predecessor[8]).toEqual([
440
- vertex7,
441
- vertex7,
442
- vertex7,
443
- vertex7,
444
- vertex7,
445
- undefined,
446
- undefined,
447
- undefined,
448
- vertex7
449
- ]);
450
- }
451
-
452
- const dijkstraRes12tt = myGraph.dijkstra(1, 2, true, true);
453
-
454
- expect(dijkstraRes12tt).toBeTruthy();
455
- if (dijkstraRes12tt) {
456
- const { distMap, minDist, minPath, paths } = dijkstraRes12tt;
457
- expect(distMap).toBeInstanceOf(Map);
458
- expect(distMap.size).toBe(9);
459
- expect(distMap.get(vertex1)).toBe(0);
460
- expect(distMap.get(vertex2)).toBe(12);
461
- expect(distMap.get(vertex3)).toBe(Number.MAX_SAFE_INTEGER);
462
- expect(distMap.get(vertex4)).toBe(14);
463
- expect(distMap.get(vertex5)).toBe(Number.MAX_SAFE_INTEGER);
464
- expect(distMap.get(vertex6)).toBe(Number.MAX_SAFE_INTEGER);
465
- expect(distMap.get(vertex7)).toBe(Number.MAX_SAFE_INTEGER);
466
- expect(distMap.get(vertex8)).toBe(Number.MAX_SAFE_INTEGER);
467
- expect(distMap.get(vertex9)).toBe(19);
468
-
469
- expect(minDist).toBe(12);
470
- expect(minPath).toBeInstanceOf(Array);
471
- expect(minPath.length).toBe(2);
472
- expect(minPath[0]).toBe(vertex1);
473
- expect(minPath[1]).toBe(vertex2);
474
-
475
- expect(paths).toBeInstanceOf(Array);
476
- expect(paths.length).toBe(9);
477
- expect(paths[0]).toBeInstanceOf(Array);
478
- expect(paths[0][0]).toBe(vertex1);
479
-
480
- expect(paths[1]).toBeInstanceOf(Array);
481
- expect(paths[1][0]).toBe(vertex1);
482
- expect(paths[1][1]).toBe(vertex2);
483
-
484
- expect(paths[2]).toBeInstanceOf(Array);
485
- expect(paths[2][0]).toBe(vertex3);
486
- expect(paths[3]).toBeInstanceOf(Array);
487
- expect(paths[3][0]).toBe(vertex1);
488
- expect(paths[3][1]).toBe(vertex4);
489
- expect(paths[4]).toBeInstanceOf(Array);
490
- expect(paths[4][0]).toBe(vertex5);
491
-
492
- expect(paths[5]).toBeInstanceOf(Array);
493
- expect(paths[5][0]).toBe(vertex6);
494
- expect(paths[6]).toBeInstanceOf(Array);
495
- expect(paths[6][0]).toBe(vertex7);
496
- expect(paths[7]).toBeInstanceOf(Array);
497
- expect(paths[7][0]).toBe(vertex8);
498
- expect(paths[8]).toBeInstanceOf(Array);
499
- expect(paths[8][0]).toBe(vertex1);
500
- expect(paths[8][1]).toBe(vertex9);
501
- }
502
-
503
- const dijkstraRes1ntt = myGraph.dijkstra(1, undefined, true, true);
504
-
505
- expect(dijkstraRes1ntt).toBeTruthy();
506
- if (dijkstraRes1ntt) {
507
- const { distMap, minDist, minPath, paths } = dijkstraRes1ntt;
508
- expect(distMap).toBeInstanceOf(Map);
509
- expect(distMap.size).toBe(9);
510
- expect(distMap.get(vertex1)).toBe(0);
511
- expect(distMap.get(vertex2)).toBe(12);
512
- expect(distMap.get(vertex3)).toBe(35);
513
- expect(distMap.get(vertex4)).toBe(14);
514
- expect(distMap.get(vertex5)).toBe(70);
515
- expect(distMap.get(vertex6)).toBe(Number.MAX_SAFE_INTEGER);
516
- expect(distMap.get(vertex7)).toBe(61);
517
- expect(distMap.get(vertex8)).toBe(Number.MAX_SAFE_INTEGER);
518
- expect(distMap.get(vertex9)).toBe(19);
519
-
520
- expect(minDist).toBe(12);
521
- expect(minPath).toBeInstanceOf(Array);
522
- expect(minPath.length).toBe(2);
523
- expect(minPath[0]).toBe(vertex1);
524
- expect(minPath[1]).toBe(vertex2);
525
-
526
- expect(paths).toBeInstanceOf(Array);
527
- expect(paths.length).toBe(9);
528
- expect(paths[0]).toBeInstanceOf(Array);
529
- expect(paths[0][0]).toBe(vertex1);
530
-
531
- expect(paths[1]).toBeInstanceOf(Array);
532
- expect(paths[1][0]).toBe(vertex1);
533
- expect(paths[1][1]).toBe(vertex2);
534
-
535
- expect(paths[2]).toBeInstanceOf(Array);
536
- expect(paths[2][0]).toBe(vertex1);
537
- expect(paths[2][1]).toBe(vertex2);
538
- expect(paths[2][2]).toBe(vertex3);
539
-
540
- expect(paths[3]).toBeInstanceOf(Array);
541
- expect(paths[3][0]).toBe(vertex1);
542
- expect(paths[3][1]).toBe(vertex4);
543
-
544
- expect(paths[4]).toBeInstanceOf(Array);
545
- expect(paths[4][0]).toBe(vertex1);
546
- expect(paths[4][1]).toBe(vertex2);
547
- expect(paths[4][2]).toBe(vertex3);
548
- expect(paths[4][3]).toBe(vertex5);
549
-
550
- expect(paths[5]).toBeInstanceOf(Array);
551
- expect(paths[5][0]).toBe(vertex6);
552
-
553
- expect(paths[6]).toBeInstanceOf(Array);
554
- expect(paths[6][0]).toBe(vertex1);
555
- expect(paths[6][1]).toBe(vertex4);
556
- expect(paths[6][2]).toBe(vertex7);
557
-
558
- expect(paths[7]).toBeInstanceOf(Array);
559
- expect(paths[7][0]).toBe(vertex8);
560
-
561
- expect(paths[8]).toBeInstanceOf(Array);
562
- expect(paths[8][0]).toBe(vertex1);
563
- expect(paths[8][1]).toBe(vertex9);
564
- }
565
-
566
- const dijkstraWithoutHeapRes1ntt = myGraph.dijkstraWithoutHeap(1, undefined, true, true);
567
- expect(dijkstraWithoutHeapRes1ntt).toBeTruthy();
568
- if (dijkstraWithoutHeapRes1ntt) {
569
- const { distMap, minDist, minPath, paths } = dijkstraWithoutHeapRes1ntt;
570
- expect(distMap).toBeInstanceOf(Map);
571
- expect(distMap.size).toBe(9);
572
- expect(distMap.get(vertex1)).toBe(0);
573
- expect(distMap.get(vertex2)).toBe(12);
574
- expect(distMap.get(vertex3)).toBe(35);
575
- expect(distMap.get(vertex4)).toBe(14);
576
- expect(distMap.get(vertex5)).toBe(70);
577
- expect(distMap.get(vertex6)).toBe(Number.MAX_SAFE_INTEGER);
578
- expect(distMap.get(vertex7)).toBe(61);
579
- expect(distMap.get(vertex8)).toBe(Number.MAX_SAFE_INTEGER);
580
- expect(distMap.get(vertex9)).toBe(19);
581
-
582
- expect(minDist).toBe(12);
583
- expect(minPath).toBeInstanceOf(Array);
584
- expect(minPath.length).toBe(2);
585
- expect(minPath[0]).toBe(vertex1);
586
- expect(minPath[1]).toBe(vertex2);
587
-
588
- expect(paths).toBeInstanceOf(Array);
589
- expect(paths.length).toBe(9);
590
- expect(paths[0]).toBeInstanceOf(Array);
591
- expect(paths[0][0]).toBe(vertex1);
592
-
593
- expect(paths[1]).toBeInstanceOf(Array);
594
- expect(paths[1][0]).toBe(vertex1);
595
- expect(paths[1][1]).toBe(vertex2);
596
-
597
- expect(paths[2]).toBeInstanceOf(Array);
598
- expect(paths[2][0]).toBe(vertex1);
599
- expect(paths[2][1]).toBe(vertex2);
600
- expect(paths[2][2]).toBe(vertex3);
601
-
602
- expect(paths[3]).toBeInstanceOf(Array);
603
- expect(paths[3][0]).toBe(vertex1);
604
- expect(paths[3][1]).toBe(vertex4);
605
-
606
- expect(paths[4]).toBeInstanceOf(Array);
607
- expect(paths[4][0]).toBe(vertex1);
608
- expect(paths[4][1]).toBe(vertex2);
609
- expect(paths[4][2]).toBe(vertex3);
610
- expect(paths[4][3]).toBe(vertex5);
611
-
612
- expect(paths[5]).toBeInstanceOf(Array);
613
- expect(paths[5][0]).toBe(vertex6);
614
-
615
- expect(paths[6]).toBeInstanceOf(Array);
616
- expect(paths[6][0]).toBe(vertex1);
617
- expect(paths[6][1]).toBe(vertex4);
618
- expect(paths[6][2]).toBe(vertex7);
619
-
620
- expect(paths[7]).toBeInstanceOf(Array);
621
- expect(paths[7][0]).toBe(vertex8);
622
-
623
- expect(paths[8]).toBeInstanceOf(Array);
624
- expect(paths[8][0]).toBe(vertex1);
625
- expect(paths[8][1]).toBe(vertex9);
626
- }
627
- });
628
- });
629
-
630
- describe('cycles, strongly connected components, bridges, articular points in DirectedGraph', () => {
631
- const graph = new DirectedGraph();
632
- graph.addVertex('A');
633
- graph.addVertex('B');
634
- graph.addVertex('C');
635
- graph.addVertex('D');
636
- graph.addVertex('E');
637
- graph.addVertex('F');
638
- graph.addVertex('G');
639
- graph.addVertex('H');
640
- graph.addEdge('A', 'B');
641
- graph.addEdge('B', 'D');
642
- graph.addEdge('D', 'C');
643
- graph.addEdge('C', 'A');
644
- graph.addEdge('C', 'B');
645
- graph.addEdge('D', 'E');
646
- graph.addEdge('E', 'G');
647
- graph.addEdge('E', 'H');
648
- graph.addEdge('H', 'F');
649
- const cycles = graph.getCycles();
650
- const scCs = graph.getSCCs();
651
- // const bridges = graph.getBridges();
652
- // const cutVertices = graph.getCutVertices();
653
- const dfnMap = graph.getDFNMap();
654
- const lowMap = graph.getLowMap();
655
- expect(cycles.length).toBe(2);
656
- expect(scCs.size).toBe(5);
657
- // expect(bridges.length).toBe(4);
658
- // expect(cutVertices.length).toBe(4);
659
- expect(dfnMap.size).toBe(8);
660
- expect(lowMap.size).toBe(8);
661
- });
662
-
663
- describe('DirectedGraph iterative Methods', () => {
664
- let graph: DirectedGraph<string>;
665
- let vertexMap: string[];
666
-
667
- beforeEach(() => {
668
- graph = new DirectedGraph();
669
- vertexMap = ['A', 'B', 'C', 'D'];
670
- vertexMap.forEach(vertex => graph.addVertex(vertex));
671
- });
672
-
673
- it('[Symbol.iterator] should iterate over all vertexMap', () => {
674
- const iteratedVertices = [];
675
- for (const vertex of graph) {
676
- iteratedVertices.push(vertex[0]);
677
- }
678
- expect(iteratedVertices).toEqual(vertexMap);
679
- });
680
-
681
- it('forEach should apply a function to each vertex', () => {
682
- const result: VertexKey[] = [];
683
- graph.forEach((_value, key) => key && result.push(key));
684
- expect(result).toEqual(vertexMap);
685
- });
686
-
687
- it('filter should return vertexMap that satisfy the condition', () => {
688
- const filtered = graph.filterEntries((_value, key) => key === 'A' || key === 'B');
689
- expect(filtered).toEqual([
690
- ['A', undefined],
691
- ['B', undefined]
692
- ]);
693
- });
694
-
695
- it('map should apply a function to each vertex and return a new array', () => {
696
- const mapped = graph.map((_value, vertex) => vertex + '_mapped');
697
- expect(mapped).toEqual(vertexMap.map(key => key + '_mapped'));
698
- });
699
-
700
- it('reduce should accumulate a value based on each vertex', () => {
701
- const concatenated = graph.reduce((acc, value, key) => acc + key, '');
702
- expect(concatenated).toBe(vertexMap.join(''));
703
- });
704
-
705
- it('Removing an edge of a DirectedGraph should delete additional edges', () => {
706
- const dg = new DirectedGraph();
707
- dg.addVertex('hello');
708
- dg.addVertex('hi');
709
- dg.addVertex('hey');
710
- dg.addEdge('hello', 'hi');
711
- dg.addEdge('hello', 'hey');
712
- expect(dg.getEdge('hello', 'hi')?.src).toBe('hello');
713
- expect(dg.getEdge('hello', 'hi')?.dest).toBe('hi');
714
- expect(dg.getEdge('hello', 'hey')?.src).toBe('hello');
715
- expect(dg.getEdge('hello', 'hey')?.dest).toBe('hey');
716
- dg.deleteEdge('hello', 'hi');
717
- expect(dg.getEdge('hello', 'hi')).toBe(undefined);
718
- expect(dg.getEdge('hello', 'hey')).toBeInstanceOf(DirectedEdge);
719
- expect(dg.incomingEdgesOf('Hi')).toEqual([]);
720
- });
721
-
722
- it('Removing a vertex of a DirectedGraph should delete additional edges', () => {
723
- const graph = new DirectedGraph();
724
-
725
- graph.addVertex('Hello');
726
- graph.addVertex('Hi');
727
-
728
- graph.addEdge('Hello', 'Hi');
729
- graph.deleteVertex('Hello');
730
-
731
- expect(graph.incomingEdgesOf('Hi')).toEqual([]);
732
- });
733
-
734
- it('Removing a vertex from a DirectedGraph should remove its edges', () => {
735
- const dg = new DirectedGraph();
736
- dg.addVertex('hello');
737
- dg.addVertex('world');
738
- dg.addVertex('earth');
739
-
740
- dg.addEdge('hello', 'world');
741
- dg.addEdge('hello', 'earth');
742
- dg.addEdge('world', 'earth');
743
-
744
- expect(dg.getEdge('hello', 'world')?.src).toBe('hello');
745
- expect(dg.edgeSet().length).toBe(3);
746
- expect(dg.edgeSet()[0].dest).toBe('world');
747
-
748
- dg.deleteVertex('hello');
749
- expect(dg.edgeSet().length).toBe(1);
750
- expect(dg.edgeSet()?.[0].src).toBe('world');
751
-
752
- expect(dg.getEdge('hello', 'world')).toBe(undefined);
753
- });
754
- });
755
-
756
- describe('DirectedGraph getCycles', () => {
757
- it('should getCycles return correct result', () => {
758
- const graph = new DirectedGraph();
759
- graph.addVertex('A');
760
- graph.addVertex('B');
761
- graph.addVertex('C');
762
- graph.addVertex('D');
763
- graph.addVertex('E');
764
- graph.addEdge('A', 'B');
765
- graph.addEdge('A', 'C');
766
- graph.addEdge('B', 'D');
767
- graph.addEdge('C', 'D');
768
- graph.addEdge('D', 'E');
769
- graph.addEdge('E', 'B');
770
- const cycles = graph.getCycles();
771
- expect(cycles.length).toBe(1);
772
- expect(cycles[0]).toEqual(['B', 'D', 'E']);
773
- });
774
-
775
- it('should simple cycles graph getCycles return correct result', () => {
776
- const graph = new DirectedGraph();
777
-
778
- graph.addVertex('A');
779
- graph.addVertex('B');
780
- graph.addVertex('C');
781
- graph.addVertex('D');
782
-
783
- graph.addEdge('A', 'B');
784
- graph.addEdge('B', 'C');
785
- graph.addEdge('C', 'A');
786
- graph.addEdge('A', 'D');
787
- graph.addEdge('D', 'C');
788
- const cycles = graph.getCycles();
789
- expect(cycles.length).toBe(2);
790
- expect(cycles).toEqual([
791
- ['A', 'B', 'C'],
792
- ['A', 'D', 'C']
793
- ]);
794
- });
795
-
796
- it('should 3 cycles graph getCycles return correct result', () => {
797
- const graph = new DirectedGraph();
798
-
799
- graph.addVertex('A');
800
- graph.addVertex('B');
801
- graph.addVertex('C');
802
- graph.addVertex('D');
803
- graph.addVertex('E');
804
- graph.addVertex('F');
805
- graph.addVertex('G');
806
-
807
- graph.addEdge('A', 'B');
808
- graph.addEdge('A', 'C');
809
- graph.addEdge('B', 'D');
810
- graph.addEdge('C', 'D');
811
- graph.addEdge('D', 'E');
812
- graph.addEdge('E', 'B');
813
- graph.addEdge('B', 'F');
814
- graph.addEdge('F', 'E');
815
- graph.addEdge('C', 'G');
816
- graph.addEdge('G', 'A');
817
-
818
- const cycles = graph.getCycles();
819
- expect(cycles.length).toBe(3);
820
- expect(cycles).toEqual([
821
- ['A', 'C', 'G'],
822
- ['B', 'D', 'E'],
823
- ['B', 'F', 'E']
824
- ]);
825
- });
826
- });
827
-
828
- describe('DirectedGraph tarjan', () => {
829
- it('should simple cycles graph tarjan cycles return correct result', () => {
830
- const graph = new DirectedGraph();
831
-
832
- graph.addVertex('A');
833
- graph.addVertex('B');
834
- graph.addVertex('C');
835
- graph.addVertex('D');
836
-
837
- graph.addEdge('A', 'B');
838
- graph.addEdge('B', 'C');
839
- graph.addEdge('C', 'A');
840
- graph.addEdge('A', 'D');
841
- graph.addEdge('D', 'C');
842
- const cycles = graph.getCycles();
843
- expect(cycles.length).toBe(2);
844
- expect(cycles).toEqual([
845
- ['A', 'B', 'C'],
846
- ['A', 'D', 'C']
847
- ]);
848
- });
849
-
850
- function getAsVerticesArrays(vss: Map<number, DirectedVertex<any>[]>) {
851
- return [...vss.values()].map(vs => vs.map(vertex => vertex.key));
852
- }
853
-
854
- function createExampleGraph1() {
855
- const graph = new DirectedGraph();
856
- graph.addVertex('A');
857
- graph.addVertex('B');
858
- graph.addVertex('C');
859
- graph.addVertex('D');
860
- graph.addVertex('E');
861
- graph.addEdge('A', 'B');
862
- graph.addEdge('A', 'C');
863
- graph.addEdge('B', 'D');
864
- graph.addEdge('C', 'D');
865
- graph.addEdge('D', 'E');
866
- graph.addEdge('E', 'B');
867
- return graph;
868
- }
869
-
870
- it('should tarjan cycles return correct result', () => {
871
- const graph = createExampleGraph1();
872
- const cycles = graph.getCycles();
873
- expect(cycles.length).toBe(1);
874
- expect(cycles).toEqual([['B', 'D', 'E']]);
875
- });
876
-
877
- it('should tarjan SCCs return correct result', () => {
878
- const graph = createExampleGraph1();
879
- const sccs = graph.tarjan().SCCs;
880
- expect(sccs.size).toBe(3);
881
- expect(getAsVerticesArrays(sccs)).toEqual([['E', 'D', 'B'], ['C'], ['A']]);
882
- });
883
-
884
- function createExampleGraph2() {
885
- const graph = createExampleGraph1();
886
- graph.addVertex('F');
887
- graph.addVertex('G');
888
- graph.addEdge('B', 'F');
889
- graph.addEdge('F', 'E');
890
- graph.addEdge('C', 'G');
891
- graph.addEdge('G', 'A');
892
- return graph;
893
- }
894
-
895
- it('should 3 cycles graph tarjan cycles return correct result', () => {
896
- const graph = createExampleGraph2();
897
- const cycles = graph.getCycles();
898
- expect(cycles.length).toBe(3);
899
- expect(cycles).toEqual([
900
- ['A', 'C', 'G'],
901
- ['B', 'D', 'E'],
902
- ['B', 'F', 'E']
903
- ]);
904
- });
905
-
906
- it('should 3 cycles graph tarjan SCCs return correct result', () => {
907
- const graph = createExampleGraph2();
908
- const sccs = graph.tarjan().SCCs;
909
- expect(sccs.size).toBe(2);
910
- expect(getAsVerticesArrays(sccs)).toEqual([
911
- ['F', 'E', 'D', 'B'],
912
- ['G', 'C', 'A']
913
- ]);
914
- });
915
-
916
- function createExampleGraph3() {
917
- const graph = new DirectedGraph();
918
- graph.addVertex('A');
919
- graph.addVertex('B');
920
- graph.addVertex('C');
921
- graph.addVertex('D');
922
- graph.addVertex('E');
923
- graph.addVertex('F');
924
- graph.addVertex('G');
925
- graph.addEdge('A', 'B');
926
- graph.addEdge('B', 'C');
927
- graph.addEdge('C', 'D');
928
- graph.addEdge('D', 'B');
929
- graph.addEdge('A', 'E');
930
- graph.addEdge('E', 'F');
931
- graph.addEdge('F', 'G');
932
- graph.addEdge('G', 'E');
933
- return graph;
934
- }
935
-
936
- it('should cuttable graph tarjan cycles return correct result', () => {
937
- const graph = createExampleGraph3();
938
- const cycles = graph.getCycles();
939
- expect(cycles.length).toBe(2);
940
- expect(cycles).toEqual([
941
- ['B', 'C', 'D'],
942
- ['E', 'F', 'G']
943
- ]);
944
- });
945
-
946
- it('should cuttable graph tarjan SCCs return correct result', () => {
947
- const graph = createExampleGraph3();
948
- const sccs = graph.tarjan().SCCs;
949
- expect(sccs.size).toBe(3);
950
- expect(getAsVerticesArrays(sccs)).toEqual([['D', 'C', 'B'], ['G', 'F', 'E'], ['A']]);
951
- });
952
-
953
- function createExampleGraph4() {
954
- const graph = createExampleGraph3();
955
- graph.addVertex('H');
956
- graph.addVertex('I');
957
- graph.addVertex('J');
958
- graph.addVertex('K');
959
- graph.addEdge('C', 'H');
960
- graph.addEdge('H', 'I');
961
- graph.addEdge('I', 'D');
962
- graph.addEdge('H', 'J');
963
- graph.addEdge('J', 'K');
964
- graph.addEdge('K', 'H');
965
- return graph;
966
- }
967
-
968
- it('should more cuttable graph tarjan cycles return correct result', () => {
969
- const graph = createExampleGraph4();
970
- const cycles = graph.getCycles();
971
- expect(cycles.length).toBe(4);
972
- expect(cycles).toEqual([
973
- ['B', 'C', 'D'],
974
- ['B', 'C', 'H', 'I', 'D'],
975
- ['E', 'F', 'G'],
976
- ['H', 'J', 'K']
977
- ]);
978
- });
979
-
980
- it('should more cuttable graph tarjan SCCs return correct result', () => {
981
- const graph = createExampleGraph4();
982
- const sccs = graph.tarjan().SCCs;
983
- expect(sccs.size).toBe(3);
984
- expect(getAsVerticesArrays(sccs)).toEqual([['K', 'J', 'I', 'H', 'D', 'C', 'B'], ['G', 'F', 'E'], ['A']]);
985
- });
986
-
987
- function createExampleGraph5() {
988
- const graph = createExampleGraph4();
989
- graph.addEdge('F', 'H');
990
- return graph;
991
- }
992
-
993
- it('should uncuttable graph tarjan cycles return correct result', () => {
994
- const graph = createExampleGraph5();
995
- const cycles = graph.getCycles();
996
- expect(cycles.length).toBe(4);
997
- expect(cycles).toEqual([
998
- ['B', 'C', 'D'],
999
- ['B', 'C', 'H', 'I', 'D'],
1000
- ['E', 'F', 'G'],
1001
- ['H', 'J', 'K']
1002
- ]);
1003
- });
1004
-
1005
- it('should uncuttable graph tarjan SCCs return correct result', () => {
1006
- const graph = createExampleGraph5();
1007
- const sccs = graph.tarjan().SCCs;
1008
- expect(sccs.size).toBe(3);
1009
- expect(getAsVerticesArrays(sccs)).toEqual([['K', 'J', 'I', 'H', 'D', 'C', 'B'], ['G', 'F', 'E'], ['A']]);
1010
- });
1011
- });
1012
-
1013
- describe('delete', () => {
1014
- it(`deleteVertex deletes all of it's neighbors from the inEdge Map`, () => {
1015
- const graph = new DirectedGraph();
1016
- graph.addVertex('A');
1017
- graph.addVertex('B');
1018
- graph.addVertex('C');
1019
-
1020
- graph.addEdge('B', 'A');
1021
- graph.addEdge('C', 'A');
1022
-
1023
- // 'Incoming to A should contain ['B','C']
1024
- expect(graph.incomingEdgesOf('A').map(e => e.src)).toEqual(['B', 'C']); // ['B','C']
1025
-
1026
- // Now delete B, which has no direct link to C, only that C -> A.
1027
- graph.deleteVertex('B');
1028
-
1029
- // Now if we do the same call to incoming edges for we should get only ['C']
1030
- expect(graph.incomingEdgesOf('A').map(e => e.src)).toEqual(['C']); // [];
1031
-
1032
- // but it only shows an empty array, since we deleted all of `A's edges, not just the one to `B`.
1033
-
1034
- // If we check C, it correctly shows A as an outgoing edge,
1035
- // even though A no longer has any knowledge of C linking to it.
1036
- expect(graph.outgoingEdgesOf('C').map(e => e.dest)).toEqual(['A']);
1037
- });
1038
-
1039
- // it('should print', () => {
1040
- // const graph = new DirectedGraph();
1041
- // graph.addVertex('A');
1042
- // graph.addVertex('B');
1043
- // graph.addVertex('C');
1044
- //
1045
- // graph.addEdge('A', 'B');
1046
- // graph.addEdge('A', 'C');
1047
- // graph.addEdge('B', 'C');
1048
- // graph.addEdge('C', 'B');
1049
- // graph.print();
1050
- //
1051
- // })
1052
- });
1053
-
1054
- describe('classic use', () => {
1055
- it('@example basic DirectedGraph vertex and edge creation', () => {
1056
- // Create a simple directed graph
1057
- const graph = new DirectedGraph<string>();
1058
-
1059
- // Add vertices
1060
- graph.addVertex('A');
1061
- graph.addVertex('B');
1062
- graph.addVertex('C');
1063
-
1064
- // Verify vertices exist
1065
- expect(graph.hasVertex('A')).toBe(true);
1066
- expect(graph.hasVertex('B')).toBe(true);
1067
- expect(graph.hasVertex('C')).toBe(true);
1068
- expect(graph.hasVertex('D')).toBe(false);
1069
-
1070
- // Check vertex count
1071
- expect(graph.size).toBe(3);
1072
- });
1073
-
1074
- it('@example DirectedGraph edge operations', () => {
1075
- const graph = new DirectedGraph<string>();
1076
-
1077
- // Add vertices
1078
- graph.addVertex('A');
1079
- graph.addVertex('B');
1080
- graph.addVertex('C');
1081
-
1082
- // Add directed edges
1083
- graph.addEdge('A', 'B', 1);
1084
- graph.addEdge('B', 'C', 2);
1085
- graph.addEdge('A', 'C', 3);
1086
-
1087
- // Verify edges exist
1088
- expect(graph.hasEdge('A', 'B')).toBe(true);
1089
- expect(graph.hasEdge('B', 'C')).toBe(true);
1090
- expect(graph.hasEdge('C', 'B')).toBe(false); // Graph is directed
1091
-
1092
- // Get neighbors of A
1093
- const neighborsA = graph.getNeighbors('A');
1094
- expect(neighborsA[0].key).toBe('B');
1095
- expect(neighborsA[1].key).toBe('C');
1096
- });
1097
-
1098
- it('@example DirectedGraph deleteEdge and vertex operations', () => {
1099
- const graph = new DirectedGraph<string>();
1100
-
1101
- // Build a small graph
1102
- graph.addVertex('X');
1103
- graph.addVertex('Y');
1104
- graph.addVertex('Z');
1105
- graph.addEdge('X', 'Y', 1);
1106
- graph.addEdge('Y', 'Z', 2);
1107
-
1108
- // Delete an edge
1109
- graph.deleteEdgeSrcToDest('X', 'Y');
1110
- expect(graph.hasEdge('X', 'Y')).toBe(false);
1111
-
1112
- // Edge in other direction should not exist
1113
- expect(graph.hasEdge('Y', 'X')).toBe(false);
1114
-
1115
- // Other edges should remain
1116
- expect(graph.hasEdge('Y', 'Z')).toBe(true);
1117
-
1118
- // Delete a vertex
1119
- graph.deleteVertex('Y');
1120
- expect(graph.hasVertex('Y')).toBe(false);
1121
- expect(graph.size).toBe(2);
1122
- });
1123
-
1124
- it('@example DirectedGraph topologicalSort for task scheduling', () => {
1125
- const graph = new DirectedGraph<string>();
1126
-
1127
- // Build a DAG (Directed Acyclic Graph) for task dependencies
1128
- graph.addVertex('Design');
1129
- graph.addVertex('Implement');
1130
- graph.addVertex('Test');
1131
- graph.addVertex('Deploy');
1132
-
1133
- // Add dependency edges
1134
- graph.addEdge('Design', 'Implement', 1); // Design must come before Implement
1135
- graph.addEdge('Implement', 'Test', 1); // Implement must come before Test
1136
- graph.addEdge('Test', 'Deploy', 1); // Test must come before Deploy
1137
-
1138
- // Topological sort gives valid execution order
1139
- const executionOrder = graph.topologicalSort();
1140
- expect(executionOrder).toBeDefined();
1141
- expect(executionOrder).toEqual(['Design', 'Implement', 'Test', 'Deploy']);
1142
-
1143
- // All vertices should be included
1144
- expect(executionOrder?.length).toBe(4);
1145
- });
1146
-
1147
- it('@example DirectedGraph dijkstra shortest path for network routing', () => {
1148
- // Build a weighted directed graph representing network nodes and costs
1149
- const network = new DirectedGraph<string>();
1150
-
1151
- // Add network nodes
1152
- network.addVertex('Router-A');
1153
- network.addVertex('Router-B');
1154
- network.addVertex('Router-C');
1155
- network.addVertex('Router-D');
1156
- network.addVertex('Router-E');
1157
-
1158
- // Add weighted edges (network latency costs)
1159
- network.addEdge('Router-A', 'Router-B', 5);
1160
- network.addEdge('Router-A', 'Router-C', 10);
1161
- network.addEdge('Router-B', 'Router-D', 3);
1162
- network.addEdge('Router-C', 'Router-D', 2);
1163
- network.addEdge('Router-D', 'Router-E', 4);
1164
- network.addEdge('Router-B', 'Router-E', 12);
1165
-
1166
- // Find shortest path from Router-A to Router-E
1167
- const { minDist, minPath } = network.dijkstra('Router-A', 'Router-E', true, true) || {
1168
- minDist: undefined,
1169
- minPath: undefined
1170
- };
1171
-
1172
- // Verify shortest path is found
1173
- expect(minDist).toBeDefined();
1174
- expect(minPath).toBeDefined();
1175
-
1176
- // Shortest path should be A -> B -> D -> E with cost 5+3+4=12
1177
- // Or A -> C -> D -> E with cost 10+2+4=16
1178
- // So the minimum is 12
1179
- expect(minDist).toBeLessThanOrEqual(16);
1180
-
1181
- // Verify path is valid (includes start and end)
1182
- expect(minPath?.[0].key).toBe('Router-A');
1183
- expect(minPath?.[minPath.length - 1].key).toBe('Router-E');
1184
- });
1185
- });