data-structure-typed 2.4.1 → 2.4.3

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 (738) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/cjs/index.cjs +36 -9
  3. package/dist/cjs-legacy/index.cjs +36 -9
  4. package/dist/esm/index.mjs +36 -9
  5. package/dist/esm-legacy/index.mjs +36 -9
  6. package/dist/types/data-structures/binary-tree/tree-map.d.ts +10 -0
  7. package/dist/types/data-structures/binary-tree/tree-set.d.ts +10 -0
  8. package/dist/umd/data-structure-typed.js +36 -8
  9. package/dist/umd/data-structure-typed.min.js +2 -2
  10. package/package.json +7 -5
  11. package/src/data-structures/binary-tree/tree-map.ts +16 -0
  12. package/src/data-structures/binary-tree/tree-set.ts +16 -0
  13. package/src/data-structures/trie/trie.ts +6 -8
  14. package/CMakeLists.txt +0 -52
  15. package/benchmark/report.html +0 -221
  16. package/benchmark/report.json +0 -1972
  17. package/build/CMakeCache.txt +0 -603
  18. package/build/CMakeFiles/4.0.3/CMakeCXXCompiler.cmake +0 -104
  19. package/build/CMakeFiles/4.0.3/CMakeDetermineCompilerABI_CXX.bin +0 -0
  20. package/build/CMakeFiles/4.0.3/CMakeSystem.cmake +0 -15
  21. package/build/CMakeFiles/4.0.3/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -920
  22. package/build/CMakeFiles/4.0.3/CompilerIdCXX/a.out +0 -0
  23. package/build/CMakeFiles/4.0.3/CompilerIdCXX/apple-sdk.cpp +0 -1
  24. package/build/CMakeFiles/CMakeConfigureLog.yaml +0 -2146
  25. package/build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  26. package/build/CMakeFiles/InstallScripts.json +0 -9
  27. package/build/CMakeFiles/Makefile.cmake +0 -100
  28. package/build/CMakeFiles/Makefile2 +0 -720
  29. package/build/CMakeFiles/TargetDirectories.txt +0 -23
  30. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/DependInfo.cmake +0 -23
  31. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/build.make +0 -114
  32. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/cmake_clean.cmake +0 -11
  33. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.internal +0 -839
  34. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.make +0 -2506
  35. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.ts +0 -2
  36. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/depend.make +0 -2
  37. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/flags.make +0 -10
  38. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/link.txt +0 -1
  39. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/progress.make +0 -3
  40. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp.o +0 -0
  41. 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
  42. package/build/CMakeFiles/avl-tree-benchmark.dir/DependInfo.cmake +0 -23
  43. package/build/CMakeFiles/avl-tree-benchmark.dir/build.make +0 -114
  44. package/build/CMakeFiles/avl-tree-benchmark.dir/cmake_clean.cmake +0 -11
  45. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.internal +0 -839
  46. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.make +0 -2506
  47. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.ts +0 -2
  48. package/build/CMakeFiles/avl-tree-benchmark.dir/depend.make +0 -2
  49. package/build/CMakeFiles/avl-tree-benchmark.dir/flags.make +0 -10
  50. package/build/CMakeFiles/avl-tree-benchmark.dir/link.txt +0 -1
  51. package/build/CMakeFiles/avl-tree-benchmark.dir/progress.make +0 -3
  52. package/build/CMakeFiles/avl-tree-benchmark.dir/test/performance/data-structures/binary-tree/avl-tree.test.cpp.o +0 -0
  53. package/build/CMakeFiles/avl-tree-benchmark.dir/test/performance/data-structures/binary-tree/avl-tree.test.cpp.o.d +0 -835
  54. package/build/CMakeFiles/cmake.check_cache +0 -1
  55. package/build/CMakeFiles/deque-benchmark.dir/DependInfo.cmake +0 -23
  56. package/build/CMakeFiles/deque-benchmark.dir/build.make +0 -114
  57. package/build/CMakeFiles/deque-benchmark.dir/cmake_clean.cmake +0 -11
  58. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.internal +0 -791
  59. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.make +0 -2362
  60. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.ts +0 -2
  61. package/build/CMakeFiles/deque-benchmark.dir/depend.make +0 -2
  62. package/build/CMakeFiles/deque-benchmark.dir/flags.make +0 -10
  63. package/build/CMakeFiles/deque-benchmark.dir/link.txt +0 -1
  64. package/build/CMakeFiles/deque-benchmark.dir/progress.make +0 -3
  65. package/build/CMakeFiles/deque-benchmark.dir/test/performance/data-structures/queue/deque.test.cpp.o +0 -0
  66. package/build/CMakeFiles/deque-benchmark.dir/test/performance/data-structures/queue/deque.test.cpp.o.d +0 -787
  67. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/DependInfo.cmake +0 -23
  68. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/build.make +0 -114
  69. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/cmake_clean.cmake +0 -11
  70. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.internal +0 -790
  71. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.make +0 -2359
  72. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.ts +0 -2
  73. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/depend.make +0 -2
  74. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/flags.make +0 -10
  75. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/link.txt +0 -1
  76. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/progress.make +0 -3
  77. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp.o +0 -0
  78. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp.o.d +0 -786
  79. package/build/CMakeFiles/hash-map-benchmark.dir/DependInfo.cmake +0 -23
  80. package/build/CMakeFiles/hash-map-benchmark.dir/build.make +0 -114
  81. package/build/CMakeFiles/hash-map-benchmark.dir/cmake_clean.cmake +0 -11
  82. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.internal +0 -790
  83. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.make +0 -2359
  84. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.ts +0 -2
  85. package/build/CMakeFiles/hash-map-benchmark.dir/depend.make +0 -2
  86. package/build/CMakeFiles/hash-map-benchmark.dir/flags.make +0 -10
  87. package/build/CMakeFiles/hash-map-benchmark.dir/link.txt +0 -1
  88. package/build/CMakeFiles/hash-map-benchmark.dir/progress.make +0 -3
  89. package/build/CMakeFiles/hash-map-benchmark.dir/test/performance/data-structures/hash/hash-map.test.cpp.o +0 -0
  90. package/build/CMakeFiles/hash-map-benchmark.dir/test/performance/data-structures/hash/hash-map.test.cpp.o.d +0 -786
  91. package/build/CMakeFiles/heap-benchmark.dir/DependInfo.cmake +0 -23
  92. package/build/CMakeFiles/heap-benchmark.dir/build.make +0 -114
  93. package/build/CMakeFiles/heap-benchmark.dir/cmake_clean.cmake +0 -11
  94. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.internal +0 -843
  95. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.make +0 -2518
  96. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.ts +0 -2
  97. package/build/CMakeFiles/heap-benchmark.dir/depend.make +0 -2
  98. package/build/CMakeFiles/heap-benchmark.dir/flags.make +0 -10
  99. package/build/CMakeFiles/heap-benchmark.dir/link.txt +0 -1
  100. package/build/CMakeFiles/heap-benchmark.dir/progress.make +0 -3
  101. package/build/CMakeFiles/heap-benchmark.dir/test/performance/data-structures/heap/heap.test.cpp.o +0 -0
  102. package/build/CMakeFiles/heap-benchmark.dir/test/performance/data-structures/heap/heap.test.cpp.o.d +0 -839
  103. package/build/CMakeFiles/priority-queue-benchmark.dir/DependInfo.cmake +0 -23
  104. package/build/CMakeFiles/priority-queue-benchmark.dir/build.make +0 -114
  105. package/build/CMakeFiles/priority-queue-benchmark.dir/cmake_clean.cmake +0 -11
  106. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.internal +0 -793
  107. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.make +0 -2368
  108. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.ts +0 -2
  109. package/build/CMakeFiles/priority-queue-benchmark.dir/depend.make +0 -2
  110. package/build/CMakeFiles/priority-queue-benchmark.dir/flags.make +0 -10
  111. package/build/CMakeFiles/priority-queue-benchmark.dir/link.txt +0 -1
  112. package/build/CMakeFiles/priority-queue-benchmark.dir/progress.make +0 -3
  113. package/build/CMakeFiles/priority-queue-benchmark.dir/test/performance/data-structures/priority-queue/priority-queue.test.cpp.o +0 -0
  114. package/build/CMakeFiles/priority-queue-benchmark.dir/test/performance/data-structures/priority-queue/priority-queue.test.cpp.o.d +0 -789
  115. package/build/CMakeFiles/progress.marks +0 -1
  116. package/build/CMakeFiles/queue-benchmark.dir/DependInfo.cmake +0 -23
  117. package/build/CMakeFiles/queue-benchmark.dir/build.make +0 -114
  118. package/build/CMakeFiles/queue-benchmark.dir/cmake_clean.cmake +0 -11
  119. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.internal +0 -793
  120. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.make +0 -2368
  121. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.ts +0 -2
  122. package/build/CMakeFiles/queue-benchmark.dir/depend.make +0 -2
  123. package/build/CMakeFiles/queue-benchmark.dir/flags.make +0 -10
  124. package/build/CMakeFiles/queue-benchmark.dir/link.txt +0 -1
  125. package/build/CMakeFiles/queue-benchmark.dir/progress.make +0 -3
  126. package/build/CMakeFiles/queue-benchmark.dir/test/performance/data-structures/queue/queue.test.cpp.o +0 -0
  127. package/build/CMakeFiles/queue-benchmark.dir/test/performance/data-structures/queue/queue.test.cpp.o.d +0 -789
  128. package/build/CMakeFiles/red-black-tree-benchmark.dir/DependInfo.cmake +0 -23
  129. package/build/CMakeFiles/red-black-tree-benchmark.dir/build.make +0 -114
  130. package/build/CMakeFiles/red-black-tree-benchmark.dir/cmake_clean.cmake +0 -11
  131. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.internal +0 -839
  132. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.make +0 -2506
  133. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.ts +0 -2
  134. package/build/CMakeFiles/red-black-tree-benchmark.dir/depend.make +0 -2
  135. package/build/CMakeFiles/red-black-tree-benchmark.dir/flags.make +0 -10
  136. package/build/CMakeFiles/red-black-tree-benchmark.dir/link.txt +0 -1
  137. package/build/CMakeFiles/red-black-tree-benchmark.dir/progress.make +0 -3
  138. package/build/CMakeFiles/red-black-tree-benchmark.dir/test/performance/data-structures/binary-tree/red-black-tree.test.cpp.o +0 -0
  139. package/build/CMakeFiles/red-black-tree-benchmark.dir/test/performance/data-structures/binary-tree/red-black-tree.test.cpp.o.d +0 -835
  140. package/build/CMakeFiles/singly-linked-list-benchmark.dir/DependInfo.cmake +0 -23
  141. package/build/CMakeFiles/singly-linked-list-benchmark.dir/build.make +0 -114
  142. package/build/CMakeFiles/singly-linked-list-benchmark.dir/cmake_clean.cmake +0 -11
  143. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.internal +0 -790
  144. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.make +0 -2359
  145. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.ts +0 -2
  146. package/build/CMakeFiles/singly-linked-list-benchmark.dir/depend.make +0 -2
  147. package/build/CMakeFiles/singly-linked-list-benchmark.dir/flags.make +0 -10
  148. package/build/CMakeFiles/singly-linked-list-benchmark.dir/link.txt +0 -1
  149. package/build/CMakeFiles/singly-linked-list-benchmark.dir/progress.make +0 -3
  150. package/build/CMakeFiles/singly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/singly-linked-list.test.cpp.o +0 -0
  151. package/build/CMakeFiles/singly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/singly-linked-list.test.cpp.o.d +0 -786
  152. package/build/CMakeFiles/stack-benchmark.dir/DependInfo.cmake +0 -23
  153. package/build/CMakeFiles/stack-benchmark.dir/build.make +0 -114
  154. package/build/CMakeFiles/stack-benchmark.dir/cmake_clean.cmake +0 -11
  155. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.internal +0 -793
  156. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.make +0 -2368
  157. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.ts +0 -2
  158. package/build/CMakeFiles/stack-benchmark.dir/depend.make +0 -2
  159. package/build/CMakeFiles/stack-benchmark.dir/flags.make +0 -10
  160. package/build/CMakeFiles/stack-benchmark.dir/link.txt +0 -1
  161. package/build/CMakeFiles/stack-benchmark.dir/progress.make +0 -3
  162. package/build/CMakeFiles/stack-benchmark.dir/test/performance/data-structures/stack/stack.test.cpp.o +0 -0
  163. package/build/CMakeFiles/stack-benchmark.dir/test/performance/data-structures/stack/stack.test.cpp.o.d +0 -789
  164. package/build/CMakeFiles/tree-map-benchmark.dir/DependInfo.cmake +0 -23
  165. package/build/CMakeFiles/tree-map-benchmark.dir/build.make +0 -114
  166. package/build/CMakeFiles/tree-map-benchmark.dir/cmake_clean.cmake +0 -11
  167. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.internal +0 -839
  168. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.make +0 -2506
  169. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.ts +0 -2
  170. package/build/CMakeFiles/tree-map-benchmark.dir/depend.make +0 -2
  171. package/build/CMakeFiles/tree-map-benchmark.dir/flags.make +0 -10
  172. package/build/CMakeFiles/tree-map-benchmark.dir/link.txt +0 -1
  173. package/build/CMakeFiles/tree-map-benchmark.dir/progress.make +0 -3
  174. package/build/CMakeFiles/tree-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-map.test.cpp.o +0 -0
  175. package/build/CMakeFiles/tree-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-map.test.cpp.o.d +0 -835
  176. package/build/CMakeFiles/tree-multi-map-benchmark.dir/DependInfo.cmake +0 -23
  177. package/build/CMakeFiles/tree-multi-map-benchmark.dir/build.make +0 -114
  178. package/build/CMakeFiles/tree-multi-map-benchmark.dir/cmake_clean.cmake +0 -11
  179. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.internal +0 -839
  180. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.make +0 -2506
  181. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.ts +0 -2
  182. package/build/CMakeFiles/tree-multi-map-benchmark.dir/depend.make +0 -2
  183. package/build/CMakeFiles/tree-multi-map-benchmark.dir/flags.make +0 -10
  184. package/build/CMakeFiles/tree-multi-map-benchmark.dir/link.txt +0 -1
  185. package/build/CMakeFiles/tree-multi-map-benchmark.dir/progress.make +0 -3
  186. package/build/CMakeFiles/tree-multi-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp.o +0 -0
  187. package/build/CMakeFiles/tree-multi-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp.o.d +0 -835
  188. package/build/CMakeFiles/tree-multi-set-benchmark.dir/DependInfo.cmake +0 -23
  189. package/build/CMakeFiles/tree-multi-set-benchmark.dir/build.make +0 -114
  190. package/build/CMakeFiles/tree-multi-set-benchmark.dir/cmake_clean.cmake +0 -11
  191. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.internal +0 -839
  192. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.make +0 -2506
  193. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.ts +0 -2
  194. package/build/CMakeFiles/tree-multi-set-benchmark.dir/depend.make +0 -2
  195. package/build/CMakeFiles/tree-multi-set-benchmark.dir/flags.make +0 -10
  196. package/build/CMakeFiles/tree-multi-set-benchmark.dir/link.txt +0 -1
  197. package/build/CMakeFiles/tree-multi-set-benchmark.dir/progress.make +0 -3
  198. package/build/CMakeFiles/tree-multi-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp.o +0 -0
  199. package/build/CMakeFiles/tree-multi-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp.o.d +0 -835
  200. package/build/CMakeFiles/tree-set-benchmark.dir/DependInfo.cmake +0 -23
  201. package/build/CMakeFiles/tree-set-benchmark.dir/build.make +0 -114
  202. package/build/CMakeFiles/tree-set-benchmark.dir/cmake_clean.cmake +0 -11
  203. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.internal +0 -839
  204. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.make +0 -2506
  205. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.ts +0 -2
  206. package/build/CMakeFiles/tree-set-benchmark.dir/depend.make +0 -2
  207. package/build/CMakeFiles/tree-set-benchmark.dir/flags.make +0 -10
  208. package/build/CMakeFiles/tree-set-benchmark.dir/link.txt +0 -1
  209. package/build/CMakeFiles/tree-set-benchmark.dir/progress.make +0 -3
  210. package/build/CMakeFiles/tree-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-set.test.cpp.o +0 -0
  211. package/build/CMakeFiles/tree-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-set.test.cpp.o.d +0 -835
  212. package/build/Makefile +0 -783
  213. package/build/_deps/benchmark-build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  214. package/build/_deps/benchmark-build/CMakeFiles/progress.marks +0 -1
  215. package/build/_deps/benchmark-build/Makefile +0 -140
  216. package/build/_deps/benchmark-build/benchmark.pc +0 -12
  217. package/build/_deps/benchmark-build/benchmarkConfig.cmake +0 -14
  218. package/build/_deps/benchmark-build/benchmarkConfigVersion.cmake +0 -65
  219. package/build/_deps/benchmark-build/benchmarkTargets.cmake +0 -84
  220. package/build/_deps/benchmark-build/cmake_install.cmake +0 -50
  221. package/build/_deps/benchmark-build/src/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  222. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/DependInfo.cmake +0 -41
  223. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark.cc.o +0 -0
  224. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark.cc.o.d +0 -875
  225. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o +0 -0
  226. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d +0 -802
  227. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o +0 -0
  228. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o.d +0 -772
  229. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o +0 -0
  230. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o.d +0 -841
  231. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o +0 -0
  232. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d +0 -833
  233. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/build.make +0 -402
  234. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/check.cc.o +0 -0
  235. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/check.cc.o.d +0 -784
  236. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/cmake_clean.cmake +0 -47
  237. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake +0 -3
  238. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/colorprint.cc.o +0 -0
  239. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/colorprint.cc.o.d +0 -791
  240. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o +0 -0
  241. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o.d +0 -795
  242. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.internal +0 -15519
  243. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.make +0 -17500
  244. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.ts +0 -2
  245. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/complexity.cc.o +0 -0
  246. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/complexity.cc.o.d +0 -793
  247. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/console_reporter.cc.o +0 -0
  248. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/console_reporter.cc.o.d +0 -802
  249. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/counter.cc.o +0 -0
  250. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/counter.cc.o.d +0 -773
  251. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o +0 -0
  252. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o.d +0 -799
  253. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/depend.make +0 -2
  254. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/flags.make +0 -10
  255. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/json_reporter.cc.o +0 -0
  256. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/json_reporter.cc.o.d +0 -800
  257. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/link.txt +0 -2
  258. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/perf_counters.cc.o +0 -0
  259. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/perf_counters.cc.o.d +0 -807
  260. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/progress.make +0 -21
  261. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/reporter.cc.o +0 -0
  262. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/reporter.cc.o.d +0 -798
  263. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/statistics.cc.o +0 -0
  264. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/statistics.cc.o.d +0 -800
  265. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/string_util.cc.o +0 -0
  266. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/string_util.cc.o.d +0 -795
  267. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/sysinfo.cc.o +0 -0
  268. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/sysinfo.cc.o.d +0 -933
  269. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/timers.cc.o +0 -0
  270. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/timers.cc.o.d +0 -904
  271. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake +0 -23
  272. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o +0 -0
  273. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d +0 -772
  274. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/build.make +0 -114
  275. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake +0 -11
  276. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake +0 -3
  277. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.internal +0 -776
  278. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.make +0 -2317
  279. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts +0 -2
  280. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/depend.make +0 -2
  281. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/flags.make +0 -10
  282. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/link.txt +0 -2
  283. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/progress.make +0 -3
  284. package/build/_deps/benchmark-build/src/CMakeFiles/progress.marks +0 -1
  285. package/build/_deps/benchmark-build/src/Makefile +0 -710
  286. package/build/_deps/benchmark-build/src/cmake_install.cmake +0 -45
  287. package/build/_deps/benchmark-build/src/libbenchmark.a +0 -0
  288. package/build/_deps/benchmark-build/src/libbenchmark_main.a +0 -0
  289. package/build/_deps/benchmark-src/.clang-format +0 -5
  290. package/build/_deps/benchmark-src/.clang-tidy +0 -7
  291. package/build/_deps/benchmark-src/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  292. package/build/_deps/benchmark-src/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  293. package/build/_deps/benchmark-src/.github/install_bazel.sh +0 -13
  294. package/build/_deps/benchmark-src/.github/libcxx-setup.sh +0 -26
  295. package/build/_deps/benchmark-src/.github/workflows/bazel.yml +0 -35
  296. package/build/_deps/benchmark-src/.github/workflows/build-and-test-min-cmake.yml +0 -46
  297. package/build/_deps/benchmark-src/.github/workflows/build-and-test-perfcounters.yml +0 -51
  298. package/build/_deps/benchmark-src/.github/workflows/build-and-test.yml +0 -114
  299. package/build/_deps/benchmark-src/.github/workflows/clang-format-lint.yml +0 -17
  300. package/build/_deps/benchmark-src/.github/workflows/clang-tidy.yml +0 -38
  301. package/build/_deps/benchmark-src/.github/workflows/doxygen.yml +0 -28
  302. package/build/_deps/benchmark-src/.github/workflows/pylint.yml +0 -28
  303. package/build/_deps/benchmark-src/.github/workflows/sanitizer.yml +0 -96
  304. package/build/_deps/benchmark-src/.github/workflows/test_bindings.yml +0 -29
  305. package/build/_deps/benchmark-src/.github/workflows/wheels.yml +0 -79
  306. package/build/_deps/benchmark-src/.travis.yml +0 -208
  307. package/build/_deps/benchmark-src/.ycm_extra_conf.py +0 -115
  308. package/build/_deps/benchmark-src/AUTHORS +0 -71
  309. package/build/_deps/benchmark-src/BUILD.bazel +0 -87
  310. package/build/_deps/benchmark-src/CMakeLists.txt +0 -340
  311. package/build/_deps/benchmark-src/CONTRIBUTING.md +0 -58
  312. package/build/_deps/benchmark-src/CONTRIBUTORS +0 -95
  313. package/build/_deps/benchmark-src/LICENSE +0 -202
  314. package/build/_deps/benchmark-src/MODULE.bazel +0 -24
  315. package/build/_deps/benchmark-src/README.md +0 -223
  316. package/build/_deps/benchmark-src/WORKSPACE +0 -22
  317. package/build/_deps/benchmark-src/WORKSPACE.bzlmod +0 -2
  318. package/build/_deps/benchmark-src/_config.yml +0 -2
  319. package/build/_deps/benchmark-src/appveyor.yml +0 -50
  320. package/build/_deps/benchmark-src/bazel/benchmark_deps.bzl +0 -65
  321. package/build/_deps/benchmark-src/bindings/python/BUILD +0 -3
  322. package/build/_deps/benchmark-src/bindings/python/build_defs.bzl +0 -25
  323. package/build/_deps/benchmark-src/bindings/python/google_benchmark/BUILD +0 -40
  324. package/build/_deps/benchmark-src/bindings/python/google_benchmark/__init__.py +0 -162
  325. package/build/_deps/benchmark-src/bindings/python/google_benchmark/benchmark.cc +0 -184
  326. package/build/_deps/benchmark-src/bindings/python/google_benchmark/example.py +0 -136
  327. package/build/_deps/benchmark-src/bindings/python/nanobind.BUILD +0 -17
  328. package/build/_deps/benchmark-src/bindings/python/python_headers.BUILD +0 -6
  329. package/build/_deps/benchmark-src/cmake/AddCXXCompilerFlag.cmake +0 -78
  330. package/build/_deps/benchmark-src/cmake/CXXFeatureCheck.cmake +0 -82
  331. package/build/_deps/benchmark-src/cmake/Config.cmake.in +0 -7
  332. package/build/_deps/benchmark-src/cmake/GetGitVersion.cmake +0 -58
  333. package/build/_deps/benchmark-src/cmake/GoogleTest.cmake +0 -58
  334. package/build/_deps/benchmark-src/cmake/GoogleTest.cmake.in +0 -59
  335. package/build/_deps/benchmark-src/cmake/benchmark.pc.in +0 -12
  336. package/build/_deps/benchmark-src/cmake/gnu_posix_regex.cpp +0 -12
  337. package/build/_deps/benchmark-src/cmake/llvm-toolchain.cmake +0 -8
  338. package/build/_deps/benchmark-src/cmake/posix_regex.cpp +0 -14
  339. package/build/_deps/benchmark-src/cmake/pthread_affinity.cpp +0 -16
  340. package/build/_deps/benchmark-src/cmake/split_list.cmake +0 -3
  341. package/build/_deps/benchmark-src/cmake/std_regex.cpp +0 -10
  342. package/build/_deps/benchmark-src/cmake/steady_clock.cpp +0 -7
  343. package/build/_deps/benchmark-src/cmake/thread_safety_attributes.cpp +0 -4
  344. package/build/_deps/benchmark-src/docs/AssemblyTests.md +0 -149
  345. package/build/_deps/benchmark-src/docs/_config.yml +0 -3
  346. package/build/_deps/benchmark-src/docs/assets/images/icon.png +0 -0
  347. package/build/_deps/benchmark-src/docs/assets/images/icon.xcf +0 -0
  348. package/build/_deps/benchmark-src/docs/assets/images/icon_black.png +0 -0
  349. package/build/_deps/benchmark-src/docs/assets/images/icon_black.xcf +0 -0
  350. package/build/_deps/benchmark-src/docs/dependencies.md +0 -13
  351. package/build/_deps/benchmark-src/docs/index.md +0 -12
  352. package/build/_deps/benchmark-src/docs/perf_counters.md +0 -35
  353. package/build/_deps/benchmark-src/docs/platform_specific_build_instructions.md +0 -48
  354. package/build/_deps/benchmark-src/docs/python_bindings.md +0 -34
  355. package/build/_deps/benchmark-src/docs/random_interleaving.md +0 -13
  356. package/build/_deps/benchmark-src/docs/reducing_variance.md +0 -100
  357. package/build/_deps/benchmark-src/docs/releasing.md +0 -41
  358. package/build/_deps/benchmark-src/docs/tools.md +0 -343
  359. package/build/_deps/benchmark-src/docs/user_guide.md +0 -1266
  360. package/build/_deps/benchmark-src/include/benchmark/benchmark.h +0 -1991
  361. package/build/_deps/benchmark-src/include/benchmark/export.h +0 -47
  362. package/build/_deps/benchmark-src/pyproject.toml +0 -50
  363. package/build/_deps/benchmark-src/setup.py +0 -113
  364. package/build/_deps/benchmark-src/src/CMakeLists.txt +0 -170
  365. package/build/_deps/benchmark-src/src/arraysize.h +0 -33
  366. package/build/_deps/benchmark-src/src/benchmark.cc +0 -779
  367. package/build/_deps/benchmark-src/src/benchmark_api_internal.cc +0 -118
  368. package/build/_deps/benchmark-src/src/benchmark_api_internal.h +0 -87
  369. package/build/_deps/benchmark-src/src/benchmark_main.cc +0 -18
  370. package/build/_deps/benchmark-src/src/benchmark_name.cc +0 -59
  371. package/build/_deps/benchmark-src/src/benchmark_register.cc +0 -520
  372. package/build/_deps/benchmark-src/src/benchmark_register.h +0 -109
  373. package/build/_deps/benchmark-src/src/benchmark_runner.cc +0 -497
  374. package/build/_deps/benchmark-src/src/benchmark_runner.h +0 -131
  375. package/build/_deps/benchmark-src/src/check.cc +0 -11
  376. package/build/_deps/benchmark-src/src/check.h +0 -106
  377. package/build/_deps/benchmark-src/src/colorprint.cc +0 -200
  378. package/build/_deps/benchmark-src/src/colorprint.h +0 -33
  379. package/build/_deps/benchmark-src/src/commandlineflags.cc +0 -298
  380. package/build/_deps/benchmark-src/src/commandlineflags.h +0 -133
  381. package/build/_deps/benchmark-src/src/complexity.cc +0 -244
  382. package/build/_deps/benchmark-src/src/complexity.h +0 -55
  383. package/build/_deps/benchmark-src/src/console_reporter.cc +0 -206
  384. package/build/_deps/benchmark-src/src/counter.cc +0 -80
  385. package/build/_deps/benchmark-src/src/counter.h +0 -32
  386. package/build/_deps/benchmark-src/src/csv_reporter.cc +0 -161
  387. package/build/_deps/benchmark-src/src/cycleclock.h +0 -230
  388. package/build/_deps/benchmark-src/src/internal_macros.h +0 -115
  389. package/build/_deps/benchmark-src/src/json_reporter.cc +0 -320
  390. package/build/_deps/benchmark-src/src/log.h +0 -88
  391. package/build/_deps/benchmark-src/src/mutex.h +0 -155
  392. package/build/_deps/benchmark-src/src/perf_counters.cc +0 -282
  393. package/build/_deps/benchmark-src/src/perf_counters.h +0 -200
  394. package/build/_deps/benchmark-src/src/re.h +0 -158
  395. package/build/_deps/benchmark-src/src/reporter.cc +0 -118
  396. package/build/_deps/benchmark-src/src/statistics.cc +0 -209
  397. package/build/_deps/benchmark-src/src/statistics.h +0 -44
  398. package/build/_deps/benchmark-src/src/string_util.cc +0 -254
  399. package/build/_deps/benchmark-src/src/string_util.h +0 -70
  400. package/build/_deps/benchmark-src/src/sysinfo.cc +0 -855
  401. package/build/_deps/benchmark-src/src/thread_manager.h +0 -63
  402. package/build/_deps/benchmark-src/src/thread_timer.h +0 -86
  403. package/build/_deps/benchmark-src/src/timers.cc +0 -272
  404. package/build/_deps/benchmark-src/src/timers.h +0 -48
  405. package/build/_deps/benchmark-src/test/AssemblyTests.cmake +0 -67
  406. package/build/_deps/benchmark-src/test/BUILD +0 -127
  407. package/build/_deps/benchmark-src/test/CMakeLists.txt +0 -309
  408. package/build/_deps/benchmark-src/test/args_product_test.cc +0 -77
  409. package/build/_deps/benchmark-src/test/basic_test.cc +0 -180
  410. package/build/_deps/benchmark-src/test/benchmark_gtest.cc +0 -169
  411. package/build/_deps/benchmark-src/test/benchmark_min_time_flag_iters_test.cc +0 -66
  412. package/build/_deps/benchmark-src/test/benchmark_min_time_flag_time_test.cc +0 -90
  413. package/build/_deps/benchmark-src/test/benchmark_name_gtest.cc +0 -82
  414. package/build/_deps/benchmark-src/test/benchmark_random_interleaving_gtest.cc +0 -126
  415. package/build/_deps/benchmark-src/test/benchmark_setup_teardown_test.cc +0 -157
  416. package/build/_deps/benchmark-src/test/benchmark_test.cc +0 -274
  417. package/build/_deps/benchmark-src/test/clobber_memory_assembly_test.cc +0 -64
  418. package/build/_deps/benchmark-src/test/commandlineflags_gtest.cc +0 -228
  419. package/build/_deps/benchmark-src/test/complexity_test.cc +0 -228
  420. package/build/_deps/benchmark-src/test/cxx03_test.cc +0 -62
  421. package/build/_deps/benchmark-src/test/diagnostics_test.cc +0 -91
  422. package/build/_deps/benchmark-src/test/display_aggregates_only_test.cc +0 -45
  423. package/build/_deps/benchmark-src/test/donotoptimize_assembly_test.cc +0 -201
  424. package/build/_deps/benchmark-src/test/donotoptimize_test.cc +0 -69
  425. package/build/_deps/benchmark-src/test/filter_test.cc +0 -117
  426. package/build/_deps/benchmark-src/test/fixture_test.cc +0 -51
  427. package/build/_deps/benchmark-src/test/internal_threading_test.cc +0 -185
  428. package/build/_deps/benchmark-src/test/link_main_test.cc +0 -9
  429. package/build/_deps/benchmark-src/test/map_test.cc +0 -59
  430. package/build/_deps/benchmark-src/test/memory_manager_test.cc +0 -47
  431. package/build/_deps/benchmark-src/test/min_time_parse_gtest.cc +0 -30
  432. package/build/_deps/benchmark-src/test/multiple_ranges_test.cc +0 -96
  433. package/build/_deps/benchmark-src/test/options_test.cc +0 -77
  434. package/build/_deps/benchmark-src/test/output_test.h +0 -211
  435. package/build/_deps/benchmark-src/test/output_test_helper.cc +0 -519
  436. package/build/_deps/benchmark-src/test/perf_counters_gtest.cc +0 -307
  437. package/build/_deps/benchmark-src/test/perf_counters_test.cc +0 -92
  438. package/build/_deps/benchmark-src/test/register_benchmark_test.cc +0 -196
  439. package/build/_deps/benchmark-src/test/repetitions_test.cc +0 -214
  440. package/build/_deps/benchmark-src/test/report_aggregates_only_test.cc +0 -41
  441. package/build/_deps/benchmark-src/test/reporter_output_test.cc +0 -1130
  442. package/build/_deps/benchmark-src/test/skip_with_error_test.cc +0 -199
  443. package/build/_deps/benchmark-src/test/spec_arg_test.cc +0 -105
  444. package/build/_deps/benchmark-src/test/spec_arg_verbosity_test.cc +0 -43
  445. package/build/_deps/benchmark-src/test/state_assembly_test.cc +0 -68
  446. package/build/_deps/benchmark-src/test/statistics_gtest.cc +0 -35
  447. package/build/_deps/benchmark-src/test/string_util_gtest.cc +0 -199
  448. package/build/_deps/benchmark-src/test/templated_fixture_test.cc +0 -28
  449. package/build/_deps/benchmark-src/test/time_unit_gtest.cc +0 -37
  450. package/build/_deps/benchmark-src/test/user_counters_tabular_test.cc +0 -558
  451. package/build/_deps/benchmark-src/test/user_counters_test.cc +0 -561
  452. package/build/_deps/benchmark-src/test/user_counters_thousands_test.cc +0 -186
  453. package/build/_deps/benchmark-src/tools/BUILD.bazel +0 -19
  454. package/build/_deps/benchmark-src/tools/compare.py +0 -432
  455. package/build/_deps/benchmark-src/tools/gbench/Inputs/test1_run1.json +0 -127
  456. package/build/_deps/benchmark-src/tools/gbench/Inputs/test1_run2.json +0 -127
  457. package/build/_deps/benchmark-src/tools/gbench/Inputs/test2_run.json +0 -81
  458. package/build/_deps/benchmark-src/tools/gbench/Inputs/test3_run0.json +0 -65
  459. package/build/_deps/benchmark-src/tools/gbench/Inputs/test3_run1.json +0 -65
  460. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run.json +0 -96
  461. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run0.json +0 -21
  462. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run1.json +0 -21
  463. package/build/_deps/benchmark-src/tools/gbench/__init__.py +0 -8
  464. package/build/_deps/benchmark-src/tools/gbench/report.py +0 -1201
  465. package/build/_deps/benchmark-src/tools/gbench/util.py +0 -203
  466. package/build/_deps/benchmark-src/tools/libpfm.BUILD.bazel +0 -22
  467. package/build/_deps/benchmark-src/tools/requirements.txt +0 -2
  468. package/build/_deps/benchmark-src/tools/strip_asm.py +0 -151
  469. package/build/_deps/benchmark-subbuild/CMakeCache.txt +0 -133
  470. package/build/_deps/benchmark-subbuild/CMakeFiles/4.0.3/CMakeSystem.cmake +0 -15
  471. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeConfigureLog.yaml +0 -11
  472. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  473. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeRuleHashes.txt +0 -11
  474. package/build/_deps/benchmark-subbuild/CMakeFiles/InstallScripts.json +0 -7
  475. package/build/_deps/benchmark-subbuild/CMakeFiles/Makefile.cmake +0 -52
  476. package/build/_deps/benchmark-subbuild/CMakeFiles/Makefile2 +0 -122
  477. package/build/_deps/benchmark-subbuild/CMakeFiles/TargetDirectories.txt +0 -3
  478. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate-complete +0 -0
  479. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/DependInfo.cmake +0 -22
  480. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/Labels.json +0 -46
  481. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/Labels.txt +0 -14
  482. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/build.make +0 -162
  483. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/cmake_clean.cmake +0 -17
  484. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/compiler_depend.make +0 -2
  485. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/compiler_depend.ts +0 -2
  486. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/progress.make +0 -10
  487. package/build/_deps/benchmark-subbuild/CMakeFiles/cmake.check_cache +0 -1
  488. package/build/_deps/benchmark-subbuild/CMakeFiles/progress.marks +0 -1
  489. package/build/_deps/benchmark-subbuild/CMakeLists.txt +0 -42
  490. package/build/_deps/benchmark-subbuild/Makefile +0 -162
  491. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-build +0 -0
  492. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-configure +0 -0
  493. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-done +0 -0
  494. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-download +0 -0
  495. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-gitclone-lastrun.txt +0 -15
  496. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-gitinfo.txt +0 -15
  497. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-install +0 -0
  498. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-mkdir +0 -0
  499. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-patch +0 -0
  500. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-patch-info.txt +0 -6
  501. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-test +0 -0
  502. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-update-info.txt +0 -7
  503. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-cfgcmd.txt +0 -1
  504. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-gitclone.cmake +0 -87
  505. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-gitupdate.cmake +0 -317
  506. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-mkdirs.cmake +0 -27
  507. package/build/_deps/benchmark-subbuild/cmake_install.cmake +0 -56
  508. package/build/bin/avl-rb-range-search-benchmark +0 -0
  509. package/build/bin/avl-tree-benchmark +0 -0
  510. package/build/bin/deque-benchmark +0 -0
  511. package/build/bin/doubly-linked-list-benchmark +0 -0
  512. package/build/bin/hash-map-benchmark +0 -0
  513. package/build/bin/heap-benchmark +0 -0
  514. package/build/bin/priority-queue-benchmark +0 -0
  515. package/build/bin/queue-benchmark +0 -0
  516. package/build/bin/red-black-tree-benchmark +0 -0
  517. package/build/bin/singly-linked-list-benchmark +0 -0
  518. package/build/bin/stack-benchmark +0 -0
  519. package/build/bin/tree-map-benchmark +0 -0
  520. package/build/bin/tree-multi-map-benchmark +0 -0
  521. package/build/bin/tree-multi-set-benchmark +0 -0
  522. package/build/bin/tree-set-benchmark +0 -0
  523. package/build/cmake_install.cmake +0 -66
  524. package/dist/cjs/index.cjs.map +0 -1
  525. package/dist/cjs-legacy/index.cjs.map +0 -1
  526. package/dist/esm/index.mjs.map +0 -1
  527. package/dist/esm-legacy/index.mjs.map +0 -1
  528. package/dist/umd/data-structure-typed.js.map +0 -1
  529. package/dist/umd/data-structure-typed.min.js.map +0 -1
  530. package/eslint.config.mjs +0 -73
  531. package/test/config.ts +0 -4
  532. package/test/integration/all-in-one.test.ts +0 -110
  533. package/test/integration/avl-tree.test.ts +0 -127
  534. package/test/integration/bst.test.ts +0 -385
  535. package/test/integration/compile.test.mjs +0 -159
  536. package/test/integration/compile.test.ts +0 -176
  537. package/test/integration/heap.test.js +0 -21
  538. package/test/integration/index.html +0 -462
  539. package/test/performance/benchmark-runner-enhanced.mjs +0 -818
  540. package/test/performance/cmake-benchmark-runner.mjs +0 -234
  541. package/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp +0 -112
  542. package/test/performance/data-structures/binary-tree/avl-rb-range-search.test.mjs +0 -51
  543. package/test/performance/data-structures/binary-tree/avl-tree.test.cpp +0 -181
  544. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +0 -138
  545. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.mjs +0 -85
  546. package/test/performance/data-structures/binary-tree/binary-tree.test.mjs +0 -100
  547. package/test/performance/data-structures/binary-tree/bst.test.mjs +0 -61
  548. package/test/performance/data-structures/binary-tree/red-black-tree-cjs.test.mjs +0 -259
  549. package/test/performance/data-structures/binary-tree/red-black-tree.test.cpp +0 -213
  550. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +0 -275
  551. package/test/performance/data-structures/binary-tree/tree-map.test.cpp +0 -129
  552. package/test/performance/data-structures/binary-tree/tree-map.test.mjs +0 -171
  553. package/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp +0 -205
  554. package/test/performance/data-structures/binary-tree/tree-multi-map.test.mjs +0 -106
  555. package/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp +0 -217
  556. package/test/performance/data-structures/binary-tree/tree-multi-set.test.mjs +0 -91
  557. package/test/performance/data-structures/binary-tree/tree-set.test.cpp +0 -127
  558. package/test/performance/data-structures/binary-tree/tree-set.test.mjs +0 -174
  559. package/test/performance/data-structures/comparison/comparison.test.mjs +0 -99
  560. package/test/performance/data-structures/graph/directed-graph.test.mjs +0 -38
  561. package/test/performance/data-structures/hash/hash-map.test.cpp +0 -183
  562. package/test/performance/data-structures/hash/hash-map.test.mjs +0 -187
  563. package/test/performance/data-structures/heap/heap.test.cpp +0 -61
  564. package/test/performance/data-structures/heap/heap.test.mjs +0 -31
  565. package/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp +0 -84
  566. package/test/performance/data-structures/linked-list/doubly-linked-list.test.mjs +0 -125
  567. package/test/performance/data-structures/linked-list/singly-linked-list.test.cpp +0 -77
  568. package/test/performance/data-structures/linked-list/singly-linked-list.test.mjs +0 -84
  569. package/test/performance/data-structures/priority-queue/max-priority-queue.test.mjs +0 -40
  570. package/test/performance/data-structures/priority-queue/priority-queue.test.cpp +0 -59
  571. package/test/performance/data-structures/priority-queue/priority-queue.test.mjs +0 -64
  572. package/test/performance/data-structures/queue/deque.test.cpp +0 -119
  573. package/test/performance/data-structures/queue/deque.test.mjs +0 -144
  574. package/test/performance/data-structures/queue/queue.test.cpp +0 -59
  575. package/test/performance/data-structures/queue/queue.test.mjs +0 -77
  576. package/test/performance/data-structures/stack/stack.test.cpp +0 -40
  577. package/test/performance/data-structures/stack/stack.test.mjs +0 -69
  578. package/test/performance/data-structures/trie/trie.test.mjs +0 -43
  579. package/test/performance/reportor-enhanced.mjs +0 -1027
  580. package/test/performance/runner-config.json +0 -51
  581. package/test/types/index.ts +0 -1
  582. package/test/types/utils/big-o.ts +0 -1
  583. package/test/types/utils/index.ts +0 -2
  584. package/test/types/utils/json2html.ts +0 -5
  585. package/test/unit/data-structures/base/iterable-element-base.coverage.test.ts +0 -106
  586. package/test/unit/data-structures/base/iterable-element-base.more-branches.coverage.test.ts +0 -61
  587. package/test/unit/data-structures/base/linear-base.array.coverage.test.ts +0 -168
  588. package/test/unit/data-structures/base/linear-base.concat-else.coverage.test.ts +0 -82
  589. package/test/unit/data-structures/base/linear-base.coverage.test.ts +0 -72
  590. package/test/unit/data-structures/base/linear-base.more-branches.coverage.test.ts +0 -414
  591. package/test/unit/data-structures/binary-tree/avl-tree-node.familyPosition-root-left.coverage.test.ts +0 -17
  592. package/test/unit/data-structures/binary-tree/avl-tree.more-branches-2.coverage.test.ts +0 -99
  593. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -729
  594. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +0 -345
  595. package/test/unit/data-structures/binary-tree/binary-indexed-tree.more-branches.coverage.test.ts +0 -18
  596. package/test/unit/data-structures/binary-tree/binary-tree.more-branches.coverage.test.ts +0 -56
  597. package/test/unit/data-structures/binary-tree/binary-tree.remaining-branches.coverage.test.ts +0 -232
  598. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +0 -1912
  599. package/test/unit/data-structures/binary-tree/bst.bound-by-predicate.coverage.test.ts +0 -33
  600. package/test/unit/data-structures/binary-tree/bst.coverage.test.ts +0 -94
  601. package/test/unit/data-structures/binary-tree/bst.deletebykey.coverage.test.ts +0 -70
  602. package/test/unit/data-structures/binary-tree/bst.deletewhere.coverage.test.ts +0 -37
  603. package/test/unit/data-structures/binary-tree/bst.floor-lower-predicate.coverage.test.ts +0 -29
  604. package/test/unit/data-structures/binary-tree/bst.floor-setmany.coverage.test.ts +0 -72
  605. package/test/unit/data-structures/binary-tree/bst.getnode.range-ensure.coverage.test.ts +0 -22
  606. package/test/unit/data-structures/binary-tree/bst.misc-branches.coverage.test.ts +0 -100
  607. package/test/unit/data-structures/binary-tree/bst.more-branches-2.coverage.test.ts +0 -133
  608. package/test/unit/data-structures/binary-tree/bst.more-branches-3.coverage.test.ts +0 -45
  609. package/test/unit/data-structures/binary-tree/bst.more-branches-4.coverage.test.ts +0 -36
  610. package/test/unit/data-structures/binary-tree/bst.more-branches-5.coverage.test.ts +0 -40
  611. package/test/unit/data-structures/binary-tree/bst.more.coverage.test.ts +0 -39
  612. package/test/unit/data-structures/binary-tree/bst.node-family.coverage.test.ts +0 -29
  613. package/test/unit/data-structures/binary-tree/bst.range-pruning.coverage.test.ts +0 -43
  614. package/test/unit/data-structures/binary-tree/bst.search-fastpath.coverage.test.ts +0 -30
  615. package/test/unit/data-structures/binary-tree/bst.test.ts +0 -3472
  616. package/test/unit/data-structures/binary-tree/data/cost-of-living-by-country.ts +0 -259
  617. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -219
  618. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-corruption-repair.coverage.test.ts +0 -66
  619. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-max-update.coverage.test.ts +0 -18
  620. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-null.coverage.test.ts +0 -53
  621. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-stale-cache.coverage.test.ts +0 -25
  622. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-update.coverage.test.ts +0 -23
  623. package/test/unit/data-structures/binary-tree/red-black-tree.cache-delete.coverage.test.ts +0 -49
  624. package/test/unit/data-structures/binary-tree/red-black-tree.cache-edge.coverage.test.ts +0 -37
  625. package/test/unit/data-structures/binary-tree/red-black-tree.cache-stale-insert.coverage.test.ts +0 -39
  626. package/test/unit/data-structures/binary-tree/red-black-tree.coverage.test.ts +0 -334
  627. package/test/unit/data-structures/binary-tree/red-black-tree.delete-fixup.coverage.test.ts +0 -68
  628. package/test/unit/data-structures/binary-tree/red-black-tree.delete-successor.coverage.test.ts +0 -75
  629. package/test/unit/data-structures/binary-tree/red-black-tree.factories.coverage.test.ts +0 -26
  630. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-compare-update.coverage.test.ts +0 -74
  631. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-no-update.coverage.test.ts +0 -44
  632. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-nullish.coverage.test.ts +0 -61
  633. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-defined.coverage.test.ts +0 -35
  634. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-undefined.coverage.test.ts +0 -43
  635. package/test/unit/data-structures/binary-tree/red-black-tree.hint-more.coverage.test.ts +0 -99
  636. package/test/unit/data-structures/binary-tree/red-black-tree.hint.coverage.test.ts +0 -60
  637. package/test/unit/data-structures/binary-tree/red-black-tree.insert-cache-nullish.coverage.test.ts +0 -29
  638. package/test/unit/data-structures/binary-tree/red-black-tree.insert-header-parent-nullish.coverage.test.ts +0 -17
  639. package/test/unit/data-structures/binary-tree/red-black-tree.internal-walk.coverage.test.ts +0 -57
  640. package/test/unit/data-structures/binary-tree/red-black-tree.minmax-cache.test.ts +0 -65
  641. package/test/unit/data-structures/binary-tree/red-black-tree.misc-inputs.coverage.test.ts +0 -17
  642. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-2.coverage.test.ts +0 -121
  643. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-3.coverage.test.ts +0 -55
  644. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-4.coverage.test.ts +0 -44
  645. package/test/unit/data-structures/binary-tree/red-black-tree.predsucc.coverage.test.ts +0 -40
  646. package/test/unit/data-structures/binary-tree/red-black-tree.remaining-branches.coverage.test.ts +0 -123
  647. package/test/unit/data-structures/binary-tree/red-black-tree.set-inputs.coverage.test.ts +0 -64
  648. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-parent-cache.coverage.test.ts +0 -79
  649. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-remaining.coverage.test.ts +0 -44
  650. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-uncovered.coverage.test.ts +0 -74
  651. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +0 -936
  652. package/test/unit/data-structures/binary-tree/red-black-tree.update-branches.coverage.test.ts +0 -30
  653. package/test/unit/data-structures/binary-tree/segment-tree.more-branches.coverage.test.ts +0 -31
  654. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +0 -104
  655. package/test/unit/data-structures/binary-tree/tree-map.test.ts +0 -316
  656. package/test/unit/data-structures/binary-tree/tree-multi-map.coverage.test.ts +0 -245
  657. package/test/unit/data-structures/binary-tree/tree-multi-map.legacy.test.ts.skip +0 -1115
  658. package/test/unit/data-structures/binary-tree/tree-multi-map.more-branches-2.coverage.test.ts.skip +0 -59
  659. package/test/unit/data-structures/binary-tree/tree-multi-map.rfc.test.ts +0 -146
  660. package/test/unit/data-structures/binary-tree/tree-multi-map.simplified.test.ts +0 -482
  661. package/test/unit/data-structures/binary-tree/tree-multi-set.test.ts +0 -594
  662. package/test/unit/data-structures/binary-tree/tree-set.test.ts +0 -231
  663. package/test/unit/data-structures/graph/abstract-graph.more-branches-2.coverage.test.ts +0 -40
  664. package/test/unit/data-structures/graph/abstract-graph.more-branches-3.coverage.test.ts +0 -65
  665. package/test/unit/data-structures/graph/abstract-graph.more-branches-4.coverage.test.ts +0 -98
  666. package/test/unit/data-structures/graph/abstract-graph.more-branches-5.coverage.test.ts +0 -51
  667. package/test/unit/data-structures/graph/abstract-graph.more-branches.coverage.test.ts +0 -62
  668. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -117
  669. package/test/unit/data-structures/graph/directed-graph.more-branches-2.coverage.test.ts +0 -38
  670. package/test/unit/data-structures/graph/directed-graph.more-branches-3.coverage.test.ts +0 -25
  671. package/test/unit/data-structures/graph/directed-graph.more-branches.coverage.test.ts +0 -82
  672. package/test/unit/data-structures/graph/directed-graph.test.ts +0 -1185
  673. package/test/unit/data-structures/graph/map-graph.more-branches.coverage.test.ts +0 -22
  674. package/test/unit/data-structures/graph/map-graph.test.ts +0 -148
  675. package/test/unit/data-structures/graph/overall.test.ts +0 -49
  676. package/test/unit/data-structures/graph/salty-edges.json +0 -875
  677. package/test/unit/data-structures/graph/salty-vertexes.json +0 -200
  678. package/test/unit/data-structures/graph/undirected-graph.more-branches-2.coverage.test.ts +0 -35
  679. package/test/unit/data-structures/graph/undirected-graph.more-branches.coverage.test.ts +0 -87
  680. package/test/unit/data-structures/graph/undirected-graph.test.ts +0 -782
  681. package/test/unit/data-structures/hash/hash-map.more-branches.coverage.test.ts +0 -64
  682. package/test/unit/data-structures/hash/hash-map.test.ts +0 -1125
  683. package/test/unit/data-structures/hash/hash-map.toEntryFn-branch.coverage.test.ts +0 -9
  684. package/test/unit/data-structures/heap/heap.misc-branches.coverage.test.ts +0 -110
  685. package/test/unit/data-structures/heap/heap.remaining-branches.coverage.test.ts +0 -22
  686. package/test/unit/data-structures/heap/heap.test.ts +0 -760
  687. package/test/unit/data-structures/heap/max-heap.coverage.test.ts +0 -29
  688. package/test/unit/data-structures/heap/max-heap.test.ts +0 -98
  689. package/test/unit/data-structures/heap/min-heap.test.ts +0 -117
  690. package/test/unit/data-structures/linked-list/doubly-linked-list.more-branches.coverage.test.ts +0 -72
  691. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -1150
  692. package/test/unit/data-structures/linked-list/linked-list.test.ts +0 -8
  693. package/test/unit/data-structures/linked-list/linked-list.unshiftMany-else.coverage.test.ts +0 -15
  694. package/test/unit/data-structures/linked-list/singly-linked-list.coverage.test.ts +0 -221
  695. package/test/unit/data-structures/linked-list/singly-linked-list.more-branches.coverage.test.ts +0 -86
  696. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -836
  697. package/test/unit/data-structures/linked-list/skip-linked-list.more-branches.coverage.test.ts +0 -31
  698. package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +0 -13
  699. package/test/unit/data-structures/linked-list/skip-list.test.ts +0 -86
  700. package/test/unit/data-structures/matrix/matrix.more-branches.coverage.test.ts +0 -81
  701. package/test/unit/data-structures/matrix/matrix.pivotElement-nullish.coverage.test.ts +0 -28
  702. package/test/unit/data-structures/matrix/matrix.test.ts +0 -377
  703. package/test/unit/data-structures/matrix/navigator.test.ts +0 -244
  704. package/test/unit/data-structures/priority-queue/max-priority-queue.more-branches.coverage.test.ts +0 -10
  705. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +0 -160
  706. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +0 -78
  707. package/test/unit/data-structures/priority-queue/priority-queue.coverage.test.ts +0 -21
  708. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -101
  709. package/test/unit/data-structures/queue/deque.coverage.test.ts +0 -173
  710. package/test/unit/data-structures/queue/deque.more-branches-2.coverage.test.ts +0 -39
  711. package/test/unit/data-structures/queue/deque.more-branches-3.coverage.test.ts +0 -9
  712. package/test/unit/data-structures/queue/deque.more-branches.coverage.test.ts +0 -95
  713. package/test/unit/data-structures/queue/deque.test.ts +0 -936
  714. package/test/unit/data-structures/queue/queue.coverage.test.ts +0 -138
  715. package/test/unit/data-structures/queue/queue.more-branches-2.coverage.test.ts +0 -27
  716. package/test/unit/data-structures/queue/queue.test.ts +0 -703
  717. package/test/unit/data-structures/stack/stack.coverage.test.ts +0 -112
  718. package/test/unit/data-structures/stack/stack.test.ts +0 -438
  719. package/test/unit/data-structures/tree/tree.more-branches.coverage.test.ts +0 -9
  720. package/test/unit/data-structures/tree/tree.test.ts +0 -58
  721. package/test/unit/data-structures/trie/trie.more-branches-2.coverage.test.ts +0 -51
  722. package/test/unit/data-structures/trie/trie.test.ts +0 -1181
  723. package/test/unit/unrestricted-interconversion.test.ts +0 -299
  724. package/test/unit/utils/utils.test.ts +0 -174
  725. package/test/utils/array.ts +0 -5517
  726. package/test/utils/big-o.ts +0 -228
  727. package/test/utils/console.ts +0 -31
  728. package/test/utils/index.ts +0 -8
  729. package/test/utils/is.ts +0 -56
  730. package/test/utils/json2html.ts +0 -164
  731. package/test/utils/number.ts +0 -13
  732. package/test/utils/patch.ts +0 -33
  733. package/test/utils/perf.mjs +0 -34
  734. package/test/utils/performanc.ts +0 -7
  735. package/test/utils/string.ts +0 -49
  736. package/tsconfig.types.json +0 -15
  737. package/tsup.config.js +0 -63
  738. package/tsup.umd.config.js +0 -29
@@ -1,1115 +0,0 @@
1
- import { IBinaryTree, Range, RedBlackTreeNode, TreeMultiMap, TreeMultiMapNode } from '../../../../src';
2
- import { getRandomInt } from '../../../utils';
3
- import { isDebugTest } from '../../../config';
4
- import { costOfLiving } from './data/cost-of-living-by-country';
5
-
6
- const isDebug = isDebugTest;
7
- // const isDebug = true;
8
-
9
- describe('TreeMultiMap 1', () => {
10
- let tmm: TreeMultiMap<number>;
11
-
12
- beforeEach(() => {
13
- tmm = new TreeMultiMap<number>();
14
- });
15
-
16
- it('Should add and delete values', () => {
17
- tmm.set(3, 3);
18
- tmm.set(3, 33);
19
- tmm.set(3, 333);
20
- expect(tmm.get(3)).toEqual([3, 33, 333]);
21
- tmm.deleteValue(3, 33);
22
- expect(tmm.get(3)).toEqual([3, 333]);
23
- tmm.deleteValue(3, 3);
24
- expect(tmm.get(3)).toEqual([333]);
25
- tmm.deleteValue(3, 333);
26
- expect(tmm.get(3)).toBe(undefined);
27
- tmm.set(3, 3);
28
- tmm.set([3, [3333, 33333]]);
29
- expect(tmm.get(3)).toEqual([3, 3333, 33333]);
30
- });
31
-
32
- describe('add and getNode', () => {
33
- it('should add and find a node in the tmm', () => {
34
- tmm.set(10);
35
- tmm.set(20);
36
- tmm.set(5);
37
-
38
- expect(tmm.getNode(10)).toBeInstanceOf(RedBlackTreeNode);
39
- expect(tmm.getNode(20)).toBeInstanceOf(RedBlackTreeNode);
40
- expect(tmm.getNode(5)).toBeInstanceOf(RedBlackTreeNode);
41
- expect(tmm.getNode(15)).toBe(undefined);
42
- });
43
-
44
- it('should add and find nodes with negative keys', () => {
45
- tmm.set(-10);
46
- tmm.set(-20);
47
-
48
- expect(tmm.getNode(-10)).toBeInstanceOf(RedBlackTreeNode);
49
- expect(tmm.getNode(-20)).toBeInstanceOf(RedBlackTreeNode);
50
- });
51
- });
52
-
53
- describe('deleteNode', () => {
54
- it('should delete a node from the tmm', () => {
55
- tmm.set(10);
56
- tmm.set(20);
57
- tmm.set(5);
58
- tmm.delete(20);
59
-
60
- expect(tmm.getNode(20)).toBe(undefined);
61
- });
62
-
63
- it('should handle deleting a non-existent node', () => {
64
- tmm.set(10);
65
- tmm.set(20);
66
- tmm.set(5);
67
- tmm.delete(15);
68
-
69
- expect(tmm.getNode(15)).toBe(undefined);
70
- });
71
-
72
- it('should getNode performance O(log n)', () => {
73
- for (let i = 0; i < 10; i++) tmm.set(i);
74
- tmm.getNode(6);
75
- });
76
- });
77
-
78
- describe('minimum', () => {
79
- it('should find the minimum node in the tmm', () => {
80
- tmm.set(10);
81
- tmm.set(20);
82
- tmm.set(5);
83
- tmm.set(15);
84
- tmm.set(3);
85
-
86
- const minNode = tmm.getLeftMost(node => node, tmm.root);
87
- expect(minNode?.key).toBe(3);
88
- });
89
-
90
- it('should handle an empty tmm', () => {
91
- const minNode = tmm.getLeftMost(node => node, tmm.root);
92
- expect(minNode).toBe(undefined);
93
- });
94
- });
95
-
96
- describe('getRightMost', () => {
97
- it('should find the getRightMost node in the tmm', () => {
98
- tmm.set(10);
99
- tmm.set(20);
100
- tmm.set(5);
101
- tmm.set(15);
102
- tmm.set(25);
103
-
104
- const maxNode = tmm.getRightMost(node => node, tmm.root);
105
- expect(maxNode?.key).toBe(25);
106
- });
107
-
108
- it('should handle an empty tmm', () => {
109
- const maxNode = tmm.getRightMost(node => node, tmm.root);
110
- expect(maxNode).toBe(undefined);
111
- });
112
- });
113
-
114
- describe('getSuccessor', () => {
115
- it('should find the getSuccessor of a node', () => {
116
- tmm.set(10);
117
- tmm.set(20);
118
- tmm.set(5);
119
- tmm.set(15);
120
- tmm.set(25);
121
-
122
- const node = tmm.getNode(15);
123
- const successorNode = tmm.getSuccessor(node!);
124
-
125
- expect(successorNode?.key).toBe(20);
126
- });
127
-
128
- it('should handle a node with no getSuccessor', () => {
129
- tmm.set(10);
130
- tmm.set(5);
131
-
132
- const node = tmm.getNode(10);
133
- const successorNode = tmm.getSuccessor(node!);
134
- // TODO not sure if it should be undefined or tmm.NIL
135
- expect(successorNode).toBe(undefined);
136
- });
137
- });
138
-
139
- describe('getPredecessor', () => {
140
- it('should find the getPredecessor of a node', () => {
141
- tmm.set(10);
142
- tmm.set(20);
143
- tmm.set(5);
144
- tmm.set(15);
145
- tmm.set(25);
146
-
147
- const node = tmm.getNode(20);
148
- const predecessorNode = tmm.getPredecessor(node!);
149
-
150
- expect(predecessorNode?.key).toBe(15);
151
- });
152
-
153
- it('should handle a node with no getPredecessor', () => {
154
- tmm.set(10);
155
- tmm.set(20);
156
-
157
- const node = tmm.getNode(20);
158
- const predecessorNode = tmm.getPredecessor(node!);
159
- // TODO not sure if it should be tmm.NIL or something else.
160
- expect(predecessorNode).toBe(tmm.getNode(20));
161
- });
162
- });
163
-
164
- it('should the clone method', () => {
165
- function checkTreeStructure(tmm: TreeMultiMap<string, number>) {
166
- expect(tmm.size).toBe(4);
167
- expect(tmm.root?.key).toBe('2');
168
- expect(tmm.root?.left?.key).toBe('1');
169
- expect(tmm.root?.left?.left?.key).toBe(NaN);
170
- expect(tmm.root?.left?.right?.key).toBe(NaN);
171
- expect(tmm.root?.right?.key).toBe('4');
172
- expect(tmm.root?.right?.left?.key).toBe(NaN);
173
- expect(tmm.root?.right?.right?.key).toBe('5');
174
- }
175
-
176
- const tmm = new TreeMultiMap<string, number>();
177
- tmm.setMany([
178
- ['2', 2],
179
- ['4', 4],
180
- ['5', 5],
181
- ['3', 3],
182
- ['1', 1]
183
- ]);
184
- expect(tmm.size).toBe(5);
185
- expect(tmm.root?.key).toBe('2');
186
- expect(tmm.root?.left?.key).toBe('1');
187
- expect(tmm.root?.left?.left?.key).toBe(NaN);
188
- expect(tmm.root?.left?.right?.key).toBe(NaN);
189
- expect(tmm.root?.right?.key).toBe('4');
190
- expect(tmm.root?.right?.left?.key).toBe('3');
191
- expect(tmm.root?.right?.right?.key).toBe('5');
192
- tmm.delete('3');
193
- checkTreeStructure(tmm);
194
- const cloned = tmm.clone();
195
- checkTreeStructure(cloned);
196
- cloned.delete('1');
197
- expect(tmm.size).toBe(4);
198
- expect(cloned.size).toBe(3);
199
- });
200
-
201
- it('should add value', () => {
202
- const tmm = new TreeMultiMap<number, string>([4, 5, [1, ['1']], 2, 3]);
203
- expect(tmm.get(1)).toEqual(['1']);
204
- expect(tmm.getNode(1)?.value).toEqual(['1']);
205
- tmm.set(1, 'a');
206
- expect(tmm.get(1)).toEqual(['1', 'a']);
207
- tmm.set([1, ['b']]);
208
- expect(tmm.getNode(1)?.value).toEqual(['1', 'a', 'b']);
209
- expect(tmm.get(1)).toEqual(['1', 'a', 'b']);
210
- const tmmMapped = new TreeMultiMap<number>([4, 5, [1, ['1']], 2, 3]);
211
- expect(tmmMapped.get(1)).toEqual(['1']);
212
- expect(tmmMapped.getNode(1)?.value).toEqual(['1']);
213
- tmmMapped.set(1, 'a');
214
- expect(tmmMapped.get(1)).toEqual(['1', 'a']);
215
- tmmMapped.set([1, ['b']]);
216
- expect(tmmMapped.getNode(1)?.value).toEqual(['1', 'a', 'b']);
217
- expect(tmmMapped.get(1)).toEqual(['1', 'a', 'b']);
218
- });
219
- });
220
-
221
- describe('TreeMultiMap 2', () => {
222
- let tmm: TreeMultiMap<number>;
223
-
224
- beforeEach(() => {
225
- tmm = new TreeMultiMap<number>();
226
- });
227
-
228
- it('should add nodes into the tmm', () => {
229
- tmm.set(10);
230
- expect(tmm.getNode(10)).toBeDefined();
231
- tmm.set(20);
232
- expect(tmm.getNode(20)).toBeDefined();
233
- tmm.set(5);
234
- expect(tmm.getNode(5)).toBeDefined();
235
- });
236
-
237
- it('should delete nodes from the tmm', () => {
238
- tmm.set(10);
239
- tmm.set(20);
240
- tmm.set(5);
241
- tmm.delete(20);
242
- expect(tmm.getNode(20)).toBe(undefined);
243
- });
244
-
245
- it('should get the successor of a node', () => {
246
- tmm.set(10);
247
- tmm.set(20);
248
- const node = tmm.getNode(10);
249
- const successor = tmm.getSuccessor(node!);
250
- expect(successor?.key).toBe(20);
251
- });
252
-
253
- it('should get the predecessor of a node', () => {
254
- tmm.set(10);
255
- tmm.set(20);
256
- const node = tmm.getNode(20);
257
- const predecessor = tmm.getPredecessor(node!);
258
- expect(predecessor?.key).toBe(20);
259
- });
260
-
261
- it('should rotate nodes to the left', () => {
262
- tmm.set(10);
263
- tmm.set(20);
264
- tmm.set(5);
265
- const node = tmm.getNode(10);
266
- tmm.set(15);
267
- // Verify that rotation has occurred
268
- expect(node?.left?.key).toBe(5);
269
- expect(node?.right?.key).toBe(20);
270
- });
271
-
272
- it('should rotate nodes to the right', () => {
273
- tmm.set(10);
274
- tmm.set(20);
275
- tmm.set(5);
276
- const node = tmm.getNode(20);
277
- tmm.set(25);
278
- // Verify that rotation has occurred
279
- expect(node?.left?.key).toBeNaN();
280
- expect(node?.right?.key).toBe(25);
281
- });
282
-
283
- it('should all node attributes fully conform to the red-black tmm standards.', () => {
284
- tmm.set(10);
285
- tmm.set(20);
286
- tmm.set(5);
287
- tmm.set(15);
288
- tmm.set(21);
289
- tmm.set(6);
290
- tmm.set(2);
291
-
292
- let node10F = tmm.getNode(10);
293
- let node20F = tmm.getNode(20);
294
- let node5F = tmm.getNode(5);
295
- let node15F = tmm.getNode(15);
296
- let node21F = tmm.getNode(21);
297
- let node6F = tmm.getNode(6);
298
- let node2F = tmm.getNode(2);
299
- expect(node10F?.key).toBe(10);
300
- expect(node10F?.color).toBe('BLACK');
301
- expect(node10F?.left).toBe(node5F);
302
- expect(node10F?.right).toBe(node20F);
303
- expect(node10F?.parent).toBe(undefined);
304
- expect(node20F?.key).toBe(20);
305
- expect(node20F?.color).toBe('BLACK');
306
- expect(node20F?.left).toBe(node15F);
307
- expect(node20F?.right).toBe(node21F);
308
- expect(node20F?.parent).toBe(node10F);
309
- expect(node5F?.key).toBe(5);
310
- expect(node5F?.color).toBe('BLACK');
311
- expect(node5F?.left).toBe(node2F);
312
- expect(node5F?.right).toBe(node6F);
313
- expect(node5F?.parent).toBe(node10F);
314
- expect(node15F?.key).toBe(15);
315
- expect(node15F?.color).toBe('RED');
316
- expect(node15F?.left).toBe(tmm.NIL);
317
- expect(node15F?.right).toBe(tmm.NIL);
318
- expect(node15F?.parent).toBe(node20F);
319
- expect(node21F?.key).toBe(21);
320
- expect(node21F?.color).toBe('RED');
321
- expect(node21F?.left).toBe(tmm.NIL);
322
- expect(node21F?.right).toBe(tmm.NIL);
323
- expect(node21F?.parent).toBe(node20F);
324
- expect(node6F?.key).toBe(6);
325
- expect(node6F?.color).toBe('RED');
326
- expect(node6F?.left).toBe(tmm.NIL);
327
- expect(node6F?.right).toBe(tmm.NIL);
328
- expect(node6F?.parent).toBe(node5F);
329
- expect(node2F?.key).toBe(2);
330
- expect(node2F?.color).toBe('RED');
331
- expect(node2F?.left).toBe(tmm.NIL);
332
- expect(node2F?.right).toBe(tmm.NIL);
333
- expect(node2F?.parent).toBe(node5F);
334
- expect(node15F?.key).toBe(15);
335
- expect(node15F?.color).toBe('RED');
336
- expect(node15F?.left).toBe(tmm.NIL);
337
- expect(node15F?.right).toBe(tmm.NIL);
338
- expect(node15F?.parent).toBe(node20F);
339
- tmm.delete(5);
340
- node10F = tmm.getNode(10);
341
- node20F = tmm.getNode(20);
342
- node5F = tmm.getNode(5);
343
- node15F = tmm.getNode(15);
344
- node21F = tmm.getNode(21);
345
- node6F = tmm.getNode(6);
346
- node2F = tmm.getNode(2);
347
- expect(node10F?.key).toBe(10);
348
- expect(node10F?.color).toBe('BLACK');
349
- expect(node10F?.left).toBe(node6F);
350
- expect(node10F?.right).toBe(node20F);
351
- expect(node10F?.parent).toBe(undefined);
352
- expect(node20F?.key).toBe(20);
353
- expect(node20F?.color).toBe('BLACK');
354
- expect(node20F?.left).toBe(node15F);
355
- expect(node20F?.right).toBe(node21F);
356
- expect(node20F?.parent).toBe(node10F);
357
- expect(node5F).toBe(undefined);
358
- expect(node15F?.key).toBe(15);
359
- expect(node15F?.color).toBe('RED');
360
- expect(node15F?.left).toBe(tmm.NIL);
361
- expect(node15F?.right).toBe(tmm.NIL);
362
- expect(node15F?.parent).toBe(node20F);
363
- expect(node21F?.key).toBe(21);
364
- expect(node21F?.color).toBe('RED');
365
- expect(node21F?.left).toBe(tmm.NIL);
366
- expect(node21F?.right).toBe(tmm.NIL);
367
- expect(node21F?.parent).toBe(node20F);
368
- expect(node6F?.key).toBe(6);
369
- expect(node6F?.color).toBe('BLACK');
370
- expect(node6F?.left).toBe(node2F);
371
- expect(node6F?.right).toBe(tmm.NIL);
372
- expect(node6F?.parent).toBe(node10F);
373
- expect(node2F?.key).toBe(2);
374
- expect(node2F?.color).toBe('RED');
375
- expect(node2F?.left).toBe(tmm.NIL);
376
- expect(node2F?.right).toBe(tmm.NIL);
377
- expect(node2F?.parent).toBe(node6F);
378
- expect(node15F?.key).toBe(15);
379
- expect(node15F?.color).toBe('RED');
380
- expect(node15F?.left).toBe(tmm.NIL);
381
- expect(node15F?.right).toBe(tmm.NIL);
382
- expect(node15F?.parent).toBe(node20F);
383
- tmm.delete(20);
384
- node10F = tmm.getNode(10);
385
- node20F = tmm.getNode(20);
386
- node5F = tmm.getNode(5);
387
- node15F = tmm.getNode(15);
388
- node21F = tmm.getNode(21);
389
- node6F = tmm.getNode(6);
390
- node2F = tmm.getNode(2);
391
- expect(node10F?.key).toBe(10);
392
- expect(node10F?.color).toBe('BLACK');
393
- expect(node10F?.left).toBe(node6F);
394
- expect(node10F?.right).toBe(node21F);
395
- expect(node10F?.parent).toBe(undefined);
396
- expect(node20F).toBe(undefined);
397
- expect(node5F).toBe(undefined);
398
- expect(node15F?.key).toBe(15);
399
- expect(node15F?.color).toBe('RED');
400
- expect(node15F?.left).toBe(tmm.NIL);
401
- expect(node15F?.right).toBe(tmm.NIL);
402
- expect(node15F?.parent).toBe(node21F);
403
- expect(node21F?.key).toBe(21);
404
- expect(node21F?.color).toBe('BLACK');
405
- expect(node21F?.left).toBe(node15F);
406
- expect(node21F?.right).toBe(tmm.NIL);
407
- expect(node21F?.parent).toBe(node10F);
408
- expect(node6F?.key).toBe(6);
409
- expect(node6F?.color).toBe('BLACK');
410
- expect(node6F?.left).toBe(node2F);
411
- expect(node6F?.right).toBe(tmm.NIL);
412
- expect(node6F?.parent).toBe(node10F);
413
- expect(node2F?.key).toBe(2);
414
- expect(node2F?.color).toBe('RED');
415
- expect(node2F?.left).toBe(tmm.NIL);
416
- expect(node2F?.right).toBe(tmm.NIL);
417
- expect(node2F?.parent).toBe(node6F);
418
- expect(node15F?.key).toBe(15);
419
- expect(node15F?.color).toBe('RED');
420
- expect(node15F?.left).toBe(tmm.NIL);
421
- expect(node15F?.right).toBe(tmm.NIL);
422
- expect(node15F?.parent).toBe(node21F);
423
- });
424
-
425
- it('should fix the tmm after insertion', () => {
426
- tmm.set(1);
427
- tmm.set(2);
428
- tmm.set(5);
429
- tmm.set(15);
430
- const node15F = tmm.getNode(15);
431
- expect(node15F?.left).toBe(tmm.NIL);
432
- expect(node15F?.right).toBe(tmm.NIL);
433
- expect(node15F?.parent).toBe(tmm.getNode(5));
434
-
435
- tmm.set(25);
436
- tmm.set(10);
437
- tmm.set(8);
438
- tmm.set(28);
439
- tmm.set(111);
440
- tmm.set(12);
441
- tmm.delete(2);
442
- tmm.set(22);
443
- tmm.set(50);
444
- tmm.set(155);
445
- tmm.set(225);
446
- const node225F = tmm.getNode(225);
447
- expect(node225F?.left).toBe(tmm.NIL);
448
- expect(node225F?.right).toBe(tmm.NIL);
449
- expect(node225F?.parent?.key).toBe(155);
450
- tmm.set(7);
451
- if (isDebug) tmm.print();
452
-
453
- const node15S = tmm.getNode(15);
454
- expect(node15S?.left?.key).toBe(10);
455
- expect(node15S?.right?.key).toBe(25);
456
- expect(tmm.root).toBe(tmm.getNode(8));
457
- expect(node15S?.parent?.key).toBe(28);
458
- tmm.delete(15);
459
- expect(tmm.root?.key).toBe(8);
460
- expect(tmm.root?.parent).toBe(undefined);
461
-
462
- const node15T = tmm.getNode(15);
463
- expect(node15T).toBe(undefined);
464
-
465
- tmm.set(23);
466
- tmm.set(33);
467
- tmm.set(15);
468
-
469
- const nodeLM = tmm.getLeftMost();
470
- expect(nodeLM).toBe(1);
471
-
472
- const node50 = tmm.getNode(50);
473
- expect(node50?.key).toBe(50);
474
- expect(node50?.left?.key).toBe(33);
475
- expect(node50?.right).toBe(tmm.NIL);
476
- const node15Fo = tmm.getNode(15);
477
-
478
- expect(node15Fo?.key).toBe(15);
479
- expect(node15Fo?.left).toBe(tmm.NIL);
480
- const node225S = tmm.getNode(225);
481
- expect(node225S?.left).toBe(tmm.NIL);
482
- expect(node225S?.right).toBe(tmm.NIL);
483
- expect(node225S?.parent?.key).toBe(155);
484
- // TODO
485
- // expect(tmm.getNode(0)).toBe(undefined);
486
- tmm.set(2);
487
- tmm.set(3);
488
- tmm.set(4);
489
- tmm.set(6);
490
- tmm.set(9);
491
- tmm.set(11);
492
- tmm.set(13);
493
- tmm.set(14);
494
- tmm.set(16);
495
- tmm.set(17);
496
- tmm.set(18);
497
- tmm.set(19);
498
- tmm.set(110);
499
-
500
- if (isDebug) tmm.print();
501
-
502
- expect(tmm.dfs()).toEqual([
503
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 28, 33, 50, 110, 111, 155, 225
504
- ]);
505
-
506
- expect(tmm.isBST()).toBe(true);
507
- });
508
-
509
- it('should fix the tmm after insertion and deletion', () => {
510
- for (let i = 0; i < 100; i++) {
511
- tmm.set(i);
512
- }
513
- for (let i = 0; i < 49; i++) {
514
- tmm.delete(i);
515
- }
516
-
517
- expect(tmm.size).toBe(51);
518
- expect(tmm.isBST()).toBe(true);
519
- expect(tmm.isBST(tmm.root, 'RECURSIVE')).toBe(true);
520
-
521
- expect(tmm.dfs(n => n.key, 'IN', false, tmm.root, 'ITERATIVE')).toEqual([
522
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
523
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
524
- ]);
525
- expect(tmm.dfs(n => n.key, 'IN', false, tmm.root, 'RECURSIVE')).toEqual([
526
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
527
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
528
- ]);
529
- });
530
-
531
- it('should fix the tmm after large scale insertion and deletion', () => {
532
- for (let i = 0; i < 10000; i++) {
533
- tmm.set(i);
534
- }
535
- for (let i = 0; i < 10000; i++) {
536
- tmm.delete(i);
537
- }
538
-
539
- expect(tmm.size).toBe(0);
540
- expect(tmm.isBST()).toBe(true);
541
- expect(tmm.dfs(n => n.key, 'IN', false, tmm.root, 'ITERATIVE')).toEqual([]);
542
-
543
- tmm.clear();
544
- for (let i = 0; i < 1000; i++) {
545
- tmm.set(getRandomInt(-100, 1000));
546
- tmm.delete(getRandomInt(-100, 1000));
547
- }
548
-
549
- // TODO there is a bug when dfs the tmm with NIL node
550
- // expect(tmm.isBST()).toBe(true);
551
- });
552
-
553
- it('duplicates', () => {
554
- tmm.setMany([9, 8, 7, 8, 8, 8, 2, 3, 6, 5, 5, 4]);
555
- if (isDebug) tmm.print();
556
-
557
- expect(tmm.size).toBe(8);
558
- expect(tmm.isBST()).toBe(true);
559
- expect(tmm.isAVLBalanced()).toBe(true);
560
- tmm.setMany([10, 5, 2, 11]);
561
- expect(tmm.size).toBe(10);
562
- expect(tmm.isBST()).toBe(true);
563
- expect(tmm.isAVLBalanced()).toBe(true);
564
-
565
- tmm.clear();
566
- tmm.setMany([10, 20, 30, 40, 50, 60]);
567
- expect(tmm.isAVLBalanced()).toBe(false);
568
- });
569
-
570
- describe('TreeMultiMap delete test', function () {
571
- const tmm = new TreeMultiMap<number, number>();
572
- const inputSize = 100; // Adjust input sizes as needed
573
-
574
- beforeEach(() => {
575
- tmm.clear();
576
- });
577
- it('The structure remains normal after random deletion', function () {
578
- for (let i = 0; i < inputSize; i++) {
579
- tmm.set(i);
580
- }
581
-
582
- for (let i = 0; i < inputSize; i++) {
583
- const num = getRandomInt(0, inputSize - 1);
584
- tmm.delete(num);
585
- }
586
-
587
- let nanCount = 0;
588
- const dfs = (cur: RedBlackTreeNode<number, number[]>) => {
589
- if (isNaN(cur.key)) nanCount++;
590
- if (cur.left) dfs(cur.left);
591
- if (cur.right) dfs(cur.right);
592
- };
593
- if (tmm.root) dfs(tmm.root);
594
-
595
- expect(tmm.size).toBeLessThanOrEqual(inputSize);
596
- expect(tmm.getHeight()).toBeLessThan(Math.log2(inputSize) * 2);
597
-
598
- expect(nanCount).toBeLessThanOrEqual(inputSize);
599
- });
600
-
601
- it(`Random additions, complete deletions of structures are normal`, function () {
602
- for (let i = 0; i < inputSize; i++) {
603
- const num = getRandomInt(0, inputSize - 1);
604
- if (i === 0 && isDebug) console.log(`first:`, num);
605
- tmm.set(num);
606
- }
607
-
608
- for (let i = 0; i < inputSize; i++) {
609
- tmm.delete(i);
610
- }
611
-
612
- let nanCount = 0;
613
- const dfs = (cur: RedBlackTreeNode<number, number[]>) => {
614
- if (isNaN(cur.key)) nanCount++;
615
- if (cur.left) dfs(cur.left);
616
- if (cur.right) dfs(cur.right);
617
- };
618
- if (tmm.root) dfs(tmm.root);
619
-
620
- expect(tmm.size).toBe(0);
621
- expect(tmm.getHeight()).toBe(-1);
622
- expect(nanCount).toBeLessThanOrEqual(inputSize);
623
-
624
- if (isDebug) tmm.print();
625
- });
626
- });
627
-
628
- describe('TreeMultiMap iterative methods test', () => {
629
- let tmm: TreeMultiMap<number, string, object>;
630
- beforeEach(() => {
631
- tmm = new TreeMultiMap();
632
- tmm.set([1, ['a']]);
633
- tmm.set(2, 'b');
634
- tmm.set([3, ['c']]);
635
- });
636
-
637
- it('The node obtained by get Node should match the node type', () => {
638
- const node3 = tmm.getNode(3);
639
- // expect(node3).toBeInstanceOf(BinaryTreeNode);
640
- // expect(node3).toBeInstanceOf(BSTNode);
641
- expect(node3).toBeInstanceOf(RedBlackTreeNode);
642
- });
643
-
644
- it('forEach should iterate over all elements', () => {
645
- const mockCallback = jest.fn();
646
- tmm.forEach((value, key) => {
647
- mockCallback(key, value);
648
- });
649
-
650
- expect(mockCallback.mock.calls.length).toBe(3);
651
- expect(mockCallback.mock.calls[0]).toEqual([1, ['a']]);
652
- expect(mockCallback.mock.calls[1]).toEqual([2, ['b']]);
653
- expect(mockCallback.mock.calls[2]).toEqual([3, ['c']]);
654
- });
655
-
656
- it('filter should return a new tmm with filtered elements', () => {
657
- const filteredTree = tmm.filter((_value, key) => key > 1);
658
- expect(filteredTree.size).toBe(2);
659
- expect([...filteredTree]).toEqual([
660
- [2, ['b']],
661
- [3, ['c']]
662
- ]);
663
- });
664
-
665
- it('map should return a new tmm with modified elements', () => {
666
- const tmmMapped = tmm.map((value, key) => [(key * 2).toString(), value ? value : []] as any);
667
- expect(tmmMapped.size).toBe(3);
668
- expect([...tmmMapped]).toEqual([
669
- ['2', ['a']],
670
- ['4', ['b']],
671
- ['6', ['c']]
672
- ]);
673
- });
674
-
675
- it('reduce should accumulate values', () => {
676
- const sum = tmm.reduce((acc, value, key) => acc + key, 0);
677
- expect(sum).toBe(6);
678
- });
679
-
680
- it('[Symbol.iterator] should provide an iterator', () => {
681
- const entries = [];
682
- for (const entry of tmm) {
683
- entries.push(entry);
684
- }
685
-
686
- expect(entries.length).toBe(3);
687
- expect(entries).toEqual([
688
- [1, ['a']],
689
- [2, ['b']],
690
- [3, ['c']]
691
- ]);
692
- });
693
- });
694
- });
695
-
696
- describe('TreeMultiMap - _deleteFixup', () => {
697
- let tmm: TreeMultiMap<number, number>;
698
-
699
- beforeEach(() => {
700
- tmm = new TreeMultiMap();
701
- });
702
-
703
- it('should handle deleting a red leaf node', () => {
704
- tmm.set(10, 10);
705
- tmm.set(5, 5); // Red leaf
706
- tmm.set(20, 20);
707
-
708
- expect(tmm.delete(5)).toHaveLength(1); // Delete red leaf
709
- expect(tmm.root?.left).toBe(tmm.NIL); // Left child should be NIL
710
- });
711
-
712
- it('should handle deleting a black leaf node', () => {
713
- tmm.set(10, 10);
714
- tmm.set(5, 5); // Black node
715
- tmm.set(20, 20);
716
- tmm.set(1, 1); // Black leaf node
717
-
718
- expect(tmm.delete(1)).toHaveLength(1); // Delete black leaf
719
- expect(tmm.root?.left?.left).toBe(tmm.NIL);
720
- });
721
-
722
- it('should handle deleting black node with red sibling', () => {
723
- tmm.set(10, 10);
724
- tmm.set(5, 5); // Black node
725
- tmm.set(20, 20); // Red sibling
726
- tmm.set(25, 25); // Force the sibling to be red
727
-
728
- expect(tmm.delete(5)).toHaveLength(1); // Delete black node
729
- expect(tmm.root?.right?.color).toBe('BLACK'); // Ensure sibling color is black after fixup
730
- });
731
-
732
- it('should handle deleting black node with black sibling', () => {
733
- tmm.set(10, 10);
734
- tmm.set(5, 5); // Black node
735
- tmm.set(20, 20); // Black sibling
736
-
737
- expect(tmm.delete(5)).toHaveLength(1); // Delete black node
738
- expect(tmm.root?.left).toBe(tmm.NIL);
739
- });
740
-
741
- it('should handle deleting the root node', () => {
742
- tmm.set(10, 10); // Root node
743
- tmm.set(5, 5);
744
- tmm.set(20, 20);
745
-
746
- expect(tmm.delete(10)).toHaveLength(1); // Delete root node
747
- expect(tmm.root?.key).toBe(20); // New root should be 20
748
- });
749
-
750
- it('should handle complex case with multiple rotations', () => {
751
- tmm.set(10, 10);
752
- tmm.set(5, 5);
753
- tmm.set(15, 15);
754
- tmm.set(12, 12);
755
- tmm.set(18, 18);
756
- tmm.set(16, 16);
757
-
758
- // Delete a node that will cause rotations and color changes
759
- expect(tmm.delete(5)).toHaveLength(1);
760
-
761
- // Verify the color and structure after fixup
762
- expect(tmm.root?.color).toBe('BLACK');
763
- expect(tmm.root?.left).toBe(tmm.NIL);
764
- expect(tmm.root?.right?.left?.color).toBe('BLACK');
765
- });
766
-
767
- it('should handle complex delete fixup scenarios', () => {
768
- const tmm = new TreeMultiMap<number, number>();
769
-
770
- // Build a tmm that will require complex fixup
771
- tmm.set(20, 20);
772
- tmm.set(10, 10);
773
- tmm.set(30, 30);
774
- tmm.set(5, 5);
775
- tmm.set(15, 15);
776
- tmm.set(25, 25);
777
- tmm.set(35, 35);
778
- tmm.set(2, 2);
779
- tmm.set(8, 8);
780
-
781
- // This deletion should trigger a complex fixup
782
- tmm.delete(2);
783
- // tmm.print(tmm.root, { isShowNull: true, isShowRedBlackNIL: true, isShowUndefined: false });
784
-
785
- expect(tmm.isLeaf(2)).toBe(false);
786
- expect(tmm.isLeaf(8)).toBe(true);
787
- expect(tmm.isLeaf(15)).toBe(true);
788
- expect(tmm.isLeaf(25)).toBe(true);
789
- expect(tmm.isLeaf(35)).toBe(true);
790
- expect(tmm.isLeaf(20)).toBe(false);
791
- expect(tmm.isLeaf(30)).toBe(false);
792
- // Verify tmm structure and colors after fixup
793
- expect(tmm.root?.color).toBe('BLACK');
794
- expect(tmm.root?.key).toBe(20);
795
- expect(tmm.root?.left?.color).toBe('RED');
796
- expect(tmm.root?.left?.key).toBe(10);
797
- expect(tmm.root?.right?.color).toBe('BLACK');
798
- expect(tmm.root?.right?.key).toBe(30);
799
- expect(tmm.root?.left?.left?.color).toBe('BLACK');
800
- expect(tmm.root?.left?.left?.key).toBe(5);
801
- expect(tmm.root?.left?.right?.color).toBe('BLACK');
802
- expect(tmm.root?.left?.right?.key).toBe(15);
803
- expect(tmm.leaves(node => (node === null ? '' : `${node.key} ${node.color}`), tmm.root, 'RECURSIVE')).toEqual([
804
- '8 RED',
805
- '15 BLACK',
806
- '25 RED',
807
- '35 RED'
808
- ]);
809
- expect(tmm.listLevels(node => (node === tmm.NIL ? 'NIL' : `${node.key} ${node.color}`))).toEqual([
810
- ['20 BLACK'],
811
- ['10 RED', '30 BLACK'],
812
- ['5 BLACK', '15 BLACK', '25 RED', '35 RED'],
813
- ['NIL', '8 RED', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL'],
814
- ['NIL', 'NIL']
815
- ]);
816
- });
817
- });
818
-
819
- describe('real world data', () => {
820
- it('cost of living', () => {
821
- const indexedByRank = new TreeMultiMap(costOfLiving, {
822
- toEntryFn: raw => [raw, undefined],
823
- comparator: (a, b) => a.rank - b.rank
824
- });
825
- expect(indexedByRank.size).toBe(7);
826
- expect(indexedByRank.dfs(node => node?.key?.country)).toEqual([
827
- 'Switzerland',
828
- 'New Zealand',
829
- 'Mexico',
830
- 'South Africa',
831
- 'Japan',
832
- 'Brazil',
833
- 'Taiwan'
834
- ]);
835
- });
836
- });
837
-
838
- describe('classic use', () => {
839
- // Test suite for TreeMultiMap with player ranking and equipment
840
- it('@example players ranked by score with their equipment', () => {
841
- type Equipment = {
842
- name: string; // Equipment name
843
- quality: 'legendary' | 'epic' | 'rare' | 'common';
844
- level: number;
845
- };
846
-
847
- type Player = {
848
- name: string;
849
- score: number;
850
- equipments: Equipment[];
851
- };
852
-
853
- // Mock player data with their scores and equipment
854
- const players: Player[] = [
855
- {
856
- name: 'DragonSlayer',
857
- score: 8750,
858
- equipments: [
859
- { name: 'AWM', quality: 'legendary', level: 85 },
860
- { name: 'Level 3 Helmet', quality: 'epic', level: 80 },
861
- { name: 'Extended Quickdraw Mag', quality: 'rare', level: 75 },
862
- { name: 'Compensator', quality: 'epic', level: 78 },
863
- { name: 'Vertical Grip', quality: 'rare', level: 72 }
864
- ]
865
- },
866
- {
867
- name: 'ShadowNinja',
868
- score: 7200,
869
- equipments: [
870
- { name: 'M416', quality: 'epic', level: 75 },
871
- { name: 'Ghillie Suit', quality: 'rare', level: 70 },
872
- { name: 'Red Dot Sight', quality: 'common', level: 65 },
873
- { name: 'Extended QuickDraw Mag', quality: 'rare', level: 68 }
874
- ]
875
- },
876
- {
877
- name: 'RuneMaster',
878
- score: 9100,
879
- equipments: [
880
- { name: 'KAR98K', quality: 'legendary', level: 90 },
881
- { name: 'Level 3 Vest', quality: 'legendary', level: 85 },
882
- { name: 'Holographic Sight', quality: 'epic', level: 82 },
883
- { name: 'Suppressor', quality: 'legendary', level: 88 },
884
- { name: 'Level 3 Backpack', quality: 'epic', level: 80 }
885
- ]
886
- },
887
- {
888
- name: 'BattleKing',
889
- score: 8500,
890
- equipments: [
891
- { name: 'AUG', quality: 'epic', level: 82 },
892
- { name: 'Red Dot Sight', quality: 'rare', level: 75 },
893
- { name: 'Extended Mag', quality: 'common', level: 70 },
894
- { name: 'Tactical Stock', quality: 'rare', level: 76 }
895
- ]
896
- },
897
- {
898
- name: 'SniperElite',
899
- score: 7800,
900
- equipments: [
901
- { name: 'M24', quality: 'legendary', level: 88 },
902
- { name: 'Compensator', quality: 'epic', level: 80 },
903
- { name: 'Scope 8x', quality: 'legendary', level: 85 },
904
- { name: 'Level 2 Helmet', quality: 'rare', level: 75 }
905
- ]
906
- },
907
- {
908
- name: 'RushMaster',
909
- score: 7500,
910
- equipments: [
911
- { name: 'Vector', quality: 'rare', level: 72 },
912
- { name: 'Level 2 Helmet', quality: 'common', level: 65 },
913
- { name: 'Quickdraw Mag', quality: 'common', level: 60 },
914
- { name: 'Laser Sight', quality: 'rare', level: 68 }
915
- ]
916
- },
917
- {
918
- name: 'GhostWarrior',
919
- score: 8200,
920
- equipments: [
921
- { name: 'SCAR-L', quality: 'epic', level: 78 },
922
- { name: 'Extended Quickdraw Mag', quality: 'rare', level: 70 },
923
- { name: 'Holographic Sight', quality: 'epic', level: 75 },
924
- { name: 'Suppressor', quality: 'rare', level: 72 },
925
- { name: 'Vertical Grip', quality: 'common', level: 65 }
926
- ]
927
- },
928
- {
929
- name: 'DeathDealer',
930
- score: 7300,
931
- equipments: [
932
- { name: 'SKS', quality: 'epic', level: 76 },
933
- { name: 'Holographic Sight', quality: 'rare', level: 68 },
934
- { name: 'Extended Mag', quality: 'common', level: 65 }
935
- ]
936
- },
937
- {
938
- name: 'StormRider',
939
- score: 8900,
940
- equipments: [
941
- { name: 'MK14', quality: 'legendary', level: 92 },
942
- { name: 'Level 3 Backpack', quality: 'legendary', level: 85 },
943
- { name: 'Scope 8x', quality: 'epic', level: 80 },
944
- { name: 'Suppressor', quality: 'legendary', level: 88 },
945
- { name: 'Tactical Stock', quality: 'rare', level: 75 }
946
- ]
947
- },
948
- {
949
- name: 'CombatLegend',
950
- score: 7600,
951
- equipments: [
952
- { name: 'UMP45', quality: 'rare', level: 74 },
953
- { name: 'Level 2 Vest', quality: 'common', level: 67 },
954
- { name: 'Red Dot Sight', quality: 'common', level: 62 },
955
- { name: 'Extended Mag', quality: 'rare', level: 70 }
956
- ]
957
- }
958
- ];
959
-
960
- // Create a TreeMultiMap for player rankings
961
- const playerRankings = new TreeMultiMap<number, Equipment, Player>(players, {
962
- toEntryFn: ({ score, equipments }) => [score, equipments],
963
- isMapMode: false
964
- });
965
-
966
- const topPlayersEquipments = playerRankings.rangeSearch([8900, 10000], node => playerRankings.get(node.key));
967
- expect(topPlayersEquipments).toEqual([
968
- [
969
- {
970
- name: 'MK14',
971
- quality: 'legendary',
972
- level: 92
973
- },
974
- { name: 'Level 3 Backpack', quality: 'legendary', level: 85 },
975
- {
976
- name: 'Scope 8x',
977
- quality: 'epic',
978
- level: 80
979
- },
980
- { name: 'Suppressor', quality: 'legendary', level: 88 },
981
- {
982
- name: 'Tactical Stock',
983
- quality: 'rare',
984
- level: 75
985
- }
986
- ],
987
- [
988
- { name: 'KAR98K', quality: 'legendary', level: 90 },
989
- {
990
- name: 'Level 3 Vest',
991
- quality: 'legendary',
992
- level: 85
993
- },
994
- { name: 'Holographic Sight', quality: 'epic', level: 82 },
995
- {
996
- name: 'Suppressor',
997
- quality: 'legendary',
998
- level: 88
999
- },
1000
- { name: 'Level 3 Backpack', quality: 'epic', level: 80 }
1001
- ]
1002
- ]);
1003
- });
1004
- });
1005
-
1006
- interface Product {
1007
- id: string;
1008
- name: string;
1009
- price: number;
1010
- }
1011
-
1012
- // Build a TreeMultiMap in "multi" mode: price -> Product[]
1013
- function buildIndex(sample: Product[]): TreeMultiMap<number, Product, Product> {
1014
- return new TreeMultiMap<number, Product, Product>(sample, {
1015
- toEntryFn: raw => [raw.price, [raw]],
1016
- isMapMode: false // ensure multi-value per key
1017
- });
1018
- }
1019
-
1020
- // Helper: normalize getLeftMost/getRightMost return (key or node.key)
1021
- function leftKey(tmm: TreeMultiMap<number, Product, Product>): number | undefined {
1022
- return tmm.getLeftMost();
1023
- }
1024
-
1025
- function rightKey(tmm: TreeMultiMap<number, Product, Product>): number | undefined {
1026
- return tmm.getRightMost();
1027
- }
1028
-
1029
- describe('TreeMultiMap — rangeSearch-driven semantics', () => {
1030
- const sample: Product[] = [
1031
- { id: 'p1', name: 'Basic Tee', price: 35.5 },
1032
- { id: 'p2', name: 'Sport Socks', price: 12.9 },
1033
- { id: 'p3', name: 'Denim Jeans', price: 79.9 },
1034
- { id: 'p4', name: 'Hoodie', price: 79.9 },
1035
- { id: 'p5', name: 'Sneakers', price: 99.0 },
1036
- { id: 'p6', name: 'Backpack', price: 120.0 },
1037
- { id: 'p7', name: 'Watch', price: 199.0 },
1038
- { id: 'p8', name: 'Hat', price: 35.5 }
1039
- ];
1040
-
1041
- it('stores multiple values under the same key and preserves insertion order in the bucket', () => {
1042
- const tmm = buildIndex(sample);
1043
- // Use rangeSearch on the single key [35.5, 35.5]
1044
- const groups = tmm.rangeSearch(new Range(35.5, 35.5, true, true), node => node.value).flat();
1045
- expect(groups.map(p => p!.id)).toEqual(['p1', 'p8']); // insertion order kept
1046
- });
1047
-
1048
- it('iterates keys in ascending order (via keys())', () => {
1049
- const tmm = buildIndex(sample);
1050
- expect([...tmm.keys()]).toEqual([12.9, 35.5, 79.9, 99, 120, 199]);
1051
- });
1052
-
1053
- it('rangeSearch respects inclusive/exclusive bounds — flat result', () => {
1054
- const tmm = buildIndex(sample);
1055
-
1056
- // [35.5, 100): include 35.5, exclude 100
1057
- const res = tmm.rangeSearch(new Range(35.5, 100, true, false), node => node.value).flat();
1058
-
1059
- expect(res.map(p => `${p!.name}($${p!.price})`)).toEqual([
1060
- 'Basic Tee($35.5)',
1061
- 'Hat($35.5)',
1062
- 'Denim Jeans($79.9)',
1063
- 'Hoodie($79.9)',
1064
- 'Sneakers($99)'
1065
- ]);
1066
- expect(res.map(p => p!.id)).toEqual(['p1', 'p8', 'p3', 'p4', 'p5']);
1067
- });
1068
-
1069
- it('rangeSearch returns grouped buckets — both ends exclusive', () => {
1070
- const tmm = buildIndex(sample);
1071
-
1072
- // (80, 200) → keys 99, 120, 199
1073
- const groups = tmm.rangeSearch(new Range(80, 200, false, false), node => ({ key: node.key, bucket: node.value }));
1074
-
1075
- expect(groups.map(g => g.key)).toEqual([99, 120, 199]);
1076
- expect(groups.map(g => g.bucket!.map(i => i.id))).toEqual([['p5'], ['p6'], ['p7']]);
1077
- });
1078
-
1079
- it('rangeSearch across full domain by using current min/max keys (no Infinity)', () => {
1080
- const tmm = buildIndex(sample);
1081
- const lo = tmm.getLeftMost(); // expected 12.9
1082
- const hi = tmm.getRightMost(); // expected 199
1083
-
1084
- if (lo !== undefined && hi !== undefined) {
1085
- const groups = tmm.rangeSearch(new Range(lo, hi, true, true), node => ({
1086
- key: node.key,
1087
- count: node.value!.length
1088
- }));
1089
-
1090
- // 12.9:1 | 35.5:2 | 79.9:2 | 99:1 | 120:1 | 199:1
1091
- expect(groups.map(g => `${g.key}:${g.count}`).join(' | ')).toBe(
1092
- '12.9:1 | 35.5:2 | 79.9:2 | 99:1 | 120:1 | 199:1'
1093
- );
1094
- }
1095
- });
1096
-
1097
- it('empty TreeMultiMap → rangeSearch returns empty results', () => {
1098
- const tmm = buildIndex([]);
1099
- // Any finite range should yield empty
1100
- const flat = tmm.rangeSearch(new Range(0, 100, true, true), n => n.value).flat();
1101
- expect(flat).toEqual([]);
1102
-
1103
- const groups = tmm.rangeSearch(new Range(0, 100, true, true), (node: any) => ({
1104
- key: node.key,
1105
- bucket: node.value as Product[]
1106
- }));
1107
- expect(groups).toEqual([]);
1108
- });
1109
-
1110
- it('left-most/right-most key helpers (if API returns node, unwrap .key)', () => {
1111
- const tmm = buildIndex(sample);
1112
- expect(leftKey(tmm)).toBe(12.9);
1113
- expect(rightKey(tmm)).toBe(199);
1114
- });
1115
- });