data-structure-typed 2.4.0 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +2 -3
  3. package/README_CN.md +0 -1
  4. package/dist/cjs/index.cjs +85 -30
  5. package/dist/cjs-legacy/index.cjs +85 -30
  6. package/dist/esm/index.mjs +85 -30
  7. package/dist/esm-legacy/index.mjs +85 -30
  8. package/dist/types/data-structures/binary-tree/tree-map.d.ts +17 -6
  9. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +13 -5
  10. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +12 -5
  11. package/dist/types/data-structures/binary-tree/tree-set.d.ts +15 -4
  12. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +6 -1
  13. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +6 -1
  14. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +6 -1
  15. package/dist/umd/data-structure-typed.js +85 -29
  16. package/dist/umd/data-structure-typed.min.js +4 -4
  17. package/package.json +11 -5
  18. package/src/data-structures/binary-tree/tree-map.ts +35 -13
  19. package/src/data-structures/binary-tree/tree-multi-map.ts +41 -20
  20. package/src/data-structures/binary-tree/tree-multi-set.ts +17 -6
  21. package/src/data-structures/binary-tree/tree-set.ts +19 -6
  22. package/src/data-structures/trie/trie.ts +6 -8
  23. package/src/types/data-structures/binary-tree/tree-map.ts +7 -1
  24. package/src/types/data-structures/binary-tree/tree-multi-set.ts +7 -1
  25. package/src/types/data-structures/binary-tree/tree-set.ts +7 -1
  26. package/CMakeLists.txt +0 -52
  27. package/benchmark/report.html +0 -143
  28. package/benchmark/report.json +0 -1972
  29. package/build/CMakeCache.txt +0 -603
  30. package/build/CMakeFiles/4.0.3/CMakeCXXCompiler.cmake +0 -104
  31. package/build/CMakeFiles/4.0.3/CMakeDetermineCompilerABI_CXX.bin +0 -0
  32. package/build/CMakeFiles/4.0.3/CMakeSystem.cmake +0 -15
  33. package/build/CMakeFiles/4.0.3/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -920
  34. package/build/CMakeFiles/4.0.3/CompilerIdCXX/a.out +0 -0
  35. package/build/CMakeFiles/4.0.3/CompilerIdCXX/apple-sdk.cpp +0 -1
  36. package/build/CMakeFiles/CMakeConfigureLog.yaml +0 -2146
  37. package/build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  38. package/build/CMakeFiles/InstallScripts.json +0 -9
  39. package/build/CMakeFiles/Makefile.cmake +0 -100
  40. package/build/CMakeFiles/Makefile2 +0 -720
  41. package/build/CMakeFiles/TargetDirectories.txt +0 -23
  42. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/DependInfo.cmake +0 -23
  43. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/build.make +0 -114
  44. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/cmake_clean.cmake +0 -11
  45. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.internal +0 -839
  46. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.make +0 -2506
  47. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/compiler_depend.ts +0 -2
  48. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/depend.make +0 -2
  49. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/flags.make +0 -10
  50. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/link.txt +0 -1
  51. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/progress.make +0 -3
  52. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp.o +0 -0
  53. package/build/CMakeFiles/avl-rb-range-search-benchmark.dir/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp.o.d +0 -835
  54. package/build/CMakeFiles/avl-tree-benchmark.dir/DependInfo.cmake +0 -23
  55. package/build/CMakeFiles/avl-tree-benchmark.dir/build.make +0 -114
  56. package/build/CMakeFiles/avl-tree-benchmark.dir/cmake_clean.cmake +0 -11
  57. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.internal +0 -839
  58. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.make +0 -2506
  59. package/build/CMakeFiles/avl-tree-benchmark.dir/compiler_depend.ts +0 -2
  60. package/build/CMakeFiles/avl-tree-benchmark.dir/depend.make +0 -2
  61. package/build/CMakeFiles/avl-tree-benchmark.dir/flags.make +0 -10
  62. package/build/CMakeFiles/avl-tree-benchmark.dir/link.txt +0 -1
  63. package/build/CMakeFiles/avl-tree-benchmark.dir/progress.make +0 -3
  64. package/build/CMakeFiles/avl-tree-benchmark.dir/test/performance/data-structures/binary-tree/avl-tree.test.cpp.o +0 -0
  65. package/build/CMakeFiles/avl-tree-benchmark.dir/test/performance/data-structures/binary-tree/avl-tree.test.cpp.o.d +0 -835
  66. package/build/CMakeFiles/cmake.check_cache +0 -1
  67. package/build/CMakeFiles/deque-benchmark.dir/DependInfo.cmake +0 -23
  68. package/build/CMakeFiles/deque-benchmark.dir/build.make +0 -114
  69. package/build/CMakeFiles/deque-benchmark.dir/cmake_clean.cmake +0 -11
  70. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.internal +0 -791
  71. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.make +0 -2362
  72. package/build/CMakeFiles/deque-benchmark.dir/compiler_depend.ts +0 -2
  73. package/build/CMakeFiles/deque-benchmark.dir/depend.make +0 -2
  74. package/build/CMakeFiles/deque-benchmark.dir/flags.make +0 -10
  75. package/build/CMakeFiles/deque-benchmark.dir/link.txt +0 -1
  76. package/build/CMakeFiles/deque-benchmark.dir/progress.make +0 -3
  77. package/build/CMakeFiles/deque-benchmark.dir/test/performance/data-structures/queue/deque.test.cpp.o +0 -0
  78. package/build/CMakeFiles/deque-benchmark.dir/test/performance/data-structures/queue/deque.test.cpp.o.d +0 -787
  79. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/DependInfo.cmake +0 -23
  80. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/build.make +0 -114
  81. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/cmake_clean.cmake +0 -11
  82. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.internal +0 -790
  83. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.make +0 -2359
  84. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/compiler_depend.ts +0 -2
  85. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/depend.make +0 -2
  86. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/flags.make +0 -10
  87. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/link.txt +0 -1
  88. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/progress.make +0 -3
  89. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp.o +0 -0
  90. package/build/CMakeFiles/doubly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp.o.d +0 -786
  91. package/build/CMakeFiles/hash-map-benchmark.dir/DependInfo.cmake +0 -23
  92. package/build/CMakeFiles/hash-map-benchmark.dir/build.make +0 -114
  93. package/build/CMakeFiles/hash-map-benchmark.dir/cmake_clean.cmake +0 -11
  94. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.internal +0 -790
  95. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.make +0 -2359
  96. package/build/CMakeFiles/hash-map-benchmark.dir/compiler_depend.ts +0 -2
  97. package/build/CMakeFiles/hash-map-benchmark.dir/depend.make +0 -2
  98. package/build/CMakeFiles/hash-map-benchmark.dir/flags.make +0 -10
  99. package/build/CMakeFiles/hash-map-benchmark.dir/link.txt +0 -1
  100. package/build/CMakeFiles/hash-map-benchmark.dir/progress.make +0 -3
  101. package/build/CMakeFiles/hash-map-benchmark.dir/test/performance/data-structures/hash/hash-map.test.cpp.o +0 -0
  102. package/build/CMakeFiles/hash-map-benchmark.dir/test/performance/data-structures/hash/hash-map.test.cpp.o.d +0 -786
  103. package/build/CMakeFiles/heap-benchmark.dir/DependInfo.cmake +0 -23
  104. package/build/CMakeFiles/heap-benchmark.dir/build.make +0 -114
  105. package/build/CMakeFiles/heap-benchmark.dir/cmake_clean.cmake +0 -11
  106. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.internal +0 -843
  107. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.make +0 -2518
  108. package/build/CMakeFiles/heap-benchmark.dir/compiler_depend.ts +0 -2
  109. package/build/CMakeFiles/heap-benchmark.dir/depend.make +0 -2
  110. package/build/CMakeFiles/heap-benchmark.dir/flags.make +0 -10
  111. package/build/CMakeFiles/heap-benchmark.dir/link.txt +0 -1
  112. package/build/CMakeFiles/heap-benchmark.dir/progress.make +0 -3
  113. package/build/CMakeFiles/heap-benchmark.dir/test/performance/data-structures/heap/heap.test.cpp.o +0 -0
  114. package/build/CMakeFiles/heap-benchmark.dir/test/performance/data-structures/heap/heap.test.cpp.o.d +0 -839
  115. package/build/CMakeFiles/priority-queue-benchmark.dir/DependInfo.cmake +0 -23
  116. package/build/CMakeFiles/priority-queue-benchmark.dir/build.make +0 -114
  117. package/build/CMakeFiles/priority-queue-benchmark.dir/cmake_clean.cmake +0 -11
  118. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.internal +0 -793
  119. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.make +0 -2368
  120. package/build/CMakeFiles/priority-queue-benchmark.dir/compiler_depend.ts +0 -2
  121. package/build/CMakeFiles/priority-queue-benchmark.dir/depend.make +0 -2
  122. package/build/CMakeFiles/priority-queue-benchmark.dir/flags.make +0 -10
  123. package/build/CMakeFiles/priority-queue-benchmark.dir/link.txt +0 -1
  124. package/build/CMakeFiles/priority-queue-benchmark.dir/progress.make +0 -3
  125. package/build/CMakeFiles/priority-queue-benchmark.dir/test/performance/data-structures/priority-queue/priority-queue.test.cpp.o +0 -0
  126. package/build/CMakeFiles/priority-queue-benchmark.dir/test/performance/data-structures/priority-queue/priority-queue.test.cpp.o.d +0 -789
  127. package/build/CMakeFiles/progress.marks +0 -1
  128. package/build/CMakeFiles/queue-benchmark.dir/DependInfo.cmake +0 -23
  129. package/build/CMakeFiles/queue-benchmark.dir/build.make +0 -114
  130. package/build/CMakeFiles/queue-benchmark.dir/cmake_clean.cmake +0 -11
  131. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.internal +0 -793
  132. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.make +0 -2368
  133. package/build/CMakeFiles/queue-benchmark.dir/compiler_depend.ts +0 -2
  134. package/build/CMakeFiles/queue-benchmark.dir/depend.make +0 -2
  135. package/build/CMakeFiles/queue-benchmark.dir/flags.make +0 -10
  136. package/build/CMakeFiles/queue-benchmark.dir/link.txt +0 -1
  137. package/build/CMakeFiles/queue-benchmark.dir/progress.make +0 -3
  138. package/build/CMakeFiles/queue-benchmark.dir/test/performance/data-structures/queue/queue.test.cpp.o +0 -0
  139. package/build/CMakeFiles/queue-benchmark.dir/test/performance/data-structures/queue/queue.test.cpp.o.d +0 -789
  140. package/build/CMakeFiles/red-black-tree-benchmark.dir/DependInfo.cmake +0 -23
  141. package/build/CMakeFiles/red-black-tree-benchmark.dir/build.make +0 -114
  142. package/build/CMakeFiles/red-black-tree-benchmark.dir/cmake_clean.cmake +0 -11
  143. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.internal +0 -839
  144. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.make +0 -2506
  145. package/build/CMakeFiles/red-black-tree-benchmark.dir/compiler_depend.ts +0 -2
  146. package/build/CMakeFiles/red-black-tree-benchmark.dir/depend.make +0 -2
  147. package/build/CMakeFiles/red-black-tree-benchmark.dir/flags.make +0 -10
  148. package/build/CMakeFiles/red-black-tree-benchmark.dir/link.txt +0 -1
  149. package/build/CMakeFiles/red-black-tree-benchmark.dir/progress.make +0 -3
  150. package/build/CMakeFiles/red-black-tree-benchmark.dir/test/performance/data-structures/binary-tree/red-black-tree.test.cpp.o +0 -0
  151. package/build/CMakeFiles/red-black-tree-benchmark.dir/test/performance/data-structures/binary-tree/red-black-tree.test.cpp.o.d +0 -835
  152. package/build/CMakeFiles/singly-linked-list-benchmark.dir/DependInfo.cmake +0 -23
  153. package/build/CMakeFiles/singly-linked-list-benchmark.dir/build.make +0 -114
  154. package/build/CMakeFiles/singly-linked-list-benchmark.dir/cmake_clean.cmake +0 -11
  155. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.internal +0 -790
  156. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.make +0 -2359
  157. package/build/CMakeFiles/singly-linked-list-benchmark.dir/compiler_depend.ts +0 -2
  158. package/build/CMakeFiles/singly-linked-list-benchmark.dir/depend.make +0 -2
  159. package/build/CMakeFiles/singly-linked-list-benchmark.dir/flags.make +0 -10
  160. package/build/CMakeFiles/singly-linked-list-benchmark.dir/link.txt +0 -1
  161. package/build/CMakeFiles/singly-linked-list-benchmark.dir/progress.make +0 -3
  162. package/build/CMakeFiles/singly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/singly-linked-list.test.cpp.o +0 -0
  163. package/build/CMakeFiles/singly-linked-list-benchmark.dir/test/performance/data-structures/linked-list/singly-linked-list.test.cpp.o.d +0 -786
  164. package/build/CMakeFiles/stack-benchmark.dir/DependInfo.cmake +0 -23
  165. package/build/CMakeFiles/stack-benchmark.dir/build.make +0 -114
  166. package/build/CMakeFiles/stack-benchmark.dir/cmake_clean.cmake +0 -11
  167. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.internal +0 -793
  168. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.make +0 -2368
  169. package/build/CMakeFiles/stack-benchmark.dir/compiler_depend.ts +0 -2
  170. package/build/CMakeFiles/stack-benchmark.dir/depend.make +0 -2
  171. package/build/CMakeFiles/stack-benchmark.dir/flags.make +0 -10
  172. package/build/CMakeFiles/stack-benchmark.dir/link.txt +0 -1
  173. package/build/CMakeFiles/stack-benchmark.dir/progress.make +0 -3
  174. package/build/CMakeFiles/stack-benchmark.dir/test/performance/data-structures/stack/stack.test.cpp.o +0 -0
  175. package/build/CMakeFiles/stack-benchmark.dir/test/performance/data-structures/stack/stack.test.cpp.o.d +0 -789
  176. package/build/CMakeFiles/tree-map-benchmark.dir/DependInfo.cmake +0 -23
  177. package/build/CMakeFiles/tree-map-benchmark.dir/build.make +0 -114
  178. package/build/CMakeFiles/tree-map-benchmark.dir/cmake_clean.cmake +0 -11
  179. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.internal +0 -839
  180. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.make +0 -2506
  181. package/build/CMakeFiles/tree-map-benchmark.dir/compiler_depend.ts +0 -2
  182. package/build/CMakeFiles/tree-map-benchmark.dir/depend.make +0 -2
  183. package/build/CMakeFiles/tree-map-benchmark.dir/flags.make +0 -10
  184. package/build/CMakeFiles/tree-map-benchmark.dir/link.txt +0 -1
  185. package/build/CMakeFiles/tree-map-benchmark.dir/progress.make +0 -3
  186. package/build/CMakeFiles/tree-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-map.test.cpp.o +0 -0
  187. package/build/CMakeFiles/tree-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-map.test.cpp.o.d +0 -835
  188. package/build/CMakeFiles/tree-multi-map-benchmark.dir/DependInfo.cmake +0 -23
  189. package/build/CMakeFiles/tree-multi-map-benchmark.dir/build.make +0 -114
  190. package/build/CMakeFiles/tree-multi-map-benchmark.dir/cmake_clean.cmake +0 -11
  191. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.internal +0 -839
  192. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.make +0 -2506
  193. package/build/CMakeFiles/tree-multi-map-benchmark.dir/compiler_depend.ts +0 -2
  194. package/build/CMakeFiles/tree-multi-map-benchmark.dir/depend.make +0 -2
  195. package/build/CMakeFiles/tree-multi-map-benchmark.dir/flags.make +0 -10
  196. package/build/CMakeFiles/tree-multi-map-benchmark.dir/link.txt +0 -1
  197. package/build/CMakeFiles/tree-multi-map-benchmark.dir/progress.make +0 -3
  198. package/build/CMakeFiles/tree-multi-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp.o +0 -0
  199. package/build/CMakeFiles/tree-multi-map-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp.o.d +0 -835
  200. package/build/CMakeFiles/tree-multi-set-benchmark.dir/DependInfo.cmake +0 -23
  201. package/build/CMakeFiles/tree-multi-set-benchmark.dir/build.make +0 -114
  202. package/build/CMakeFiles/tree-multi-set-benchmark.dir/cmake_clean.cmake +0 -11
  203. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.internal +0 -839
  204. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.make +0 -2506
  205. package/build/CMakeFiles/tree-multi-set-benchmark.dir/compiler_depend.ts +0 -2
  206. package/build/CMakeFiles/tree-multi-set-benchmark.dir/depend.make +0 -2
  207. package/build/CMakeFiles/tree-multi-set-benchmark.dir/flags.make +0 -10
  208. package/build/CMakeFiles/tree-multi-set-benchmark.dir/link.txt +0 -1
  209. package/build/CMakeFiles/tree-multi-set-benchmark.dir/progress.make +0 -3
  210. package/build/CMakeFiles/tree-multi-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp.o +0 -0
  211. package/build/CMakeFiles/tree-multi-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp.o.d +0 -835
  212. package/build/CMakeFiles/tree-set-benchmark.dir/DependInfo.cmake +0 -23
  213. package/build/CMakeFiles/tree-set-benchmark.dir/build.make +0 -114
  214. package/build/CMakeFiles/tree-set-benchmark.dir/cmake_clean.cmake +0 -11
  215. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.internal +0 -839
  216. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.make +0 -2506
  217. package/build/CMakeFiles/tree-set-benchmark.dir/compiler_depend.ts +0 -2
  218. package/build/CMakeFiles/tree-set-benchmark.dir/depend.make +0 -2
  219. package/build/CMakeFiles/tree-set-benchmark.dir/flags.make +0 -10
  220. package/build/CMakeFiles/tree-set-benchmark.dir/link.txt +0 -1
  221. package/build/CMakeFiles/tree-set-benchmark.dir/progress.make +0 -3
  222. package/build/CMakeFiles/tree-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-set.test.cpp.o +0 -0
  223. package/build/CMakeFiles/tree-set-benchmark.dir/test/performance/data-structures/binary-tree/tree-set.test.cpp.o.d +0 -835
  224. package/build/Makefile +0 -783
  225. package/build/_deps/benchmark-build/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  226. package/build/_deps/benchmark-build/CMakeFiles/progress.marks +0 -1
  227. package/build/_deps/benchmark-build/Makefile +0 -140
  228. package/build/_deps/benchmark-build/benchmark.pc +0 -12
  229. package/build/_deps/benchmark-build/benchmarkConfig.cmake +0 -14
  230. package/build/_deps/benchmark-build/benchmarkConfigVersion.cmake +0 -65
  231. package/build/_deps/benchmark-build/benchmarkTargets.cmake +0 -84
  232. package/build/_deps/benchmark-build/cmake_install.cmake +0 -50
  233. package/build/_deps/benchmark-build/src/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  234. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/DependInfo.cmake +0 -41
  235. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark.cc.o +0 -0
  236. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark.cc.o.d +0 -875
  237. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o +0 -0
  238. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o.d +0 -802
  239. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o +0 -0
  240. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_name.cc.o.d +0 -772
  241. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o +0 -0
  242. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_register.cc.o.d +0 -841
  243. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o +0 -0
  244. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o.d +0 -833
  245. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/build.make +0 -402
  246. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/check.cc.o +0 -0
  247. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/check.cc.o.d +0 -784
  248. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/cmake_clean.cmake +0 -47
  249. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/cmake_clean_target.cmake +0 -3
  250. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/colorprint.cc.o +0 -0
  251. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/colorprint.cc.o.d +0 -791
  252. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o +0 -0
  253. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/commandlineflags.cc.o.d +0 -795
  254. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.internal +0 -15519
  255. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.make +0 -17500
  256. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/compiler_depend.ts +0 -2
  257. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/complexity.cc.o +0 -0
  258. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/complexity.cc.o.d +0 -793
  259. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/console_reporter.cc.o +0 -0
  260. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/console_reporter.cc.o.d +0 -802
  261. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/counter.cc.o +0 -0
  262. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/counter.cc.o.d +0 -773
  263. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o +0 -0
  264. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/csv_reporter.cc.o.d +0 -799
  265. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/depend.make +0 -2
  266. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/flags.make +0 -10
  267. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/json_reporter.cc.o +0 -0
  268. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/json_reporter.cc.o.d +0 -800
  269. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/link.txt +0 -2
  270. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/perf_counters.cc.o +0 -0
  271. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/perf_counters.cc.o.d +0 -807
  272. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/progress.make +0 -21
  273. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/reporter.cc.o +0 -0
  274. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/reporter.cc.o.d +0 -798
  275. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/statistics.cc.o +0 -0
  276. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/statistics.cc.o.d +0 -800
  277. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/string_util.cc.o +0 -0
  278. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/string_util.cc.o.d +0 -795
  279. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/sysinfo.cc.o +0 -0
  280. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/sysinfo.cc.o.d +0 -933
  281. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/timers.cc.o +0 -0
  282. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark.dir/timers.cc.o.d +0 -904
  283. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/DependInfo.cmake +0 -23
  284. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o +0 -0
  285. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o.d +0 -772
  286. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/build.make +0 -114
  287. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/cmake_clean.cmake +0 -11
  288. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/cmake_clean_target.cmake +0 -3
  289. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.internal +0 -776
  290. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.make +0 -2317
  291. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/compiler_depend.ts +0 -2
  292. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/depend.make +0 -2
  293. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/flags.make +0 -10
  294. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/link.txt +0 -2
  295. package/build/_deps/benchmark-build/src/CMakeFiles/benchmark_main.dir/progress.make +0 -3
  296. package/build/_deps/benchmark-build/src/CMakeFiles/progress.marks +0 -1
  297. package/build/_deps/benchmark-build/src/Makefile +0 -710
  298. package/build/_deps/benchmark-build/src/cmake_install.cmake +0 -45
  299. package/build/_deps/benchmark-build/src/libbenchmark.a +0 -0
  300. package/build/_deps/benchmark-build/src/libbenchmark_main.a +0 -0
  301. package/build/_deps/benchmark-src/.clang-format +0 -5
  302. package/build/_deps/benchmark-src/.clang-tidy +0 -7
  303. package/build/_deps/benchmark-src/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  304. package/build/_deps/benchmark-src/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  305. package/build/_deps/benchmark-src/.github/install_bazel.sh +0 -13
  306. package/build/_deps/benchmark-src/.github/libcxx-setup.sh +0 -26
  307. package/build/_deps/benchmark-src/.github/workflows/bazel.yml +0 -35
  308. package/build/_deps/benchmark-src/.github/workflows/build-and-test-min-cmake.yml +0 -46
  309. package/build/_deps/benchmark-src/.github/workflows/build-and-test-perfcounters.yml +0 -51
  310. package/build/_deps/benchmark-src/.github/workflows/build-and-test.yml +0 -114
  311. package/build/_deps/benchmark-src/.github/workflows/clang-format-lint.yml +0 -17
  312. package/build/_deps/benchmark-src/.github/workflows/clang-tidy.yml +0 -38
  313. package/build/_deps/benchmark-src/.github/workflows/doxygen.yml +0 -28
  314. package/build/_deps/benchmark-src/.github/workflows/pylint.yml +0 -28
  315. package/build/_deps/benchmark-src/.github/workflows/sanitizer.yml +0 -96
  316. package/build/_deps/benchmark-src/.github/workflows/test_bindings.yml +0 -29
  317. package/build/_deps/benchmark-src/.github/workflows/wheels.yml +0 -79
  318. package/build/_deps/benchmark-src/.travis.yml +0 -208
  319. package/build/_deps/benchmark-src/.ycm_extra_conf.py +0 -115
  320. package/build/_deps/benchmark-src/AUTHORS +0 -71
  321. package/build/_deps/benchmark-src/BUILD.bazel +0 -87
  322. package/build/_deps/benchmark-src/CMakeLists.txt +0 -340
  323. package/build/_deps/benchmark-src/CONTRIBUTING.md +0 -58
  324. package/build/_deps/benchmark-src/CONTRIBUTORS +0 -95
  325. package/build/_deps/benchmark-src/LICENSE +0 -202
  326. package/build/_deps/benchmark-src/MODULE.bazel +0 -24
  327. package/build/_deps/benchmark-src/README.md +0 -223
  328. package/build/_deps/benchmark-src/WORKSPACE +0 -22
  329. package/build/_deps/benchmark-src/WORKSPACE.bzlmod +0 -2
  330. package/build/_deps/benchmark-src/_config.yml +0 -2
  331. package/build/_deps/benchmark-src/appveyor.yml +0 -50
  332. package/build/_deps/benchmark-src/bazel/benchmark_deps.bzl +0 -65
  333. package/build/_deps/benchmark-src/bindings/python/BUILD +0 -3
  334. package/build/_deps/benchmark-src/bindings/python/build_defs.bzl +0 -25
  335. package/build/_deps/benchmark-src/bindings/python/google_benchmark/BUILD +0 -40
  336. package/build/_deps/benchmark-src/bindings/python/google_benchmark/__init__.py +0 -162
  337. package/build/_deps/benchmark-src/bindings/python/google_benchmark/benchmark.cc +0 -184
  338. package/build/_deps/benchmark-src/bindings/python/google_benchmark/example.py +0 -136
  339. package/build/_deps/benchmark-src/bindings/python/nanobind.BUILD +0 -17
  340. package/build/_deps/benchmark-src/bindings/python/python_headers.BUILD +0 -6
  341. package/build/_deps/benchmark-src/cmake/AddCXXCompilerFlag.cmake +0 -78
  342. package/build/_deps/benchmark-src/cmake/CXXFeatureCheck.cmake +0 -82
  343. package/build/_deps/benchmark-src/cmake/Config.cmake.in +0 -7
  344. package/build/_deps/benchmark-src/cmake/GetGitVersion.cmake +0 -58
  345. package/build/_deps/benchmark-src/cmake/GoogleTest.cmake +0 -58
  346. package/build/_deps/benchmark-src/cmake/GoogleTest.cmake.in +0 -59
  347. package/build/_deps/benchmark-src/cmake/benchmark.pc.in +0 -12
  348. package/build/_deps/benchmark-src/cmake/gnu_posix_regex.cpp +0 -12
  349. package/build/_deps/benchmark-src/cmake/llvm-toolchain.cmake +0 -8
  350. package/build/_deps/benchmark-src/cmake/posix_regex.cpp +0 -14
  351. package/build/_deps/benchmark-src/cmake/pthread_affinity.cpp +0 -16
  352. package/build/_deps/benchmark-src/cmake/split_list.cmake +0 -3
  353. package/build/_deps/benchmark-src/cmake/std_regex.cpp +0 -10
  354. package/build/_deps/benchmark-src/cmake/steady_clock.cpp +0 -7
  355. package/build/_deps/benchmark-src/cmake/thread_safety_attributes.cpp +0 -4
  356. package/build/_deps/benchmark-src/docs/AssemblyTests.md +0 -149
  357. package/build/_deps/benchmark-src/docs/_config.yml +0 -3
  358. package/build/_deps/benchmark-src/docs/assets/images/icon.png +0 -0
  359. package/build/_deps/benchmark-src/docs/assets/images/icon.xcf +0 -0
  360. package/build/_deps/benchmark-src/docs/assets/images/icon_black.png +0 -0
  361. package/build/_deps/benchmark-src/docs/assets/images/icon_black.xcf +0 -0
  362. package/build/_deps/benchmark-src/docs/dependencies.md +0 -13
  363. package/build/_deps/benchmark-src/docs/index.md +0 -12
  364. package/build/_deps/benchmark-src/docs/perf_counters.md +0 -35
  365. package/build/_deps/benchmark-src/docs/platform_specific_build_instructions.md +0 -48
  366. package/build/_deps/benchmark-src/docs/python_bindings.md +0 -34
  367. package/build/_deps/benchmark-src/docs/random_interleaving.md +0 -13
  368. package/build/_deps/benchmark-src/docs/reducing_variance.md +0 -100
  369. package/build/_deps/benchmark-src/docs/releasing.md +0 -41
  370. package/build/_deps/benchmark-src/docs/tools.md +0 -343
  371. package/build/_deps/benchmark-src/docs/user_guide.md +0 -1266
  372. package/build/_deps/benchmark-src/include/benchmark/benchmark.h +0 -1991
  373. package/build/_deps/benchmark-src/include/benchmark/export.h +0 -47
  374. package/build/_deps/benchmark-src/pyproject.toml +0 -50
  375. package/build/_deps/benchmark-src/setup.py +0 -113
  376. package/build/_deps/benchmark-src/src/CMakeLists.txt +0 -170
  377. package/build/_deps/benchmark-src/src/arraysize.h +0 -33
  378. package/build/_deps/benchmark-src/src/benchmark.cc +0 -779
  379. package/build/_deps/benchmark-src/src/benchmark_api_internal.cc +0 -118
  380. package/build/_deps/benchmark-src/src/benchmark_api_internal.h +0 -87
  381. package/build/_deps/benchmark-src/src/benchmark_main.cc +0 -18
  382. package/build/_deps/benchmark-src/src/benchmark_name.cc +0 -59
  383. package/build/_deps/benchmark-src/src/benchmark_register.cc +0 -520
  384. package/build/_deps/benchmark-src/src/benchmark_register.h +0 -109
  385. package/build/_deps/benchmark-src/src/benchmark_runner.cc +0 -497
  386. package/build/_deps/benchmark-src/src/benchmark_runner.h +0 -131
  387. package/build/_deps/benchmark-src/src/check.cc +0 -11
  388. package/build/_deps/benchmark-src/src/check.h +0 -106
  389. package/build/_deps/benchmark-src/src/colorprint.cc +0 -200
  390. package/build/_deps/benchmark-src/src/colorprint.h +0 -33
  391. package/build/_deps/benchmark-src/src/commandlineflags.cc +0 -298
  392. package/build/_deps/benchmark-src/src/commandlineflags.h +0 -133
  393. package/build/_deps/benchmark-src/src/complexity.cc +0 -244
  394. package/build/_deps/benchmark-src/src/complexity.h +0 -55
  395. package/build/_deps/benchmark-src/src/console_reporter.cc +0 -206
  396. package/build/_deps/benchmark-src/src/counter.cc +0 -80
  397. package/build/_deps/benchmark-src/src/counter.h +0 -32
  398. package/build/_deps/benchmark-src/src/csv_reporter.cc +0 -161
  399. package/build/_deps/benchmark-src/src/cycleclock.h +0 -230
  400. package/build/_deps/benchmark-src/src/internal_macros.h +0 -115
  401. package/build/_deps/benchmark-src/src/json_reporter.cc +0 -320
  402. package/build/_deps/benchmark-src/src/log.h +0 -88
  403. package/build/_deps/benchmark-src/src/mutex.h +0 -155
  404. package/build/_deps/benchmark-src/src/perf_counters.cc +0 -282
  405. package/build/_deps/benchmark-src/src/perf_counters.h +0 -200
  406. package/build/_deps/benchmark-src/src/re.h +0 -158
  407. package/build/_deps/benchmark-src/src/reporter.cc +0 -118
  408. package/build/_deps/benchmark-src/src/statistics.cc +0 -209
  409. package/build/_deps/benchmark-src/src/statistics.h +0 -44
  410. package/build/_deps/benchmark-src/src/string_util.cc +0 -254
  411. package/build/_deps/benchmark-src/src/string_util.h +0 -70
  412. package/build/_deps/benchmark-src/src/sysinfo.cc +0 -855
  413. package/build/_deps/benchmark-src/src/thread_manager.h +0 -63
  414. package/build/_deps/benchmark-src/src/thread_timer.h +0 -86
  415. package/build/_deps/benchmark-src/src/timers.cc +0 -272
  416. package/build/_deps/benchmark-src/src/timers.h +0 -48
  417. package/build/_deps/benchmark-src/test/AssemblyTests.cmake +0 -67
  418. package/build/_deps/benchmark-src/test/BUILD +0 -127
  419. package/build/_deps/benchmark-src/test/CMakeLists.txt +0 -309
  420. package/build/_deps/benchmark-src/test/args_product_test.cc +0 -77
  421. package/build/_deps/benchmark-src/test/basic_test.cc +0 -180
  422. package/build/_deps/benchmark-src/test/benchmark_gtest.cc +0 -169
  423. package/build/_deps/benchmark-src/test/benchmark_min_time_flag_iters_test.cc +0 -66
  424. package/build/_deps/benchmark-src/test/benchmark_min_time_flag_time_test.cc +0 -90
  425. package/build/_deps/benchmark-src/test/benchmark_name_gtest.cc +0 -82
  426. package/build/_deps/benchmark-src/test/benchmark_random_interleaving_gtest.cc +0 -126
  427. package/build/_deps/benchmark-src/test/benchmark_setup_teardown_test.cc +0 -157
  428. package/build/_deps/benchmark-src/test/benchmark_test.cc +0 -274
  429. package/build/_deps/benchmark-src/test/clobber_memory_assembly_test.cc +0 -64
  430. package/build/_deps/benchmark-src/test/commandlineflags_gtest.cc +0 -228
  431. package/build/_deps/benchmark-src/test/complexity_test.cc +0 -228
  432. package/build/_deps/benchmark-src/test/cxx03_test.cc +0 -62
  433. package/build/_deps/benchmark-src/test/diagnostics_test.cc +0 -91
  434. package/build/_deps/benchmark-src/test/display_aggregates_only_test.cc +0 -45
  435. package/build/_deps/benchmark-src/test/donotoptimize_assembly_test.cc +0 -201
  436. package/build/_deps/benchmark-src/test/donotoptimize_test.cc +0 -69
  437. package/build/_deps/benchmark-src/test/filter_test.cc +0 -117
  438. package/build/_deps/benchmark-src/test/fixture_test.cc +0 -51
  439. package/build/_deps/benchmark-src/test/internal_threading_test.cc +0 -185
  440. package/build/_deps/benchmark-src/test/link_main_test.cc +0 -9
  441. package/build/_deps/benchmark-src/test/map_test.cc +0 -59
  442. package/build/_deps/benchmark-src/test/memory_manager_test.cc +0 -47
  443. package/build/_deps/benchmark-src/test/min_time_parse_gtest.cc +0 -30
  444. package/build/_deps/benchmark-src/test/multiple_ranges_test.cc +0 -96
  445. package/build/_deps/benchmark-src/test/options_test.cc +0 -77
  446. package/build/_deps/benchmark-src/test/output_test.h +0 -211
  447. package/build/_deps/benchmark-src/test/output_test_helper.cc +0 -519
  448. package/build/_deps/benchmark-src/test/perf_counters_gtest.cc +0 -307
  449. package/build/_deps/benchmark-src/test/perf_counters_test.cc +0 -92
  450. package/build/_deps/benchmark-src/test/register_benchmark_test.cc +0 -196
  451. package/build/_deps/benchmark-src/test/repetitions_test.cc +0 -214
  452. package/build/_deps/benchmark-src/test/report_aggregates_only_test.cc +0 -41
  453. package/build/_deps/benchmark-src/test/reporter_output_test.cc +0 -1130
  454. package/build/_deps/benchmark-src/test/skip_with_error_test.cc +0 -199
  455. package/build/_deps/benchmark-src/test/spec_arg_test.cc +0 -105
  456. package/build/_deps/benchmark-src/test/spec_arg_verbosity_test.cc +0 -43
  457. package/build/_deps/benchmark-src/test/state_assembly_test.cc +0 -68
  458. package/build/_deps/benchmark-src/test/statistics_gtest.cc +0 -35
  459. package/build/_deps/benchmark-src/test/string_util_gtest.cc +0 -199
  460. package/build/_deps/benchmark-src/test/templated_fixture_test.cc +0 -28
  461. package/build/_deps/benchmark-src/test/time_unit_gtest.cc +0 -37
  462. package/build/_deps/benchmark-src/test/user_counters_tabular_test.cc +0 -558
  463. package/build/_deps/benchmark-src/test/user_counters_test.cc +0 -561
  464. package/build/_deps/benchmark-src/test/user_counters_thousands_test.cc +0 -186
  465. package/build/_deps/benchmark-src/tools/BUILD.bazel +0 -19
  466. package/build/_deps/benchmark-src/tools/compare.py +0 -432
  467. package/build/_deps/benchmark-src/tools/gbench/Inputs/test1_run1.json +0 -127
  468. package/build/_deps/benchmark-src/tools/gbench/Inputs/test1_run2.json +0 -127
  469. package/build/_deps/benchmark-src/tools/gbench/Inputs/test2_run.json +0 -81
  470. package/build/_deps/benchmark-src/tools/gbench/Inputs/test3_run0.json +0 -65
  471. package/build/_deps/benchmark-src/tools/gbench/Inputs/test3_run1.json +0 -65
  472. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run.json +0 -96
  473. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run0.json +0 -21
  474. package/build/_deps/benchmark-src/tools/gbench/Inputs/test4_run1.json +0 -21
  475. package/build/_deps/benchmark-src/tools/gbench/__init__.py +0 -8
  476. package/build/_deps/benchmark-src/tools/gbench/report.py +0 -1201
  477. package/build/_deps/benchmark-src/tools/gbench/util.py +0 -203
  478. package/build/_deps/benchmark-src/tools/libpfm.BUILD.bazel +0 -22
  479. package/build/_deps/benchmark-src/tools/requirements.txt +0 -2
  480. package/build/_deps/benchmark-src/tools/strip_asm.py +0 -151
  481. package/build/_deps/benchmark-subbuild/CMakeCache.txt +0 -133
  482. package/build/_deps/benchmark-subbuild/CMakeFiles/4.0.3/CMakeSystem.cmake +0 -15
  483. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeConfigureLog.yaml +0 -11
  484. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeDirectoryInformation.cmake +0 -16
  485. package/build/_deps/benchmark-subbuild/CMakeFiles/CMakeRuleHashes.txt +0 -11
  486. package/build/_deps/benchmark-subbuild/CMakeFiles/InstallScripts.json +0 -7
  487. package/build/_deps/benchmark-subbuild/CMakeFiles/Makefile.cmake +0 -52
  488. package/build/_deps/benchmark-subbuild/CMakeFiles/Makefile2 +0 -122
  489. package/build/_deps/benchmark-subbuild/CMakeFiles/TargetDirectories.txt +0 -3
  490. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate-complete +0 -0
  491. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/DependInfo.cmake +0 -22
  492. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/Labels.json +0 -46
  493. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/Labels.txt +0 -14
  494. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/build.make +0 -162
  495. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/cmake_clean.cmake +0 -17
  496. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/compiler_depend.make +0 -2
  497. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/compiler_depend.ts +0 -2
  498. package/build/_deps/benchmark-subbuild/CMakeFiles/benchmark-populate.dir/progress.make +0 -10
  499. package/build/_deps/benchmark-subbuild/CMakeFiles/cmake.check_cache +0 -1
  500. package/build/_deps/benchmark-subbuild/CMakeFiles/progress.marks +0 -1
  501. package/build/_deps/benchmark-subbuild/CMakeLists.txt +0 -42
  502. package/build/_deps/benchmark-subbuild/Makefile +0 -162
  503. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-build +0 -0
  504. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-configure +0 -0
  505. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-done +0 -0
  506. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-download +0 -0
  507. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-gitclone-lastrun.txt +0 -15
  508. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-gitinfo.txt +0 -15
  509. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-install +0 -0
  510. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-mkdir +0 -0
  511. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-patch +0 -0
  512. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-patch-info.txt +0 -6
  513. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-test +0 -0
  514. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/src/benchmark-populate-stamp/benchmark-populate-update-info.txt +0 -7
  515. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-cfgcmd.txt +0 -1
  516. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-gitclone.cmake +0 -87
  517. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-gitupdate.cmake +0 -317
  518. package/build/_deps/benchmark-subbuild/benchmark-populate-prefix/tmp/benchmark-populate-mkdirs.cmake +0 -27
  519. package/build/_deps/benchmark-subbuild/cmake_install.cmake +0 -56
  520. package/build/bin/avl-rb-range-search-benchmark +0 -0
  521. package/build/bin/avl-tree-benchmark +0 -0
  522. package/build/bin/deque-benchmark +0 -0
  523. package/build/bin/doubly-linked-list-benchmark +0 -0
  524. package/build/bin/hash-map-benchmark +0 -0
  525. package/build/bin/heap-benchmark +0 -0
  526. package/build/bin/priority-queue-benchmark +0 -0
  527. package/build/bin/queue-benchmark +0 -0
  528. package/build/bin/red-black-tree-benchmark +0 -0
  529. package/build/bin/singly-linked-list-benchmark +0 -0
  530. package/build/bin/stack-benchmark +0 -0
  531. package/build/bin/tree-map-benchmark +0 -0
  532. package/build/bin/tree-multi-map-benchmark +0 -0
  533. package/build/bin/tree-multi-set-benchmark +0 -0
  534. package/build/bin/tree-set-benchmark +0 -0
  535. package/build/cmake_install.cmake +0 -66
  536. package/dist/cjs/index.cjs.map +0 -1
  537. package/dist/cjs-legacy/index.cjs.map +0 -1
  538. package/dist/esm/index.mjs.map +0 -1
  539. package/dist/esm-legacy/index.mjs.map +0 -1
  540. package/dist/umd/data-structure-typed.js.map +0 -1
  541. package/dist/umd/data-structure-typed.min.js.map +0 -1
  542. package/eslint.config.mjs +0 -73
  543. package/test/config.ts +0 -4
  544. package/test/integration/all-in-one.test.ts +0 -110
  545. package/test/integration/avl-tree.test.ts +0 -127
  546. package/test/integration/bst.test.ts +0 -385
  547. package/test/integration/compile.test.mjs +0 -159
  548. package/test/integration/compile.test.ts +0 -176
  549. package/test/integration/heap.test.js +0 -21
  550. package/test/integration/index.html +0 -462
  551. package/test/performance/benchmark-runner-enhanced.mjs +0 -818
  552. package/test/performance/cmake-benchmark-runner.mjs +0 -234
  553. package/test/performance/data-structures/binary-tree/avl-rb-range-search.test.cpp +0 -112
  554. package/test/performance/data-structures/binary-tree/avl-rb-range-search.test.mjs +0 -51
  555. package/test/performance/data-structures/binary-tree/avl-tree.test.cpp +0 -181
  556. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +0 -138
  557. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.mjs +0 -85
  558. package/test/performance/data-structures/binary-tree/binary-tree.test.mjs +0 -100
  559. package/test/performance/data-structures/binary-tree/bst.test.mjs +0 -61
  560. package/test/performance/data-structures/binary-tree/red-black-tree-cjs.test.mjs +0 -259
  561. package/test/performance/data-structures/binary-tree/red-black-tree.test.cpp +0 -213
  562. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +0 -275
  563. package/test/performance/data-structures/binary-tree/tree-map.test.cpp +0 -129
  564. package/test/performance/data-structures/binary-tree/tree-map.test.mjs +0 -171
  565. package/test/performance/data-structures/binary-tree/tree-multi-map.test.cpp +0 -205
  566. package/test/performance/data-structures/binary-tree/tree-multi-map.test.mjs +0 -106
  567. package/test/performance/data-structures/binary-tree/tree-multi-set.test.cpp +0 -217
  568. package/test/performance/data-structures/binary-tree/tree-multi-set.test.mjs +0 -91
  569. package/test/performance/data-structures/binary-tree/tree-set.test.cpp +0 -127
  570. package/test/performance/data-structures/binary-tree/tree-set.test.mjs +0 -174
  571. package/test/performance/data-structures/comparison/comparison.test.mjs +0 -99
  572. package/test/performance/data-structures/graph/directed-graph.test.mjs +0 -38
  573. package/test/performance/data-structures/hash/hash-map.test.cpp +0 -183
  574. package/test/performance/data-structures/hash/hash-map.test.mjs +0 -187
  575. package/test/performance/data-structures/heap/heap.test.cpp +0 -61
  576. package/test/performance/data-structures/heap/heap.test.mjs +0 -31
  577. package/test/performance/data-structures/linked-list/doubly-linked-list.test.cpp +0 -84
  578. package/test/performance/data-structures/linked-list/doubly-linked-list.test.mjs +0 -125
  579. package/test/performance/data-structures/linked-list/singly-linked-list.test.cpp +0 -77
  580. package/test/performance/data-structures/linked-list/singly-linked-list.test.mjs +0 -84
  581. package/test/performance/data-structures/priority-queue/max-priority-queue.test.mjs +0 -40
  582. package/test/performance/data-structures/priority-queue/priority-queue.test.cpp +0 -59
  583. package/test/performance/data-structures/priority-queue/priority-queue.test.mjs +0 -64
  584. package/test/performance/data-structures/queue/deque.test.cpp +0 -119
  585. package/test/performance/data-structures/queue/deque.test.mjs +0 -144
  586. package/test/performance/data-structures/queue/queue.test.cpp +0 -59
  587. package/test/performance/data-structures/queue/queue.test.mjs +0 -77
  588. package/test/performance/data-structures/stack/stack.test.cpp +0 -40
  589. package/test/performance/data-structures/stack/stack.test.mjs +0 -69
  590. package/test/performance/data-structures/trie/trie.test.mjs +0 -43
  591. package/test/performance/reportor-enhanced.mjs +0 -871
  592. package/test/performance/runner-config.json +0 -51
  593. package/test/types/index.ts +0 -1
  594. package/test/types/utils/big-o.ts +0 -1
  595. package/test/types/utils/index.ts +0 -2
  596. package/test/types/utils/json2html.ts +0 -5
  597. package/test/unit/data-structures/base/iterable-element-base.coverage.test.ts +0 -106
  598. package/test/unit/data-structures/base/iterable-element-base.more-branches.coverage.test.ts +0 -61
  599. package/test/unit/data-structures/base/linear-base.array.coverage.test.ts +0 -168
  600. package/test/unit/data-structures/base/linear-base.concat-else.coverage.test.ts +0 -82
  601. package/test/unit/data-structures/base/linear-base.coverage.test.ts +0 -72
  602. package/test/unit/data-structures/base/linear-base.more-branches.coverage.test.ts +0 -414
  603. package/test/unit/data-structures/binary-tree/avl-tree-node.familyPosition-root-left.coverage.test.ts +0 -17
  604. package/test/unit/data-structures/binary-tree/avl-tree.more-branches-2.coverage.test.ts +0 -99
  605. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -729
  606. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +0 -345
  607. package/test/unit/data-structures/binary-tree/binary-indexed-tree.more-branches.coverage.test.ts +0 -18
  608. package/test/unit/data-structures/binary-tree/binary-tree.more-branches.coverage.test.ts +0 -56
  609. package/test/unit/data-structures/binary-tree/binary-tree.remaining-branches.coverage.test.ts +0 -232
  610. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +0 -1912
  611. package/test/unit/data-structures/binary-tree/bst.bound-by-predicate.coverage.test.ts +0 -33
  612. package/test/unit/data-structures/binary-tree/bst.coverage.test.ts +0 -94
  613. package/test/unit/data-structures/binary-tree/bst.deletebykey.coverage.test.ts +0 -70
  614. package/test/unit/data-structures/binary-tree/bst.deletewhere.coverage.test.ts +0 -37
  615. package/test/unit/data-structures/binary-tree/bst.floor-lower-predicate.coverage.test.ts +0 -29
  616. package/test/unit/data-structures/binary-tree/bst.floor-setmany.coverage.test.ts +0 -72
  617. package/test/unit/data-structures/binary-tree/bst.getnode.range-ensure.coverage.test.ts +0 -22
  618. package/test/unit/data-structures/binary-tree/bst.misc-branches.coverage.test.ts +0 -100
  619. package/test/unit/data-structures/binary-tree/bst.more-branches-2.coverage.test.ts +0 -133
  620. package/test/unit/data-structures/binary-tree/bst.more-branches-3.coverage.test.ts +0 -45
  621. package/test/unit/data-structures/binary-tree/bst.more-branches-4.coverage.test.ts +0 -36
  622. package/test/unit/data-structures/binary-tree/bst.more-branches-5.coverage.test.ts +0 -40
  623. package/test/unit/data-structures/binary-tree/bst.more.coverage.test.ts +0 -39
  624. package/test/unit/data-structures/binary-tree/bst.node-family.coverage.test.ts +0 -29
  625. package/test/unit/data-structures/binary-tree/bst.range-pruning.coverage.test.ts +0 -43
  626. package/test/unit/data-structures/binary-tree/bst.search-fastpath.coverage.test.ts +0 -30
  627. package/test/unit/data-structures/binary-tree/bst.test.ts +0 -3472
  628. package/test/unit/data-structures/binary-tree/data/cost-of-living-by-country.ts +0 -259
  629. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -219
  630. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-corruption-repair.coverage.test.ts +0 -66
  631. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-max-update.coverage.test.ts +0 -18
  632. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-null.coverage.test.ts +0 -53
  633. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-stale-cache.coverage.test.ts +0 -25
  634. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-update.coverage.test.ts +0 -23
  635. package/test/unit/data-structures/binary-tree/red-black-tree.cache-delete.coverage.test.ts +0 -49
  636. package/test/unit/data-structures/binary-tree/red-black-tree.cache-edge.coverage.test.ts +0 -37
  637. package/test/unit/data-structures/binary-tree/red-black-tree.cache-stale-insert.coverage.test.ts +0 -39
  638. package/test/unit/data-structures/binary-tree/red-black-tree.coverage.test.ts +0 -334
  639. package/test/unit/data-structures/binary-tree/red-black-tree.delete-fixup.coverage.test.ts +0 -68
  640. package/test/unit/data-structures/binary-tree/red-black-tree.delete-successor.coverage.test.ts +0 -75
  641. package/test/unit/data-structures/binary-tree/red-black-tree.factories.coverage.test.ts +0 -26
  642. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-compare-update.coverage.test.ts +0 -74
  643. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-no-update.coverage.test.ts +0 -44
  644. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-nullish.coverage.test.ts +0 -61
  645. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-defined.coverage.test.ts +0 -35
  646. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-undefined.coverage.test.ts +0 -43
  647. package/test/unit/data-structures/binary-tree/red-black-tree.hint-more.coverage.test.ts +0 -99
  648. package/test/unit/data-structures/binary-tree/red-black-tree.hint.coverage.test.ts +0 -60
  649. package/test/unit/data-structures/binary-tree/red-black-tree.insert-cache-nullish.coverage.test.ts +0 -29
  650. package/test/unit/data-structures/binary-tree/red-black-tree.insert-header-parent-nullish.coverage.test.ts +0 -17
  651. package/test/unit/data-structures/binary-tree/red-black-tree.internal-walk.coverage.test.ts +0 -57
  652. package/test/unit/data-structures/binary-tree/red-black-tree.minmax-cache.test.ts +0 -65
  653. package/test/unit/data-structures/binary-tree/red-black-tree.misc-inputs.coverage.test.ts +0 -17
  654. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-2.coverage.test.ts +0 -121
  655. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-3.coverage.test.ts +0 -55
  656. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-4.coverage.test.ts +0 -44
  657. package/test/unit/data-structures/binary-tree/red-black-tree.predsucc.coverage.test.ts +0 -40
  658. package/test/unit/data-structures/binary-tree/red-black-tree.remaining-branches.coverage.test.ts +0 -123
  659. package/test/unit/data-structures/binary-tree/red-black-tree.set-inputs.coverage.test.ts +0 -64
  660. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-parent-cache.coverage.test.ts +0 -79
  661. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-remaining.coverage.test.ts +0 -44
  662. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-uncovered.coverage.test.ts +0 -74
  663. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +0 -936
  664. package/test/unit/data-structures/binary-tree/red-black-tree.update-branches.coverage.test.ts +0 -30
  665. package/test/unit/data-structures/binary-tree/segment-tree.more-branches.coverage.test.ts +0 -31
  666. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +0 -104
  667. package/test/unit/data-structures/binary-tree/tree-map.test.ts +0 -270
  668. package/test/unit/data-structures/binary-tree/tree-multi-map.coverage.test.ts +0 -245
  669. package/test/unit/data-structures/binary-tree/tree-multi-map.legacy.test.ts.skip +0 -1115
  670. package/test/unit/data-structures/binary-tree/tree-multi-map.more-branches-2.coverage.test.ts.skip +0 -59
  671. package/test/unit/data-structures/binary-tree/tree-multi-map.rfc.test.ts +0 -99
  672. package/test/unit/data-structures/binary-tree/tree-multi-map.simplified.test.ts +0 -482
  673. package/test/unit/data-structures/binary-tree/tree-multi-set.test.ts +0 -545
  674. package/test/unit/data-structures/binary-tree/tree-set.test.ts +0 -187
  675. package/test/unit/data-structures/graph/abstract-graph.more-branches-2.coverage.test.ts +0 -40
  676. package/test/unit/data-structures/graph/abstract-graph.more-branches-3.coverage.test.ts +0 -65
  677. package/test/unit/data-structures/graph/abstract-graph.more-branches-4.coverage.test.ts +0 -98
  678. package/test/unit/data-structures/graph/abstract-graph.more-branches-5.coverage.test.ts +0 -51
  679. package/test/unit/data-structures/graph/abstract-graph.more-branches.coverage.test.ts +0 -62
  680. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -117
  681. package/test/unit/data-structures/graph/directed-graph.more-branches-2.coverage.test.ts +0 -38
  682. package/test/unit/data-structures/graph/directed-graph.more-branches-3.coverage.test.ts +0 -25
  683. package/test/unit/data-structures/graph/directed-graph.more-branches.coverage.test.ts +0 -82
  684. package/test/unit/data-structures/graph/directed-graph.test.ts +0 -1185
  685. package/test/unit/data-structures/graph/map-graph.more-branches.coverage.test.ts +0 -22
  686. package/test/unit/data-structures/graph/map-graph.test.ts +0 -148
  687. package/test/unit/data-structures/graph/overall.test.ts +0 -49
  688. package/test/unit/data-structures/graph/salty-edges.json +0 -875
  689. package/test/unit/data-structures/graph/salty-vertexes.json +0 -200
  690. package/test/unit/data-structures/graph/undirected-graph.more-branches-2.coverage.test.ts +0 -35
  691. package/test/unit/data-structures/graph/undirected-graph.more-branches.coverage.test.ts +0 -87
  692. package/test/unit/data-structures/graph/undirected-graph.test.ts +0 -782
  693. package/test/unit/data-structures/hash/hash-map.more-branches.coverage.test.ts +0 -64
  694. package/test/unit/data-structures/hash/hash-map.test.ts +0 -1125
  695. package/test/unit/data-structures/hash/hash-map.toEntryFn-branch.coverage.test.ts +0 -9
  696. package/test/unit/data-structures/heap/heap.misc-branches.coverage.test.ts +0 -110
  697. package/test/unit/data-structures/heap/heap.remaining-branches.coverage.test.ts +0 -22
  698. package/test/unit/data-structures/heap/heap.test.ts +0 -760
  699. package/test/unit/data-structures/heap/max-heap.coverage.test.ts +0 -29
  700. package/test/unit/data-structures/heap/max-heap.test.ts +0 -98
  701. package/test/unit/data-structures/heap/min-heap.test.ts +0 -117
  702. package/test/unit/data-structures/linked-list/doubly-linked-list.more-branches.coverage.test.ts +0 -72
  703. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -1150
  704. package/test/unit/data-structures/linked-list/linked-list.test.ts +0 -8
  705. package/test/unit/data-structures/linked-list/linked-list.unshiftMany-else.coverage.test.ts +0 -15
  706. package/test/unit/data-structures/linked-list/singly-linked-list.coverage.test.ts +0 -221
  707. package/test/unit/data-structures/linked-list/singly-linked-list.more-branches.coverage.test.ts +0 -86
  708. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -836
  709. package/test/unit/data-structures/linked-list/skip-linked-list.more-branches.coverage.test.ts +0 -31
  710. package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +0 -13
  711. package/test/unit/data-structures/linked-list/skip-list.test.ts +0 -86
  712. package/test/unit/data-structures/matrix/matrix.more-branches.coverage.test.ts +0 -81
  713. package/test/unit/data-structures/matrix/matrix.pivotElement-nullish.coverage.test.ts +0 -28
  714. package/test/unit/data-structures/matrix/matrix.test.ts +0 -377
  715. package/test/unit/data-structures/matrix/navigator.test.ts +0 -244
  716. package/test/unit/data-structures/priority-queue/max-priority-queue.more-branches.coverage.test.ts +0 -10
  717. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +0 -160
  718. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +0 -78
  719. package/test/unit/data-structures/priority-queue/priority-queue.coverage.test.ts +0 -21
  720. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -101
  721. package/test/unit/data-structures/queue/deque.coverage.test.ts +0 -173
  722. package/test/unit/data-structures/queue/deque.more-branches-2.coverage.test.ts +0 -39
  723. package/test/unit/data-structures/queue/deque.more-branches-3.coverage.test.ts +0 -9
  724. package/test/unit/data-structures/queue/deque.more-branches.coverage.test.ts +0 -95
  725. package/test/unit/data-structures/queue/deque.test.ts +0 -936
  726. package/test/unit/data-structures/queue/queue.coverage.test.ts +0 -138
  727. package/test/unit/data-structures/queue/queue.more-branches-2.coverage.test.ts +0 -27
  728. package/test/unit/data-structures/queue/queue.test.ts +0 -703
  729. package/test/unit/data-structures/stack/stack.coverage.test.ts +0 -112
  730. package/test/unit/data-structures/stack/stack.test.ts +0 -438
  731. package/test/unit/data-structures/tree/tree.more-branches.coverage.test.ts +0 -9
  732. package/test/unit/data-structures/tree/tree.test.ts +0 -58
  733. package/test/unit/data-structures/trie/trie.more-branches-2.coverage.test.ts +0 -51
  734. package/test/unit/data-structures/trie/trie.test.ts +0 -1181
  735. package/test/unit/unrestricted-interconversion.test.ts +0 -299
  736. package/test/unit/utils/utils.test.ts +0 -174
  737. package/test/utils/array.ts +0 -5517
  738. package/test/utils/big-o.ts +0 -228
  739. package/test/utils/console.ts +0 -31
  740. package/test/utils/index.ts +0 -8
  741. package/test/utils/is.ts +0 -56
  742. package/test/utils/json2html.ts +0 -164
  743. package/test/utils/number.ts +0 -13
  744. package/test/utils/patch.ts +0 -33
  745. package/test/utils/perf.mjs +0 -34
  746. package/test/utils/performanc.ts +0 -7
  747. package/test/utils/string.ts +0 -49
  748. package/tsconfig.types.json +0 -15
  749. package/tsup.config.js +0 -63
  750. package/tsup.umd.config.js +0 -29
@@ -1,936 +0,0 @@
1
- import { IBinaryTree, RedBlackTree, RedBlackTreeNode } from '../../../../src';
2
- import { getRandomInt, getRandomIntArray, magnitude } from '../../../utils';
3
- import { OrderedMap } from 'js-sdsl';
4
-
5
- import { isDebugTest } from '../../../config';
6
- import { costOfLiving } from './data/cost-of-living-by-country';
7
-
8
- const isDebug = isDebugTest;
9
- // const isDebug = true;
10
-
11
- describe('RedBlackTree 1', () => {
12
- let rbTree: RedBlackTree<number>;
13
-
14
- beforeEach(() => {
15
- rbTree = new RedBlackTree<number>();
16
- });
17
-
18
- describe('add and getNode', () => {
19
- it('should add and find a node in the rbTree', () => {
20
- rbTree.set(10);
21
- rbTree.set(20);
22
- rbTree.set(5);
23
-
24
- expect(rbTree.getNode(10)).toBeInstanceOf(RedBlackTreeNode);
25
- expect(rbTree.getNode(20)).toBeInstanceOf(RedBlackTreeNode);
26
- expect(rbTree.getNode(5)).toBeInstanceOf(RedBlackTreeNode);
27
- expect(rbTree.getNode(15)).toBe(undefined);
28
- });
29
-
30
- it('should add and find nodes with negative keys', () => {
31
- rbTree.set(-10);
32
- rbTree.set(-20);
33
-
34
- expect(rbTree.getNode(-10)).toBeInstanceOf(RedBlackTreeNode);
35
- expect(rbTree.getNode(-20)).toBeInstanceOf(RedBlackTreeNode);
36
- });
37
- });
38
-
39
- describe('deleteNode', () => {
40
- it('should delete a node from the rbTree', () => {
41
- rbTree.set(10);
42
- rbTree.set(20);
43
- rbTree.set(5);
44
- rbTree.delete(20);
45
-
46
- expect(rbTree.getNode(20)).toBe(undefined);
47
- });
48
-
49
- it('should handle deleting a non-existent node', () => {
50
- rbTree.set(10);
51
- rbTree.set(20);
52
- rbTree.set(5);
53
- rbTree.delete(15);
54
-
55
- expect(rbTree.getNode(15)).toBe(undefined);
56
- });
57
-
58
- it('should getNode performance O(log n)', () => {
59
- for (let i = 0; i < 10; i++) rbTree.set(i);
60
- rbTree.getNode(6);
61
- });
62
- });
63
-
64
- describe('minimum', () => {
65
- it('should find the minimum node in the rbTree', () => {
66
- rbTree.set(10);
67
- rbTree.set(20);
68
- rbTree.set(5);
69
- rbTree.set(15);
70
- rbTree.set(3);
71
-
72
- const minNode = rbTree.getLeftMost(node => node, rbTree.root);
73
- expect(minNode?.key).toBe(3);
74
- });
75
-
76
- it('should handle an empty rbTree', () => {
77
- const minNode = rbTree.getLeftMost(node => node, rbTree.root);
78
- expect(minNode).toBe(undefined);
79
- });
80
- });
81
-
82
- describe('getRightMost', () => {
83
- it('should find the getRightMost node in the rbTree', () => {
84
- rbTree.set(10);
85
- rbTree.set(20);
86
- rbTree.set(5);
87
- rbTree.set(15);
88
- rbTree.set(25);
89
-
90
- const maxNode = rbTree.getRightMost(node => node, rbTree.root);
91
- expect(maxNode?.key).toBe(25);
92
- });
93
-
94
- it('should handle an empty rbTree', () => {
95
- const maxNode = rbTree.getRightMost(node => node, rbTree.root);
96
- expect(maxNode).toBe(undefined);
97
- });
98
- });
99
-
100
- describe('getSuccessor', () => {
101
- it('should find the getSuccessor of a node', () => {
102
- rbTree.set(10);
103
- rbTree.set(20);
104
- rbTree.set(5);
105
- rbTree.set(15);
106
- rbTree.set(25);
107
-
108
- const node = rbTree.getNode(15);
109
- const successorNode = rbTree.getSuccessor(node!);
110
-
111
- expect(successorNode?.key).toBe(20);
112
- });
113
-
114
- it('should handle a node with no getSuccessor', () => {
115
- rbTree.set(10);
116
- rbTree.set(5);
117
-
118
- const node = rbTree.getNode(10);
119
- const successorNode = rbTree.getSuccessor(node!);
120
- // TODO not sure if it should be undefined or rbTree.NIL
121
- expect(successorNode).toBe(undefined);
122
- });
123
- });
124
-
125
- describe('getPredecessor', () => {
126
- it('should find the getPredecessor of a node', () => {
127
- rbTree.set(10);
128
- rbTree.set(20);
129
- rbTree.set(5);
130
- rbTree.set(15);
131
- rbTree.set(25);
132
-
133
- const node = rbTree.getNode(20);
134
- const predecessorNode = rbTree.getPredecessor(node!);
135
-
136
- expect(predecessorNode?.key).toBe(15);
137
- });
138
-
139
- it('should handle a node with no getPredecessor', () => {
140
- rbTree.set(10);
141
- rbTree.set(20);
142
-
143
- const node = rbTree.getNode(20);
144
- const predecessorNode = rbTree.getPredecessor(node!);
145
- // TODO not sure if it should be rbTree.NIL or something else.
146
- expect(predecessorNode).toBe(rbTree.getNode(20));
147
- });
148
- });
149
-
150
- it('should the clone method', () => {
151
- function checkTreeStructure(rbTree: IBinaryTree<string, number>) {
152
- expect(rbTree.size).toBe(4);
153
- expect(rbTree.root?.key).toBe('2');
154
- expect(rbTree.root?.left?.key).toBe('1');
155
- expect(rbTree.root?.left?.left?.key).toBe(NaN);
156
- expect(rbTree.root?.left?.right?.key).toBe(NaN);
157
- expect(rbTree.root?.right?.key).toBe('4');
158
- expect(rbTree.root?.right?.left?.key).toBe(NaN);
159
- expect(rbTree.root?.right?.right?.key).toBe('5');
160
- }
161
-
162
- const rbTree = new RedBlackTree<string, number>();
163
- rbTree.setMany([
164
- ['2', 2],
165
- ['4', 4],
166
- ['5', 5],
167
- ['3', 3],
168
- ['1', 1]
169
- ]);
170
- expect(rbTree.size).toBe(5);
171
- expect(rbTree.root?.key).toBe('2');
172
- expect(rbTree.root?.left?.key).toBe('1');
173
- expect(rbTree.root?.left?.left?.key).toBe(NaN);
174
- expect(rbTree.root?.left?.right?.key).toBe(NaN);
175
- expect(rbTree.root?.right?.key).toBe('4');
176
- expect(rbTree.root?.right?.left?.key).toBe('3');
177
- expect(rbTree.root?.right?.right?.key).toBe('5');
178
- rbTree.delete('3');
179
- checkTreeStructure(rbTree);
180
- const cloned = rbTree.clone();
181
- checkTreeStructure(cloned);
182
- cloned.delete('1');
183
- expect(rbTree.size).toBe(4);
184
- expect(cloned.size).toBe(3);
185
- });
186
-
187
- it('should replace value', () => {
188
- const rbTree = new RedBlackTree<number, string>([4, 5, [1, '1'], 2, 3], { isMapMode: false });
189
- expect(rbTree.get(1)).toBe('1');
190
- expect(rbTree.getNode(1)?.value).toBe('1');
191
- rbTree.set(1, 'a');
192
- expect(rbTree.get(1)).toBe('a');
193
- rbTree.set([1, 'b']);
194
- expect(rbTree.getNode(1)?.value).toBe('b');
195
- expect(rbTree.get(1)).toBe('b');
196
- const treeMap = new RedBlackTree<number>([4, 5, [1, '1'], 2, 3]);
197
- expect(treeMap.get(1)).toBe('1');
198
- expect(treeMap.getNode(1)?.value).toBe('1');
199
- treeMap.set(1, 'a');
200
- expect(treeMap.get(1)).toBe('a');
201
- treeMap.set([1, 'b']);
202
- expect(treeMap.getNode(1)?.value).toBe('b');
203
- expect(treeMap.get(1)).toBe('b');
204
- });
205
- });
206
-
207
- describe('RedBlackTree 2', () => {
208
- let rbTree: RedBlackTree<number>;
209
-
210
- beforeEach(() => {
211
- rbTree = new RedBlackTree<number>();
212
- });
213
-
214
- it('should add nodes into the rbTree', () => {
215
- rbTree.set(10);
216
- expect(rbTree.getNode(10)).toBeDefined();
217
- rbTree.set(20);
218
- expect(rbTree.getNode(20)).toBeDefined();
219
- rbTree.set(5);
220
- expect(rbTree.getNode(5)).toBeDefined();
221
- });
222
-
223
- it('should delete nodes from the rbTree', () => {
224
- rbTree.set(10);
225
- rbTree.set(20);
226
- rbTree.set(5);
227
- rbTree.delete(20);
228
- expect(rbTree.getNode(20)).toBe(undefined);
229
- });
230
-
231
- it('should get the successor of a node', () => {
232
- rbTree.set(10);
233
- rbTree.set(20);
234
- const node = rbTree.getNode(10);
235
- const successor = rbTree.getSuccessor(node!);
236
- expect(successor?.key).toBe(20);
237
- });
238
-
239
- it('should get the predecessor of a node', () => {
240
- rbTree.set(10);
241
- rbTree.set(20);
242
- const node = rbTree.getNode(20);
243
- const predecessor = rbTree.getPredecessor(node!);
244
- expect(predecessor?.key).toBe(20);
245
- });
246
-
247
- it('should rotate nodes to the left', () => {
248
- rbTree.set(10);
249
- rbTree.set(20);
250
- rbTree.set(5);
251
- const node = rbTree.getNode(10);
252
- rbTree.set(15);
253
- // Verify that rotation has occurred
254
- expect(node?.left?.key).toBe(5);
255
- expect(node?.right?.key).toBe(20);
256
- });
257
-
258
- it('should rotate nodes to the right', () => {
259
- rbTree.set(10);
260
- rbTree.set(20);
261
- rbTree.set(5);
262
- const node = rbTree.getNode(20);
263
- rbTree.set(25);
264
- // Verify that rotation has occurred
265
- expect(node?.left?.key).toBeNaN();
266
- expect(node?.right?.key).toBe(25);
267
- });
268
-
269
- it('should all node attributes fully conform to the red-black rbTree standards.', () => {
270
- rbTree.set(10);
271
- rbTree.set(20);
272
- rbTree.set(5);
273
- rbTree.set(15);
274
- rbTree.set(21);
275
- rbTree.set(6);
276
- rbTree.set(2);
277
-
278
- let node10F = rbTree.getNode(10);
279
- let node20F = rbTree.getNode(20);
280
- let node5F = rbTree.getNode(5);
281
- let node15F = rbTree.getNode(15);
282
- let node21F = rbTree.getNode(21);
283
- let node6F = rbTree.getNode(6);
284
- let node2F = rbTree.getNode(2);
285
- expect(node10F?.key).toBe(10);
286
- expect(node10F?.color).toBe('BLACK');
287
- expect(node10F?.left).toBe(node5F);
288
- expect(node10F?.right).toBe(node20F);
289
- expect(node10F?.parent).toBe(undefined);
290
- expect(node20F?.key).toBe(20);
291
- expect(node20F?.color).toBe('BLACK');
292
- expect(node20F?.left).toBe(node15F);
293
- expect(node20F?.right).toBe(node21F);
294
- expect(node20F?.parent).toBe(node10F);
295
- expect(node5F?.key).toBe(5);
296
- expect(node5F?.color).toBe('BLACK');
297
- expect(node5F?.left).toBe(node2F);
298
- expect(node5F?.right).toBe(node6F);
299
- expect(node5F?.parent).toBe(node10F);
300
- expect(node15F?.key).toBe(15);
301
- expect(node15F?.color).toBe('RED');
302
- expect(node15F?.left).toBe(rbTree.NIL);
303
- expect(node15F?.right).toBe(rbTree.NIL);
304
- expect(node15F?.parent).toBe(node20F);
305
- expect(node21F?.key).toBe(21);
306
- expect(node21F?.color).toBe('RED');
307
- expect(node21F?.left).toBe(rbTree.NIL);
308
- expect(node21F?.right).toBe(rbTree.NIL);
309
- expect(node21F?.parent).toBe(node20F);
310
- expect(node6F?.key).toBe(6);
311
- expect(node6F?.color).toBe('RED');
312
- expect(node6F?.left).toBe(rbTree.NIL);
313
- expect(node6F?.right).toBe(rbTree.NIL);
314
- expect(node6F?.parent).toBe(node5F);
315
- expect(node2F?.key).toBe(2);
316
- expect(node2F?.color).toBe('RED');
317
- expect(node2F?.left).toBe(rbTree.NIL);
318
- expect(node2F?.right).toBe(rbTree.NIL);
319
- expect(node2F?.parent).toBe(node5F);
320
- expect(node15F?.key).toBe(15);
321
- expect(node15F?.color).toBe('RED');
322
- expect(node15F?.left).toBe(rbTree.NIL);
323
- expect(node15F?.right).toBe(rbTree.NIL);
324
- expect(node15F?.parent).toBe(node20F);
325
- rbTree.delete(5);
326
- node10F = rbTree.getNode(10);
327
- node20F = rbTree.getNode(20);
328
- node5F = rbTree.getNode(5);
329
- node15F = rbTree.getNode(15);
330
- node21F = rbTree.getNode(21);
331
- node6F = rbTree.getNode(6);
332
- node2F = rbTree.getNode(2);
333
- expect(node10F?.key).toBe(10);
334
- expect(node10F?.color).toBe('BLACK');
335
- expect(node10F?.left).toBe(node6F);
336
- expect(node10F?.right).toBe(node20F);
337
- expect(node10F?.parent).toBe(undefined);
338
- expect(node20F?.key).toBe(20);
339
- expect(node20F?.color).toBe('BLACK');
340
- expect(node20F?.left).toBe(node15F);
341
- expect(node20F?.right).toBe(node21F);
342
- expect(node20F?.parent).toBe(node10F);
343
- expect(node5F).toBe(undefined);
344
- expect(node15F?.key).toBe(15);
345
- expect(node15F?.color).toBe('RED');
346
- expect(node15F?.left).toBe(rbTree.NIL);
347
- expect(node15F?.right).toBe(rbTree.NIL);
348
- expect(node15F?.parent).toBe(node20F);
349
- expect(node21F?.key).toBe(21);
350
- expect(node21F?.color).toBe('RED');
351
- expect(node21F?.left).toBe(rbTree.NIL);
352
- expect(node21F?.right).toBe(rbTree.NIL);
353
- expect(node21F?.parent).toBe(node20F);
354
- expect(node6F?.key).toBe(6);
355
- expect(node6F?.color).toBe('BLACK');
356
- expect(node6F?.left).toBe(node2F);
357
- expect(node6F?.right).toBe(rbTree.NIL);
358
- expect(node6F?.parent).toBe(node10F);
359
- expect(node2F?.key).toBe(2);
360
- expect(node2F?.color).toBe('RED');
361
- expect(node2F?.left).toBe(rbTree.NIL);
362
- expect(node2F?.right).toBe(rbTree.NIL);
363
- expect(node2F?.parent).toBe(node6F);
364
- expect(node15F?.key).toBe(15);
365
- expect(node15F?.color).toBe('RED');
366
- expect(node15F?.left).toBe(rbTree.NIL);
367
- expect(node15F?.right).toBe(rbTree.NIL);
368
- expect(node15F?.parent).toBe(node20F);
369
- rbTree.delete(20);
370
- node10F = rbTree.getNode(10);
371
- node20F = rbTree.getNode(20);
372
- node5F = rbTree.getNode(5);
373
- node15F = rbTree.getNode(15);
374
- node21F = rbTree.getNode(21);
375
- node6F = rbTree.getNode(6);
376
- node2F = rbTree.getNode(2);
377
- expect(node10F?.key).toBe(10);
378
- expect(node10F?.color).toBe('BLACK');
379
- expect(node10F?.left).toBe(node6F);
380
- expect(node10F?.right).toBe(node21F);
381
- expect(node10F?.parent).toBe(undefined);
382
- expect(node20F).toBe(undefined);
383
- expect(node5F).toBe(undefined);
384
- expect(node15F?.key).toBe(15);
385
- expect(node15F?.color).toBe('RED');
386
- expect(node15F?.left).toBe(rbTree.NIL);
387
- expect(node15F?.right).toBe(rbTree.NIL);
388
- expect(node15F?.parent).toBe(node21F);
389
- expect(node21F?.key).toBe(21);
390
- expect(node21F?.color).toBe('BLACK');
391
- expect(node21F?.left).toBe(node15F);
392
- expect(node21F?.right).toBe(rbTree.NIL);
393
- expect(node21F?.parent).toBe(node10F);
394
- expect(node6F?.key).toBe(6);
395
- expect(node6F?.color).toBe('BLACK');
396
- expect(node6F?.left).toBe(node2F);
397
- expect(node6F?.right).toBe(rbTree.NIL);
398
- expect(node6F?.parent).toBe(node10F);
399
- expect(node2F?.key).toBe(2);
400
- expect(node2F?.color).toBe('RED');
401
- expect(node2F?.left).toBe(rbTree.NIL);
402
- expect(node2F?.right).toBe(rbTree.NIL);
403
- expect(node2F?.parent).toBe(node6F);
404
- expect(node15F?.key).toBe(15);
405
- expect(node15F?.color).toBe('RED');
406
- expect(node15F?.left).toBe(rbTree.NIL);
407
- expect(node15F?.right).toBe(rbTree.NIL);
408
- expect(node15F?.parent).toBe(node21F);
409
- });
410
-
411
- it('should fix the rbTree after insertion', () => {
412
- rbTree.set(1);
413
- rbTree.set(2);
414
- rbTree.set(5);
415
- rbTree.set(15);
416
- const node15F = rbTree.getNode(15);
417
- expect(node15F?.left).toBe(rbTree.NIL);
418
- expect(node15F?.right).toBe(rbTree.NIL);
419
- expect(node15F?.parent).toBe(rbTree.getNode(5));
420
-
421
- rbTree.set(25);
422
- rbTree.set(10);
423
- rbTree.set(8);
424
- rbTree.set(28);
425
- rbTree.set(111);
426
- rbTree.set(12);
427
- rbTree.delete(2);
428
- rbTree.set(22);
429
- rbTree.set(50);
430
- rbTree.set(155);
431
- rbTree.set(225);
432
- const node225F = rbTree.getNode(225);
433
- expect(node225F?.left).toBe(rbTree.NIL);
434
- expect(node225F?.right).toBe(rbTree.NIL);
435
- expect(node225F?.parent?.key).toBe(155);
436
- rbTree.set(7);
437
- if (isDebug) rbTree.print();
438
-
439
- const node15S = rbTree.getNode(15);
440
- expect(node15S?.left?.key).toBe(10);
441
- expect(node15S?.right?.key).toBe(25);
442
- expect(rbTree.root).toBe(rbTree.getNode(8));
443
- expect(node15S?.parent?.key).toBe(28);
444
- rbTree.delete(15);
445
- expect(rbTree.root?.key).toBe(8);
446
- expect(rbTree.root?.parent).toBe(undefined);
447
-
448
- const node15T = rbTree.getNode(15);
449
- expect(node15T).toBe(undefined);
450
-
451
- rbTree.set(23);
452
- rbTree.set(33);
453
- rbTree.set(15);
454
-
455
- const nodeLM = rbTree.getLeftMost();
456
- expect(nodeLM).toBe(1);
457
-
458
- const node50 = rbTree.getNode(50);
459
- expect(node50?.key).toBe(50);
460
- expect(node50?.left?.key).toBe(33);
461
- expect(node50?.right).toBe(rbTree.NIL);
462
- const node15Fo = rbTree.getNode(15);
463
-
464
- expect(node15Fo?.key).toBe(15);
465
- expect(node15Fo?.left).toBe(rbTree.NIL);
466
- const node225S = rbTree.getNode(225);
467
- expect(node225S?.left).toBe(rbTree.NIL);
468
- expect(node225S?.right).toBe(rbTree.NIL);
469
- expect(node225S?.parent?.key).toBe(155);
470
- // TODO
471
- // expect(rbTree.getNode(0)).toBe(undefined);
472
- rbTree.set(2);
473
- rbTree.set(3);
474
- rbTree.set(4);
475
- rbTree.set(6);
476
- rbTree.set(9);
477
- rbTree.set(11);
478
- rbTree.set(13);
479
- rbTree.set(14);
480
- rbTree.set(16);
481
- rbTree.set(17);
482
- rbTree.set(18);
483
- rbTree.set(19);
484
- rbTree.set(110);
485
-
486
- if (isDebug) rbTree.print();
487
-
488
- expect(rbTree.dfs()).toEqual([
489
- 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
490
- ]);
491
-
492
- expect(rbTree.isBST()).toBe(true);
493
- });
494
-
495
- it('should fix the rbTree after insertion and deletion', () => {
496
- for (let i = 0; i < 100; i++) {
497
- rbTree.set(i);
498
- }
499
- for (let i = 0; i < 49; i++) {
500
- rbTree.delete(i);
501
- }
502
-
503
- expect(rbTree.size).toBe(51);
504
- expect(rbTree.isBST()).toBe(true);
505
- expect(rbTree.isBST(rbTree.root, 'RECURSIVE')).toBe(true);
506
-
507
- expect(rbTree.dfs(n => n.key, 'IN', false, rbTree.root, 'ITERATIVE')).toEqual([
508
- 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,
509
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
510
- ]);
511
- expect(rbTree.dfs(n => n.key, 'IN', false, rbTree.root, 'RECURSIVE')).toEqual([
512
- 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,
513
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
514
- ]);
515
- });
516
-
517
- it('should fix the rbTree after large scale insertion and deletion', () => {
518
- for (let i = 0; i < 10000; i++) {
519
- rbTree.set(i);
520
- }
521
- for (let i = 0; i < 10000; i++) {
522
- rbTree.delete(i);
523
- }
524
-
525
- expect(rbTree.size).toBe(0);
526
- expect(rbTree.isBST()).toBe(true);
527
- expect(rbTree.dfs(n => n.key, 'IN', false, rbTree.root, 'ITERATIVE')).toEqual([]);
528
-
529
- rbTree.clear();
530
- for (let i = 0; i < 1000; i++) {
531
- rbTree.set(getRandomInt(-100, 1000));
532
- rbTree.delete(getRandomInt(-100, 1000));
533
- }
534
-
535
- // TODO there is a bug when dfs the rbTree with NIL node
536
- // expect(rbTree.isBST()).toBe(true);
537
- });
538
- const { HUNDRED_THOUSAND } = magnitude;
539
- const arr = getRandomIntArray(HUNDRED_THOUSAND, 0, HUNDRED_THOUSAND, true);
540
- const competitor = new OrderedMap<number, number>();
541
-
542
- it('should fix the rbTree after large scale insertion and deletion', () => {
543
- rbTree.clear();
544
- const tS = performance.now();
545
- for (let i = 0; i < arr.length; i++) {
546
- rbTree.set(arr[i]);
547
- }
548
- if (isDebug) console.log(performance.now() - tS);
549
-
550
- const cS = performance.now();
551
-
552
- for (let i = 0; i < arr.length; i++) {
553
- competitor.setElement(arr[i], arr[i]);
554
- }
555
- if (isDebug) console.log(performance.now() - cS);
556
- });
557
-
558
- it('duplicates', () => {
559
- rbTree.setMany([9, 8, 7, 8, 8, 8, 2, 3, 6, 5, 5, 4]);
560
- if (isDebug) rbTree.print();
561
-
562
- expect(rbTree.size).toBe(8);
563
- expect(rbTree.isBST()).toBe(true);
564
- expect(rbTree.isAVLBalanced()).toBe(true);
565
- rbTree.setMany([10, 5, 2, 11]);
566
- expect(rbTree.size).toBe(10);
567
- expect(rbTree.isBST()).toBe(true);
568
- expect(rbTree.isAVLBalanced()).toBe(true);
569
-
570
- rbTree.clear();
571
- rbTree.setMany([10, 20, 30, 40, 50, 60]);
572
- expect(rbTree.isAVLBalanced()).toBe(false);
573
- });
574
-
575
- describe('RedBlackTree delete test', function () {
576
- const rbTree = new RedBlackTree<number, number>();
577
- const inputSize = 100; // Adjust input sizes as needed
578
-
579
- beforeEach(() => {
580
- rbTree.clear();
581
- });
582
- it('The structure remains normal after random deletion', function () {
583
- for (let i = 0; i < inputSize; i++) {
584
- rbTree.set(i);
585
- }
586
-
587
- for (let i = 0; i < inputSize; i++) {
588
- const num = getRandomInt(0, inputSize - 1);
589
- rbTree.delete(num);
590
- }
591
-
592
- let nanCount = 0;
593
- const dfs = (cur: RedBlackTreeNode<number>) => {
594
- if (isNaN(cur.key)) nanCount++;
595
- if (cur.left) dfs(cur.left);
596
- if (cur.right) dfs(cur.right);
597
- };
598
- if (rbTree.root) dfs(rbTree.root);
599
-
600
- expect(rbTree.size).toBeLessThanOrEqual(inputSize);
601
- expect(rbTree.getHeight()).toBeLessThan(Math.log2(inputSize) * 2);
602
-
603
- expect(nanCount).toBeLessThanOrEqual(inputSize);
604
- });
605
-
606
- it(`Random additions, complete deletions of structures are normal`, function () {
607
- for (let i = 0; i < inputSize; i++) {
608
- const num = getRandomInt(0, inputSize - 1);
609
- if (i === 0 && isDebug) console.log(`first:`, num);
610
- rbTree.set(num);
611
- }
612
-
613
- for (let i = 0; i < inputSize; i++) {
614
- rbTree.delete(i);
615
- }
616
-
617
- let nanCount = 0;
618
- const dfs = (cur: RedBlackTreeNode<number>) => {
619
- if (isNaN(cur.key)) nanCount++;
620
- if (cur.left) dfs(cur.left);
621
- if (cur.right) dfs(cur.right);
622
- };
623
- if (rbTree.root) dfs(rbTree.root);
624
-
625
- expect(rbTree.size).toBe(0);
626
- expect(rbTree.getHeight()).toBe(-1);
627
- expect(nanCount).toBeLessThanOrEqual(inputSize);
628
-
629
- if (isDebug) rbTree.print();
630
- });
631
- });
632
-
633
- describe('RedBlackTree iterative methods test', () => {
634
- let rbTree: RedBlackTree<number, string>;
635
- beforeEach(() => {
636
- rbTree = new RedBlackTree();
637
- rbTree.set([1, 'a']);
638
- rbTree.set(2, 'b');
639
- rbTree.set([3, 'c']);
640
- });
641
-
642
- it('The node obtained by get Node should match the node type', () => {
643
- const node3 = rbTree.getNode(3);
644
- // expect(node3).toBeInstanceOf(BinaryTreeNode);
645
- // expect(node3).toBeInstanceOf(BSTNode);
646
- expect(node3).toBeInstanceOf(RedBlackTreeNode);
647
- });
648
-
649
- it('forEach should iterate over all elements', () => {
650
- const mockCallback = jest.fn();
651
- rbTree.forEach((value, key) => {
652
- mockCallback(key, value);
653
- });
654
-
655
- expect(mockCallback.mock.calls.length).toBe(3);
656
- expect(mockCallback.mock.calls[0]).toEqual([1, 'a']);
657
- expect(mockCallback.mock.calls[1]).toEqual([2, 'b']);
658
- expect(mockCallback.mock.calls[2]).toEqual([3, 'c']);
659
- });
660
-
661
- it('filter should return a new rbTree with filtered elements', () => {
662
- const filteredTree = rbTree.filter((_value, key) => key > 1);
663
- expect(filteredTree.size).toBe(2);
664
- expect([...filteredTree]).toEqual([
665
- [2, 'b'],
666
- [3, 'c']
667
- ]);
668
- });
669
-
670
- it('map should return a new rbTree with modified elements', () => {
671
- const rbTreeMapped = rbTree.map((value, key) => [(key * 2).toString(), value]);
672
- expect(rbTreeMapped.size).toBe(3);
673
- expect([...rbTreeMapped]).toEqual([
674
- ['2', 'a'],
675
- ['4', 'b'],
676
- ['6', 'c']
677
- ]);
678
- });
679
-
680
- it('reduce should accumulate values', () => {
681
- const sum = rbTree.reduce((acc, value, key) => acc + key, 0);
682
- expect(sum).toBe(6);
683
- });
684
-
685
- it('[Symbol.iterator] should provide an iterator', () => {
686
- const entries = [];
687
- for (const entry of rbTree) {
688
- entries.push(entry);
689
- }
690
-
691
- expect(entries.length).toBe(3);
692
- expect(entries).toEqual([
693
- [1, 'a'],
694
- [2, 'b'],
695
- [3, 'c']
696
- ]);
697
- });
698
- });
699
- });
700
-
701
- describe('RedBlackTree - _deleteFixup', () => {
702
- let rbTree: RedBlackTree<number, number>;
703
-
704
- beforeEach(() => {
705
- rbTree = new RedBlackTree();
706
- });
707
-
708
- it('should handle deleting a red leaf node', () => {
709
- rbTree.set(10, 10);
710
- rbTree.set(5, 5); // Red leaf
711
- rbTree.set(20, 20);
712
-
713
- expect(rbTree.delete(5)).toHaveLength(1); // Delete red leaf
714
- expect(rbTree.root?.left).toBe(rbTree.NIL); // Left child should be NIL
715
- });
716
-
717
- it('should handle deleting a black leaf node', () => {
718
- rbTree.set(10, 10);
719
- rbTree.set(5, 5); // Black node
720
- rbTree.set(20, 20);
721
- rbTree.set(1, 1); // Black leaf node
722
-
723
- expect(rbTree.delete(1)).toHaveLength(1); // Delete black leaf
724
- expect(rbTree.root?.left?.left).toBe(rbTree.NIL);
725
- });
726
-
727
- it('should handle deleting black node with red sibling', () => {
728
- rbTree.set(10, 10);
729
- rbTree.set(5, 5); // Black node
730
- rbTree.set(20, 20); // Red sibling
731
- rbTree.set(25, 25); // Force the sibling to be red
732
-
733
- expect(rbTree.delete(5)).toHaveLength(1); // Delete black node
734
- expect(rbTree.root?.right?.color).toBe('BLACK'); // Ensure sibling color is black after fixup
735
- });
736
-
737
- it('should handle deleting black node with black sibling', () => {
738
- rbTree.set(10, 10);
739
- rbTree.set(5, 5); // Black node
740
- rbTree.set(20, 20); // Black sibling
741
-
742
- expect(rbTree.delete(5)).toHaveLength(1); // Delete black node
743
- expect(rbTree.root?.left).toBe(rbTree.NIL);
744
- });
745
-
746
- it('should handle deleting the root node', () => {
747
- rbTree.set(10, 10); // Root node
748
- rbTree.set(5, 5);
749
- rbTree.set(20, 20);
750
-
751
- expect(rbTree.delete(10)).toHaveLength(1); // Delete root node
752
- expect(rbTree.root?.key).toBe(20); // New root should be 20
753
- });
754
-
755
- it('should handle complex case with multiple rotations', () => {
756
- rbTree.set(10, 10);
757
- rbTree.set(5, 5);
758
- rbTree.set(15, 15);
759
- rbTree.set(12, 12);
760
- rbTree.set(18, 18);
761
- rbTree.set(16, 16);
762
-
763
- // Delete a node that will cause rotations and color changes
764
- expect(rbTree.delete(5)).toHaveLength(1);
765
-
766
- // Verify the color and structure after fixup
767
- expect(rbTree.root?.color).toBe('BLACK');
768
- expect(rbTree.root?.left).toBe(rbTree.NIL);
769
- expect(rbTree.root?.right?.left?.color).toBe('BLACK');
770
- });
771
-
772
- it('should handle complex delete fixup scenarios', () => {
773
- const rbTree = new RedBlackTree<number, number>();
774
-
775
- // Build a rbTree that will require complex fixup
776
- rbTree.set(20, 20);
777
- rbTree.set(10, 10);
778
- rbTree.set(30, 30);
779
- rbTree.set(5, 5);
780
- rbTree.set(15, 15);
781
- rbTree.set(25, 25);
782
- rbTree.set(35, 35);
783
- rbTree.set(2, 2);
784
- rbTree.set(8, 8);
785
-
786
- // This deletion should trigger a complex fixup
787
- rbTree.delete(2);
788
- // rbTree.print(rbTree.root, { isShowNull: true, isShowRedBlackNIL: true, isShowUndefined: false });
789
-
790
- expect(rbTree.isLeaf(2)).toBe(false);
791
- expect(rbTree.isLeaf(8)).toBe(true);
792
- expect(rbTree.isLeaf(15)).toBe(true);
793
- expect(rbTree.isLeaf(25)).toBe(true);
794
- expect(rbTree.isLeaf(35)).toBe(true);
795
- expect(rbTree.isLeaf(20)).toBe(false);
796
- expect(rbTree.isLeaf(30)).toBe(false);
797
- // Verify rbTree structure and colors after fixup
798
- expect(rbTree.root?.color).toBe('BLACK');
799
- expect(rbTree.root?.key).toBe(20);
800
- expect(rbTree.root?.left?.color).toBe('RED');
801
- expect(rbTree.root?.left?.key).toBe(10);
802
- expect(rbTree.root?.right?.color).toBe('BLACK');
803
- expect(rbTree.root?.right?.key).toBe(30);
804
- expect(rbTree.root?.left?.left?.color).toBe('BLACK');
805
- expect(rbTree.root?.left?.left?.key).toBe(5);
806
- expect(rbTree.root?.left?.right?.color).toBe('BLACK');
807
- expect(rbTree.root?.left?.right?.key).toBe(15);
808
- expect(rbTree.leaves(node => (node === null ? '' : `${node.key} ${node.color}`), rbTree.root, 'RECURSIVE')).toEqual(
809
- ['8 RED', '15 BLACK', '25 RED', '35 RED']
810
- );
811
- expect(rbTree.listLevels(node => (node === rbTree.NIL ? 'NIL' : `${node.key} ${node.color}`))).toEqual([
812
- ['20 BLACK'],
813
- ['10 RED', '30 BLACK'],
814
- ['5 BLACK', '15 BLACK', '25 RED', '35 RED'],
815
- ['NIL', '8 RED', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL', 'NIL'],
816
- ['NIL', 'NIL']
817
- ]);
818
- });
819
- });
820
-
821
- describe('real world data', () => {
822
- it('cost of living', () => {
823
- const indexedByRank = new RedBlackTree(costOfLiving, {
824
- comparator: (a, b) => a.rank - b.rank,
825
- toEntryFn: raw => [raw, undefined]
826
- });
827
- expect(indexedByRank.size).toBe(7);
828
- expect(indexedByRank.dfs(node => node?.key?.country)).toEqual([
829
- 'Switzerland',
830
- 'New Zealand',
831
- 'Mexico',
832
- 'South Africa',
833
- 'Japan',
834
- 'Brazil',
835
- 'Taiwan'
836
- ]);
837
- });
838
- });
839
-
840
- describe('classic use', () => {
841
- it('@example basic Red-Black Tree with simple number keys', () => {
842
- // Create a simple Red-Black Tree with numeric keys
843
- const tree = new RedBlackTree([5, 2, 8, 1, 9]);
844
-
845
- tree.print();
846
- // _2___
847
- // / \
848
- // 1 _8_
849
- // / \
850
- // 5 9
851
-
852
- // Verify the tree maintains sorted order
853
- expect([...tree.keys()]).toEqual([1, 2, 5, 8, 9]);
854
-
855
- // Check size
856
- expect(tree.size).toBe(5);
857
- });
858
-
859
- it('@example Red-Black Tree with key-value pairs for lookups', () => {
860
- interface Employee {
861
- id: number;
862
- name: string;
863
- }
864
-
865
- // Create tree with employee data
866
- const employees = new RedBlackTree<number, Employee>([
867
- [1, { id: 1, name: 'Alice' }],
868
- [3, { id: 3, name: 'Charlie' }],
869
- [2, { id: 2, name: 'Bob' }]
870
- ]);
871
-
872
- // Retrieve employee by ID
873
- const alice = employees.get(1);
874
- expect(alice?.name).toBe('Alice');
875
-
876
- // Verify sorted order by ID
877
- expect([...employees.keys()]).toEqual([1, 2, 3]);
878
- });
879
-
880
- it('@example Red-Black Tree range search for filtering', () => {
881
- interface Product {
882
- name: string;
883
- price: number;
884
- }
885
-
886
- const products = new RedBlackTree<number, Product>([
887
- [10, { name: 'Item A', price: 10 }],
888
- [25, { name: 'Item B', price: 25 }],
889
- [40, { name: 'Item C', price: 40 }],
890
- [50, { name: 'Item D', price: 50 }]
891
- ]);
892
-
893
- // Find products in price range [20, 45]
894
- const pricesInRange = products.rangeSearch([20, 45], node => {
895
- return products.get(node)?.name;
896
- });
897
-
898
- expect(pricesInRange).toEqual(['Item B', 'Item C']);
899
- });
900
-
901
- it('@example Red-Black Tree as database index for stock market data', () => {
902
- interface StockPrice {
903
- symbol: string;
904
- volume: number;
905
- timestamp: Date;
906
- }
907
-
908
- // Simulate real-time stock price index
909
- const priceIndex = new RedBlackTree<number, StockPrice>([
910
- [142.5, { symbol: 'AAPL', volume: 1000000, timestamp: new Date() }],
911
- [335.2, { symbol: 'MSFT', volume: 800000, timestamp: new Date() }],
912
- [3285.04, { symbol: 'AMZN', volume: 500000, timestamp: new Date() }],
913
- [267.98, { symbol: 'META', volume: 750000, timestamp: new Date() }],
914
- [234.57, { symbol: 'GOOGL', volume: 900000, timestamp: new Date() }]
915
- ]);
916
-
917
- // Find highest-priced stock
918
- const maxPrice = priceIndex.getRightMost();
919
- expect(priceIndex.get(maxPrice)?.symbol).toBe('AMZN');
920
-
921
- // Find stocks in price range [200, 400] for portfolio balancing
922
- const stocksInRange = priceIndex.rangeSearch([200, 400], node => {
923
- const stock = priceIndex.get(node);
924
- return {
925
- symbol: stock?.symbol,
926
- price: node,
927
- volume: stock?.volume
928
- };
929
- });
930
-
931
- expect(stocksInRange.length).toBe(3);
932
- expect(stocksInRange.some((s: any) => s.symbol === 'GOOGL')).toBe(true);
933
- expect(stocksInRange.some((s: any) => s.symbol === 'META')).toBe(true);
934
- expect(stocksInRange.some((s: any) => s.symbol === 'MSFT')).toBe(true);
935
- });
936
- });