rn-leveldb 3.11.0

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 (595) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -0
  3. package/android/.project +34 -0
  4. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  5. package/android/CMakeLists.txt +69 -0
  6. package/android/build.gradle +125 -0
  7. package/android/cpp-adapter.cpp +19 -0
  8. package/android/gradle.properties +6 -0
  9. package/android/src/main/AndroidManifest.xml +4 -0
  10. package/android/src/main/java/com/reactnativeleveldb/LeveldbModule.java +57 -0
  11. package/android/src/main/java/com/reactnativeleveldb/LeveldbPackage.java +28 -0
  12. package/cpp/leveldb/.appveyor.yml +36 -0
  13. package/cpp/leveldb/.clang-format +18 -0
  14. package/cpp/leveldb/.travis.yml +88 -0
  15. package/cpp/leveldb/AUTHORS +12 -0
  16. package/cpp/leveldb/CMakeLists.txt +495 -0
  17. package/cpp/leveldb/CONTRIBUTING.md +36 -0
  18. package/cpp/leveldb/LICENSE +27 -0
  19. package/cpp/leveldb/NEWS +17 -0
  20. package/cpp/leveldb/README.md +231 -0
  21. package/cpp/leveldb/TODO +14 -0
  22. package/cpp/leveldb/benchmarks/db_bench.cc +990 -0
  23. package/cpp/leveldb/benchmarks/db_bench_sqlite3.cc +726 -0
  24. package/cpp/leveldb/benchmarks/db_bench_tree_db.cc +531 -0
  25. package/cpp/leveldb/cmake/leveldbConfig.cmake.in +9 -0
  26. package/cpp/leveldb/db/autocompact_test.cc +115 -0
  27. package/cpp/leveldb/db/builder.cc +82 -0
  28. package/cpp/leveldb/db/builder.h +30 -0
  29. package/cpp/leveldb/db/c.cc +562 -0
  30. package/cpp/leveldb/db/c_test.c +384 -0
  31. package/cpp/leveldb/db/corruption_test.cc +367 -0
  32. package/cpp/leveldb/db/db_impl.cc +1554 -0
  33. package/cpp/leveldb/db/db_impl.h +217 -0
  34. package/cpp/leveldb/db/db_iter.cc +318 -0
  35. package/cpp/leveldb/db/db_iter.h +26 -0
  36. package/cpp/leveldb/db/db_test.cc +2305 -0
  37. package/cpp/leveldb/db/dbformat.cc +136 -0
  38. package/cpp/leveldb/db/dbformat.h +224 -0
  39. package/cpp/leveldb/db/dbformat_test.cc +133 -0
  40. package/cpp/leveldb/db/dumpfile.cc +232 -0
  41. package/cpp/leveldb/db/fault_injection_test.cc +555 -0
  42. package/cpp/leveldb/db/filename.cc +141 -0
  43. package/cpp/leveldb/db/filename.h +83 -0
  44. package/cpp/leveldb/db/filename_test.cc +132 -0
  45. package/cpp/leveldb/db/leveldbutil.cc +64 -0
  46. package/cpp/leveldb/db/log_format.h +35 -0
  47. package/cpp/leveldb/db/log_reader.cc +274 -0
  48. package/cpp/leveldb/db/log_reader.h +112 -0
  49. package/cpp/leveldb/db/log_test.cc +563 -0
  50. package/cpp/leveldb/db/log_writer.cc +111 -0
  51. package/cpp/leveldb/db/log_writer.h +54 -0
  52. package/cpp/leveldb/db/memtable.cc +137 -0
  53. package/cpp/leveldb/db/memtable.h +87 -0
  54. package/cpp/leveldb/db/recovery_test.cc +339 -0
  55. package/cpp/leveldb/db/repair.cc +451 -0
  56. package/cpp/leveldb/db/skiplist.h +382 -0
  57. package/cpp/leveldb/db/skiplist_test.cc +373 -0
  58. package/cpp/leveldb/db/snapshot.h +95 -0
  59. package/cpp/leveldb/db/table_cache.cc +120 -0
  60. package/cpp/leveldb/db/table_cache.h +57 -0
  61. package/cpp/leveldb/db/version_edit.cc +257 -0
  62. package/cpp/leveldb/db/version_edit.h +106 -0
  63. package/cpp/leveldb/db/version_edit_test.cc +46 -0
  64. package/cpp/leveldb/db/version_set.cc +1562 -0
  65. package/cpp/leveldb/db/version_set.h +393 -0
  66. package/cpp/leveldb/db/version_set_test.cc +336 -0
  67. package/cpp/leveldb/db/write_batch.cc +150 -0
  68. package/cpp/leveldb/db/write_batch_internal.h +45 -0
  69. package/cpp/leveldb/db/write_batch_test.cc +137 -0
  70. package/cpp/leveldb/doc/benchmark.html +459 -0
  71. package/cpp/leveldb/doc/impl.md +172 -0
  72. package/cpp/leveldb/doc/index.md +523 -0
  73. package/cpp/leveldb/doc/log_format.md +75 -0
  74. package/cpp/leveldb/doc/table_format.md +107 -0
  75. package/cpp/leveldb/helpers/memenv/memenv.cc +390 -0
  76. package/cpp/leveldb/helpers/memenv/memenv.h +22 -0
  77. package/cpp/leveldb/helpers/memenv/memenv_test.cc +264 -0
  78. package/cpp/leveldb/include/leveldb/c.h +270 -0
  79. package/cpp/leveldb/include/leveldb/cache.h +111 -0
  80. package/cpp/leveldb/include/leveldb/comparator.h +64 -0
  81. package/cpp/leveldb/include/leveldb/db.h +167 -0
  82. package/cpp/leveldb/include/leveldb/dumpfile.h +28 -0
  83. package/cpp/leveldb/include/leveldb/env.h +417 -0
  84. package/cpp/leveldb/include/leveldb/export.h +33 -0
  85. package/cpp/leveldb/include/leveldb/filter_policy.h +72 -0
  86. package/cpp/leveldb/include/leveldb/iterator.h +112 -0
  87. package/cpp/leveldb/include/leveldb/options.h +187 -0
  88. package/cpp/leveldb/include/leveldb/slice.h +114 -0
  89. package/cpp/leveldb/include/leveldb/status.h +122 -0
  90. package/cpp/leveldb/include/leveldb/table.h +84 -0
  91. package/cpp/leveldb/include/leveldb/table_builder.h +93 -0
  92. package/cpp/leveldb/include/leveldb/write_batch.h +83 -0
  93. package/cpp/leveldb/issues/issue178_test.cc +90 -0
  94. package/cpp/leveldb/issues/issue200_test.cc +59 -0
  95. package/cpp/leveldb/issues/issue320_test.cc +131 -0
  96. package/cpp/leveldb/port/README.md +10 -0
  97. package/cpp/leveldb/port/port.h +19 -0
  98. package/cpp/leveldb/port/port_config.h.in +33 -0
  99. package/cpp/leveldb/port/port_example.h +100 -0
  100. package/cpp/leveldb/port/port_stdcxx.h +151 -0
  101. package/cpp/leveldb/port/thread_annotations.h +108 -0
  102. package/cpp/leveldb/table/block.cc +267 -0
  103. package/cpp/leveldb/table/block.h +44 -0
  104. package/cpp/leveldb/table/block_builder.cc +107 -0
  105. package/cpp/leveldb/table/block_builder.h +54 -0
  106. package/cpp/leveldb/table/filter_block.cc +106 -0
  107. package/cpp/leveldb/table/filter_block.h +68 -0
  108. package/cpp/leveldb/table/filter_block_test.cc +127 -0
  109. package/cpp/leveldb/table/format.cc +141 -0
  110. package/cpp/leveldb/table/format.h +99 -0
  111. package/cpp/leveldb/table/iterator.cc +76 -0
  112. package/cpp/leveldb/table/iterator_wrapper.h +92 -0
  113. package/cpp/leveldb/table/merger.cc +191 -0
  114. package/cpp/leveldb/table/merger.h +26 -0
  115. package/cpp/leveldb/table/table.cc +271 -0
  116. package/cpp/leveldb/table/table_builder.cc +265 -0
  117. package/cpp/leveldb/table/table_test.cc +834 -0
  118. package/cpp/leveldb/table/two_level_iterator.cc +171 -0
  119. package/cpp/leveldb/table/two_level_iterator.h +31 -0
  120. package/cpp/leveldb/third_party/benchmark/.clang-format +5 -0
  121. package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  122. package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  123. package/cpp/leveldb/third_party/benchmark/.github/workflows/build-and-test.yml +38 -0
  124. package/cpp/leveldb/third_party/benchmark/.github/workflows/pylint.yml +26 -0
  125. package/cpp/leveldb/third_party/benchmark/.github/workflows/test_bindings.yml +24 -0
  126. package/cpp/leveldb/third_party/benchmark/.travis-libcxx-setup.sh +28 -0
  127. package/cpp/leveldb/third_party/benchmark/.travis.yml +231 -0
  128. package/cpp/leveldb/third_party/benchmark/.ycm_extra_conf.py +115 -0
  129. package/cpp/leveldb/third_party/benchmark/AUTHORS +58 -0
  130. package/cpp/leveldb/third_party/benchmark/BUILD.bazel +44 -0
  131. package/cpp/leveldb/third_party/benchmark/CMakeLists.txt +287 -0
  132. package/cpp/leveldb/third_party/benchmark/CONTRIBUTING.md +58 -0
  133. package/cpp/leveldb/third_party/benchmark/CONTRIBUTORS +83 -0
  134. package/cpp/leveldb/third_party/benchmark/LICENSE +202 -0
  135. package/cpp/leveldb/third_party/benchmark/README.md +1323 -0
  136. package/cpp/leveldb/third_party/benchmark/WORKSPACE +51 -0
  137. package/cpp/leveldb/third_party/benchmark/_config.yml +1 -0
  138. package/cpp/leveldb/third_party/benchmark/appveyor.yml +50 -0
  139. package/cpp/leveldb/third_party/benchmark/bindings/python/BUILD +3 -0
  140. package/cpp/leveldb/third_party/benchmark/bindings/python/build_defs.bzl +25 -0
  141. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/BUILD +38 -0
  142. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/__init__.py +156 -0
  143. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/benchmark.cc +180 -0
  144. package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/example.py +136 -0
  145. package/cpp/leveldb/third_party/benchmark/bindings/python/pybind11.BUILD +20 -0
  146. package/cpp/leveldb/third_party/benchmark/bindings/python/python_headers.BUILD +6 -0
  147. package/cpp/leveldb/third_party/benchmark/bindings/python/requirements.txt +2 -0
  148. package/cpp/leveldb/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake +74 -0
  149. package/cpp/leveldb/third_party/benchmark/cmake/CXXFeatureCheck.cmake +69 -0
  150. package/cpp/leveldb/third_party/benchmark/cmake/Config.cmake.in +1 -0
  151. package/cpp/leveldb/third_party/benchmark/cmake/GetGitVersion.cmake +54 -0
  152. package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake +41 -0
  153. package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake.in +58 -0
  154. package/cpp/leveldb/third_party/benchmark/cmake/benchmark.pc.in +12 -0
  155. package/cpp/leveldb/third_party/benchmark/cmake/gnu_posix_regex.cpp +12 -0
  156. package/cpp/leveldb/third_party/benchmark/cmake/llvm-toolchain.cmake +8 -0
  157. package/cpp/leveldb/third_party/benchmark/cmake/posix_regex.cpp +14 -0
  158. package/cpp/leveldb/third_party/benchmark/cmake/split_list.cmake +3 -0
  159. package/cpp/leveldb/third_party/benchmark/cmake/std_regex.cpp +10 -0
  160. package/cpp/leveldb/third_party/benchmark/cmake/steady_clock.cpp +7 -0
  161. package/cpp/leveldb/third_party/benchmark/cmake/thread_safety_attributes.cpp +4 -0
  162. package/cpp/leveldb/third_party/benchmark/conan/CMakeLists.txt +7 -0
  163. package/cpp/leveldb/third_party/benchmark/conan/test_package/CMakeLists.txt +10 -0
  164. package/cpp/leveldb/third_party/benchmark/conan/test_package/conanfile.py +19 -0
  165. package/cpp/leveldb/third_party/benchmark/conan/test_package/test_package.cpp +18 -0
  166. package/cpp/leveldb/third_party/benchmark/conanfile.py +79 -0
  167. package/cpp/leveldb/third_party/benchmark/dependencies.md +18 -0
  168. package/cpp/leveldb/third_party/benchmark/docs/AssemblyTests.md +147 -0
  169. package/cpp/leveldb/third_party/benchmark/docs/_config.yml +1 -0
  170. package/cpp/leveldb/third_party/benchmark/docs/releasing.md +16 -0
  171. package/cpp/leveldb/third_party/benchmark/docs/tools.md +203 -0
  172. package/cpp/leveldb/third_party/benchmark/include/benchmark/benchmark.h +1604 -0
  173. package/cpp/leveldb/third_party/benchmark/requirements.txt +2 -0
  174. package/cpp/leveldb/third_party/benchmark/setup.py +140 -0
  175. package/cpp/leveldb/third_party/benchmark/src/CMakeLists.txt +114 -0
  176. package/cpp/leveldb/third_party/benchmark/src/arraysize.h +33 -0
  177. package/cpp/leveldb/third_party/benchmark/src/benchmark.cc +499 -0
  178. package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.cc +15 -0
  179. package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.h +53 -0
  180. package/cpp/leveldb/third_party/benchmark/src/benchmark_main.cc +17 -0
  181. package/cpp/leveldb/third_party/benchmark/src/benchmark_name.cc +58 -0
  182. package/cpp/leveldb/third_party/benchmark/src/benchmark_register.cc +515 -0
  183. package/cpp/leveldb/third_party/benchmark/src/benchmark_register.h +108 -0
  184. package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.cc +362 -0
  185. package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.h +51 -0
  186. package/cpp/leveldb/third_party/benchmark/src/check.h +82 -0
  187. package/cpp/leveldb/third_party/benchmark/src/colorprint.cc +188 -0
  188. package/cpp/leveldb/third_party/benchmark/src/colorprint.h +33 -0
  189. package/cpp/leveldb/third_party/benchmark/src/commandlineflags.cc +228 -0
  190. package/cpp/leveldb/third_party/benchmark/src/commandlineflags.h +103 -0
  191. package/cpp/leveldb/third_party/benchmark/src/complexity.cc +238 -0
  192. package/cpp/leveldb/third_party/benchmark/src/complexity.h +55 -0
  193. package/cpp/leveldb/third_party/benchmark/src/console_reporter.cc +177 -0
  194. package/cpp/leveldb/third_party/benchmark/src/counter.cc +80 -0
  195. package/cpp/leveldb/third_party/benchmark/src/counter.h +32 -0
  196. package/cpp/leveldb/third_party/benchmark/src/csv_reporter.cc +154 -0
  197. package/cpp/leveldb/third_party/benchmark/src/cycleclock.h +211 -0
  198. package/cpp/leveldb/third_party/benchmark/src/internal_macros.h +102 -0
  199. package/cpp/leveldb/third_party/benchmark/src/json_reporter.cc +255 -0
  200. package/cpp/leveldb/third_party/benchmark/src/log.h +74 -0
  201. package/cpp/leveldb/third_party/benchmark/src/mutex.h +155 -0
  202. package/cpp/leveldb/third_party/benchmark/src/re.h +158 -0
  203. package/cpp/leveldb/third_party/benchmark/src/reporter.cc +105 -0
  204. package/cpp/leveldb/third_party/benchmark/src/sleep.cc +67 -0
  205. package/cpp/leveldb/third_party/benchmark/src/sleep.h +15 -0
  206. package/cpp/leveldb/third_party/benchmark/src/statistics.cc +193 -0
  207. package/cpp/leveldb/third_party/benchmark/src/statistics.h +37 -0
  208. package/cpp/leveldb/third_party/benchmark/src/string_util.cc +255 -0
  209. package/cpp/leveldb/third_party/benchmark/src/string_util.h +59 -0
  210. package/cpp/leveldb/third_party/benchmark/src/sysinfo.cc +716 -0
  211. package/cpp/leveldb/third_party/benchmark/src/thread_manager.h +64 -0
  212. package/cpp/leveldb/third_party/benchmark/src/thread_timer.h +86 -0
  213. package/cpp/leveldb/third_party/benchmark/src/timers.cc +245 -0
  214. package/cpp/leveldb/third_party/benchmark/src/timers.h +48 -0
  215. package/cpp/leveldb/third_party/benchmark/test/AssemblyTests.cmake +46 -0
  216. package/cpp/leveldb/third_party/benchmark/test/BUILD +73 -0
  217. package/cpp/leveldb/third_party/benchmark/test/CMakeLists.txt +263 -0
  218. package/cpp/leveldb/third_party/benchmark/test/args_product_test.cc +77 -0
  219. package/cpp/leveldb/third_party/benchmark/test/basic_test.cc +136 -0
  220. package/cpp/leveldb/third_party/benchmark/test/benchmark_gtest.cc +134 -0
  221. package/cpp/leveldb/third_party/benchmark/test/benchmark_name_gtest.cc +74 -0
  222. package/cpp/leveldb/third_party/benchmark/test/benchmark_test.cc +245 -0
  223. package/cpp/leveldb/third_party/benchmark/test/clobber_memory_assembly_test.cc +64 -0
  224. package/cpp/leveldb/third_party/benchmark/test/commandlineflags_gtest.cc +201 -0
  225. package/cpp/leveldb/third_party/benchmark/test/complexity_test.cc +213 -0
  226. package/cpp/leveldb/third_party/benchmark/test/cxx03_test.cc +63 -0
  227. package/cpp/leveldb/third_party/benchmark/test/diagnostics_test.cc +80 -0
  228. package/cpp/leveldb/third_party/benchmark/test/display_aggregates_only_test.cc +43 -0
  229. package/cpp/leveldb/third_party/benchmark/test/donotoptimize_assembly_test.cc +163 -0
  230. package/cpp/leveldb/third_party/benchmark/test/donotoptimize_test.cc +52 -0
  231. package/cpp/leveldb/third_party/benchmark/test/filter_test.cc +104 -0
  232. package/cpp/leveldb/third_party/benchmark/test/fixture_test.cc +51 -0
  233. package/cpp/leveldb/third_party/benchmark/test/internal_threading_test.cc +184 -0
  234. package/cpp/leveldb/third_party/benchmark/test/link_main_test.cc +8 -0
  235. package/cpp/leveldb/third_party/benchmark/test/map_test.cc +57 -0
  236. package/cpp/leveldb/third_party/benchmark/test/memory_manager_test.cc +44 -0
  237. package/cpp/leveldb/third_party/benchmark/test/multiple_ranges_test.cc +96 -0
  238. package/cpp/leveldb/third_party/benchmark/test/options_test.cc +75 -0
  239. package/cpp/leveldb/third_party/benchmark/test/output_test.h +213 -0
  240. package/cpp/leveldb/third_party/benchmark/test/output_test_helper.cc +515 -0
  241. package/cpp/leveldb/third_party/benchmark/test/register_benchmark_test.cc +184 -0
  242. package/cpp/leveldb/third_party/benchmark/test/report_aggregates_only_test.cc +39 -0
  243. package/cpp/leveldb/third_party/benchmark/test/reporter_output_test.cc +747 -0
  244. package/cpp/leveldb/third_party/benchmark/test/skip_with_error_test.cc +195 -0
  245. package/cpp/leveldb/third_party/benchmark/test/state_assembly_test.cc +68 -0
  246. package/cpp/leveldb/third_party/benchmark/test/statistics_gtest.cc +28 -0
  247. package/cpp/leveldb/third_party/benchmark/test/string_util_gtest.cc +153 -0
  248. package/cpp/leveldb/third_party/benchmark/test/templated_fixture_test.cc +28 -0
  249. package/cpp/leveldb/third_party/benchmark/test/user_counters_tabular_test.cc +285 -0
  250. package/cpp/leveldb/third_party/benchmark/test/user_counters_test.cc +531 -0
  251. package/cpp/leveldb/third_party/benchmark/test/user_counters_thousands_test.cc +173 -0
  252. package/cpp/leveldb/third_party/benchmark/tools/BUILD.bazel +19 -0
  253. package/cpp/leveldb/third_party/benchmark/tools/compare.py +429 -0
  254. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run1.json +119 -0
  255. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run2.json +119 -0
  256. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test2_run.json +81 -0
  257. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run0.json +65 -0
  258. package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run1.json +65 -0
  259. package/cpp/leveldb/third_party/benchmark/tools/gbench/__init__.py +8 -0
  260. package/cpp/leveldb/third_party/benchmark/tools/gbench/report.py +903 -0
  261. package/cpp/leveldb/third_party/benchmark/tools/gbench/util.py +163 -0
  262. package/cpp/leveldb/third_party/benchmark/tools/requirements.txt +1 -0
  263. package/cpp/leveldb/third_party/benchmark/tools/strip_asm.py +151 -0
  264. package/cpp/leveldb/third_party/googletest/.clang-format +4 -0
  265. package/cpp/leveldb/third_party/googletest/.travis.yml +73 -0
  266. package/cpp/leveldb/third_party/googletest/BUILD.bazel +179 -0
  267. package/cpp/leveldb/third_party/googletest/CMakeLists.txt +36 -0
  268. package/cpp/leveldb/third_party/googletest/CONTRIBUTING.md +142 -0
  269. package/cpp/leveldb/third_party/googletest/LICENSE +28 -0
  270. package/cpp/leveldb/third_party/googletest/README.md +132 -0
  271. package/cpp/leveldb/third_party/googletest/WORKSPACE +23 -0
  272. package/cpp/leveldb/third_party/googletest/appveyor.yml +154 -0
  273. package/cpp/leveldb/third_party/googletest/ci/build-linux-bazel.sh +37 -0
  274. package/cpp/leveldb/third_party/googletest/ci/build-platformio.sh +2 -0
  275. package/cpp/leveldb/third_party/googletest/ci/env-linux.sh +41 -0
  276. package/cpp/leveldb/third_party/googletest/ci/env-osx.sh +47 -0
  277. package/cpp/leveldb/third_party/googletest/ci/get-nprocessors.sh +48 -0
  278. package/cpp/leveldb/third_party/googletest/ci/install-linux.sh +49 -0
  279. package/cpp/leveldb/third_party/googletest/ci/install-osx.sh +40 -0
  280. package/cpp/leveldb/third_party/googletest/ci/install-platformio.sh +5 -0
  281. package/cpp/leveldb/third_party/googletest/ci/log-config.sh +51 -0
  282. package/cpp/leveldb/third_party/googletest/ci/travis.sh +44 -0
  283. package/cpp/leveldb/third_party/googletest/googlemock/CMakeLists.txt +233 -0
  284. package/cpp/leveldb/third_party/googletest/googlemock/CONTRIBUTORS +40 -0
  285. package/cpp/leveldb/third_party/googletest/googlemock/LICENSE +28 -0
  286. package/cpp/leveldb/third_party/googletest/googlemock/README.md +44 -0
  287. package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock.pc.in +10 -0
  288. package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock_main.pc.in +10 -0
  289. package/cpp/leveldb/third_party/googletest/googlemock/docs/cheat_sheet.md +770 -0
  290. package/cpp/leveldb/third_party/googletest/googlemock/docs/cook_book.md +4270 -0
  291. package/cpp/leveldb/third_party/googletest/googlemock/docs/for_dummies.md +700 -0
  292. package/cpp/leveldb/third_party/googletest/googlemock/docs/gmock_faq.md +396 -0
  293. package/cpp/leveldb/third_party/googletest/googlemock/docs/pump_manual.md +187 -0
  294. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-actions.h +1193 -0
  295. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-cardinalities.h +157 -0
  296. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-function-mocker.h +276 -0
  297. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h +1884 -0
  298. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +627 -0
  299. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +752 -0
  300. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +227 -0
  301. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h +1097 -0
  302. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +346 -0
  303. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-matchers.h +4591 -0
  304. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-actions.h +162 -0
  305. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-matchers.h +92 -0
  306. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
  307. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-spec-builders.h +1985 -0
  308. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock.h +101 -0
  309. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
  310. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +10 -0
  311. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +12 -0
  312. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +36 -0
  313. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +39 -0
  314. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +472 -0
  315. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-port.h +87 -0
  316. package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-pp.h +271 -0
  317. package/cpp/leveldb/third_party/googletest/googlemock/scripts/README.md +5 -0
  318. package/cpp/leveldb/third_party/googletest/googlemock/scripts/fuse_gmock_files.py +240 -0
  319. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/LICENSE +203 -0
  320. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README +34 -0
  321. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README.cppclean +115 -0
  322. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  323. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/ast.py +1761 -0
  324. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class.py +248 -0
  325. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +540 -0
  326. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/keywords.py +56 -0
  327. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/tokenize.py +284 -0
  328. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/utils.py +37 -0
  329. package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/gmock_gen.py +30 -0
  330. package/cpp/leveldb/third_party/googletest/googlemock/scripts/pump.py +856 -0
  331. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-all.cc +46 -0
  332. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-cardinalities.cc +155 -0
  333. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-internal-utils.cc +200 -0
  334. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-matchers.cc +462 -0
  335. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-spec-builders.cc +892 -0
  336. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock.cc +213 -0
  337. package/cpp/leveldb/third_party/googletest/googlemock/src/gmock_main.cc +72 -0
  338. package/cpp/leveldb/third_party/googletest/googlemock/test/BUILD.bazel +110 -0
  339. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-actions_test.cc +1507 -0
  340. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-cardinalities_test.cc +429 -0
  341. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
  342. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
  343. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_test.cc +696 -0
  344. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-actions_test.cc +1064 -0
  345. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +659 -0
  346. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-matchers_test.cc +1323 -0
  347. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-internal-utils_test.cc +732 -0
  348. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-matchers_test.cc +6913 -0
  349. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-more-actions_test.cc +698 -0
  350. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-nice-strict_test.cc +500 -0
  351. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-port_test.cc +42 -0
  352. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
  353. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp_test.cc +83 -0
  354. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-spec-builders_test.cc +2775 -0
  355. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_all_test.cc +49 -0
  356. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_ex_test.cc +80 -0
  357. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test.py +104 -0
  358. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test_.cc +99 -0
  359. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link2_test.cc +39 -0
  360. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.cc +39 -0
  361. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.h +690 -0
  362. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test.py +183 -0
  363. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_.cc +309 -0
  364. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_golden.txt +317 -0
  365. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_stress_test.cc +240 -0
  366. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test.cc +181 -0
  367. package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test_utils.py +108 -0
  368. package/cpp/leveldb/third_party/googletest/googlemock/test/pump_test.py +182 -0
  369. package/cpp/leveldb/third_party/googletest/googletest/CMakeLists.txt +329 -0
  370. package/cpp/leveldb/third_party/googletest/googletest/CONTRIBUTORS +38 -0
  371. package/cpp/leveldb/third_party/googletest/googletest/LICENSE +28 -0
  372. package/cpp/leveldb/third_party/googletest/googletest/README.md +244 -0
  373. package/cpp/leveldb/third_party/googletest/googletest/cmake/Config.cmake.in +9 -0
  374. package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest.pc.in +9 -0
  375. package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest_main.pc.in +10 -0
  376. package/cpp/leveldb/third_party/googletest/googletest/cmake/internal_utils.cmake +358 -0
  377. package/cpp/leveldb/third_party/googletest/googletest/cmake/libgtest.la.in +21 -0
  378. package/cpp/leveldb/third_party/googletest/googletest/docs/advanced.md +2567 -0
  379. package/cpp/leveldb/third_party/googletest/googletest/docs/faq.md +753 -0
  380. package/cpp/leveldb/third_party/googletest/googletest/docs/pkgconfig.md +219 -0
  381. package/cpp/leveldb/third_party/googletest/googletest/docs/primer.md +579 -0
  382. package/cpp/leveldb/third_party/googletest/googletest/docs/samples.md +22 -0
  383. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-death-test.h +343 -0
  384. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-matchers.h +750 -0
  385. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-message.h +219 -0
  386. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-param-test.h +514 -0
  387. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-printers.h +928 -0
  388. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-spi.h +238 -0
  389. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-test-part.h +184 -0
  390. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-typed-test.h +337 -0
  391. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest.h +2477 -0
  392. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_pred_impl.h +359 -0
  393. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_prod.h +61 -0
  394. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
  395. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-port.h +37 -0
  396. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  397. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest.h +37 -0
  398. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +304 -0
  399. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-filepath.h +211 -0
  400. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-internal.h +1411 -0
  401. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h +880 -0
  402. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port-arch.h +111 -0
  403. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port.h +2227 -0
  404. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-string.h +171 -0
  405. package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-type-util.h +183 -0
  406. package/cpp/leveldb/third_party/googletest/googletest/samples/prime_tables.h +126 -0
  407. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.cc +66 -0
  408. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.h +41 -0
  409. package/cpp/leveldb/third_party/googletest/googletest/samples/sample10_unittest.cc +139 -0
  410. package/cpp/leveldb/third_party/googletest/googletest/samples/sample1_unittest.cc +151 -0
  411. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.cc +54 -0
  412. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.h +81 -0
  413. package/cpp/leveldb/third_party/googletest/googletest/samples/sample2_unittest.cc +107 -0
  414. package/cpp/leveldb/third_party/googletest/googletest/samples/sample3-inl.h +172 -0
  415. package/cpp/leveldb/third_party/googletest/googletest/samples/sample3_unittest.cc +149 -0
  416. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.cc +54 -0
  417. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.h +53 -0
  418. package/cpp/leveldb/third_party/googletest/googletest/samples/sample4_unittest.cc +53 -0
  419. package/cpp/leveldb/third_party/googletest/googletest/samples/sample5_unittest.cc +196 -0
  420. package/cpp/leveldb/third_party/googletest/googletest/samples/sample6_unittest.cc +224 -0
  421. package/cpp/leveldb/third_party/googletest/googletest/samples/sample7_unittest.cc +117 -0
  422. package/cpp/leveldb/third_party/googletest/googletest/samples/sample8_unittest.cc +154 -0
  423. package/cpp/leveldb/third_party/googletest/googletest/samples/sample9_unittest.cc +156 -0
  424. package/cpp/leveldb/third_party/googletest/googletest/scripts/README.md +5 -0
  425. package/cpp/leveldb/third_party/googletest/googletest/scripts/common.py +83 -0
  426. package/cpp/leveldb/third_party/googletest/googletest/scripts/fuse_gtest_files.py +253 -0
  427. package/cpp/leveldb/third_party/googletest/googletest/scripts/gen_gtest_pred_impl.py +734 -0
  428. package/cpp/leveldb/third_party/googletest/googletest/scripts/gtest-config.in +274 -0
  429. package/cpp/leveldb/third_party/googletest/googletest/scripts/release_docs.py +158 -0
  430. package/cpp/leveldb/third_party/googletest/googletest/scripts/run_with_path.py +32 -0
  431. package/cpp/leveldb/third_party/googletest/googletest/scripts/upload.py +1402 -0
  432. package/cpp/leveldb/third_party/googletest/googletest/scripts/upload_gtest.py +78 -0
  433. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-all.cc +48 -0
  434. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-death-test.cc +1653 -0
  435. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-filepath.cc +382 -0
  436. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-internal-inl.h +1211 -0
  437. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-matchers.cc +97 -0
  438. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-port.cc +1399 -0
  439. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-printers.cc +442 -0
  440. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-test-part.cc +108 -0
  441. package/cpp/leveldb/third_party/googletest/googletest/src/gtest-typed-test.cc +118 -0
  442. package/cpp/leveldb/third_party/googletest/googletest/src/gtest.cc +6180 -0
  443. package/cpp/leveldb/third_party/googletest/googletest/src/gtest_main.cc +54 -0
  444. package/cpp/leveldb/third_party/googletest/googletest/test/BUILD.bazel +529 -0
  445. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
  446. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
  447. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test.py +236 -0
  448. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
  449. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test.py +127 -0
  450. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test_.cc +62 -0
  451. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test-test.cc +1516 -0
  452. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
  453. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test.py +117 -0
  454. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
  455. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filepath-test.cc +649 -0
  456. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest.py +639 -0
  457. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
  458. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-outfiles-test.py +191 -0
  459. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-output-unittest.py +778 -0
  460. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
  461. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
  462. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-listener-test.cc +518 -0
  463. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-message-test.cc +158 -0
  464. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-options-test.cc +216 -0
  465. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test-golden-lin.txt +1137 -0
  466. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test.py +346 -0
  467. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test_.cc +1149 -0
  468. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
  469. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
  470. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
  471. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
  472. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.cc +1086 -0
  473. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.h +51 -0
  474. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
  475. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-port-test.cc +1272 -0
  476. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-printers-test.cc +1619 -0
  477. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test.py +323 -0
  478. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
  479. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test-part-test.cc +230 -0
  480. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test2_test.cc +61 -0
  481. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
  482. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
  483. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
  484. package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
  485. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test2_test.cc +44 -0
  486. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.cc +462 -0
  487. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.h +65 -0
  488. package/cpp/leveldb/third_party/googletest/googletest/test/gtest-unittest-api_test.cc +341 -0
  489. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_all_test.cc +46 -0
  490. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
  491. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_environment_test.cc +188 -0
  492. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test.py +170 -0
  493. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test_.cc +45 -0
  494. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_json_test_utils.py +60 -0
  495. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
  496. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
  497. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_main_unittest.cc +44 -0
  498. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_no_test_unittest.cc +54 -0
  499. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  500. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_premature_exit_test.cc +126 -0
  501. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_prod_test.cc +56 -0
  502. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_repeat_test.cc +233 -0
  503. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_check_output_test.py +59 -0
  504. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
  505. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
  506. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_test.cc +55 -0
  507. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_sole_header_test.cc +56 -0
  508. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_stress_test.cc +248 -0
  509. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
  510. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_utils.py +314 -0
  511. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test.py +63 -0
  512. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
  513. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +90 -0
  514. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_unittest.cc +7496 -0
  515. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile1_test_.cc +43 -0
  516. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile2_test_.cc +43 -0
  517. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py +135 -0
  518. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest.py +389 -0
  519. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest_.cc +188 -0
  520. package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_test_utils.py +196 -0
  521. package/cpp/leveldb/third_party/googletest/googletest/test/production.cc +35 -0
  522. package/cpp/leveldb/third_party/googletest/googletest/test/production.h +54 -0
  523. package/cpp/leveldb/third_party/googletest/library.json +66 -0
  524. package/cpp/leveldb/third_party/googletest/platformio.ini +47 -0
  525. package/cpp/leveldb/util/arena.cc +66 -0
  526. package/cpp/leveldb/util/arena.h +71 -0
  527. package/cpp/leveldb/util/arena_test.cc +66 -0
  528. package/cpp/leveldb/util/bloom.cc +92 -0
  529. package/cpp/leveldb/util/bloom_test.cc +159 -0
  530. package/cpp/leveldb/util/cache.cc +401 -0
  531. package/cpp/leveldb/util/cache_test.cc +229 -0
  532. package/cpp/leveldb/util/coding.cc +166 -0
  533. package/cpp/leveldb/util/coding.h +122 -0
  534. package/cpp/leveldb/util/coding_test.cc +198 -0
  535. package/cpp/leveldb/util/comparator.cc +75 -0
  536. package/cpp/leveldb/util/crc32c.cc +380 -0
  537. package/cpp/leveldb/util/crc32c.h +43 -0
  538. package/cpp/leveldb/util/crc32c_test.cc +61 -0
  539. package/cpp/leveldb/util/env.cc +108 -0
  540. package/cpp/leveldb/util/env_posix.cc +893 -0
  541. package/cpp/leveldb/util/env_posix_test.cc +353 -0
  542. package/cpp/leveldb/util/env_posix_test_helper.h +28 -0
  543. package/cpp/leveldb/util/env_test.cc +240 -0
  544. package/cpp/leveldb/util/env_windows.cc +796 -0
  545. package/cpp/leveldb/util/env_windows_test.cc +65 -0
  546. package/cpp/leveldb/util/env_windows_test_helper.h +25 -0
  547. package/cpp/leveldb/util/filter_policy.cc +11 -0
  548. package/cpp/leveldb/util/hash.cc +55 -0
  549. package/cpp/leveldb/util/hash.h +19 -0
  550. package/cpp/leveldb/util/hash_test.cc +46 -0
  551. package/cpp/leveldb/util/histogram.cc +272 -0
  552. package/cpp/leveldb/util/histogram.h +44 -0
  553. package/cpp/leveldb/util/logging.cc +82 -0
  554. package/cpp/leveldb/util/logging.h +44 -0
  555. package/cpp/leveldb/util/logging_test.cc +145 -0
  556. package/cpp/leveldb/util/mutexlock.h +39 -0
  557. package/cpp/leveldb/util/no_destructor.h +46 -0
  558. package/cpp/leveldb/util/no_destructor_test.cc +49 -0
  559. package/cpp/leveldb/util/options.cc +14 -0
  560. package/cpp/leveldb/util/posix_logger.h +130 -0
  561. package/cpp/leveldb/util/random.h +63 -0
  562. package/cpp/leveldb/util/status.cc +77 -0
  563. package/cpp/leveldb/util/status_test.cc +44 -0
  564. package/cpp/leveldb/util/testutil.cc +51 -0
  565. package/cpp/leveldb/util/testutil.h +82 -0
  566. package/cpp/leveldb/util/windows_logger.h +124 -0
  567. package/cpp/react-native-leveldb.cpp +694 -0
  568. package/cpp/react-native-leveldb.h +4 -0
  569. package/ios/Leveldb.h +9 -0
  570. package/ios/Leveldb.mm +35 -0
  571. package/ios/Leveldb.xcodeproj/project.pbxproj +288 -0
  572. package/lib/commonjs/fake.js +181 -0
  573. package/lib/commonjs/fake.js.map +1 -0
  574. package/lib/commonjs/fake.test.js +30 -0
  575. package/lib/commonjs/fake.test.js.map +1 -0
  576. package/lib/commonjs/index.js +172 -0
  577. package/lib/commonjs/index.js.map +1 -0
  578. package/lib/commonjs/package.json +1 -0
  579. package/lib/module/fake.js +171 -0
  580. package/lib/module/fake.js.map +1 -0
  581. package/lib/module/fake.test.js +30 -0
  582. package/lib/module/fake.test.js.map +1 -0
  583. package/lib/module/index.js +165 -0
  584. package/lib/module/index.js.map +1 -0
  585. package/lib/typescript/fake.d.ts +34 -0
  586. package/lib/typescript/fake.d.ts.map +1 -0
  587. package/lib/typescript/fake.test.d.ts +2 -0
  588. package/lib/typescript/fake.test.d.ts.map +1 -0
  589. package/lib/typescript/index.d.ts +72 -0
  590. package/lib/typescript/index.d.ts.map +1 -0
  591. package/package.json +157 -0
  592. package/rn-leveldb.podspec +30 -0
  593. package/src/fake.test.ts +37 -0
  594. package/src/fake.ts +203 -0
  595. package/src/index.ts +291 -0
@@ -0,0 +1,1086 @@
1
+ // Copyright 2008, Google Inc.
2
+ // All rights reserved.
3
+ //
4
+ // Redistribution and use in source and binary forms, with or without
5
+ // modification, are permitted provided that the following conditions are
6
+ // met:
7
+ //
8
+ // * Redistributions of source code must retain the above copyright
9
+ // notice, this list of conditions and the following disclaimer.
10
+ // * Redistributions in binary form must reproduce the above
11
+ // copyright notice, this list of conditions and the following disclaimer
12
+ // in the documentation and/or other materials provided with the
13
+ // distribution.
14
+ // * Neither the name of Google Inc. nor the names of its
15
+ // contributors may be used to endorse or promote products derived from
16
+ // this software without specific prior written permission.
17
+ //
18
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+
30
+ //
31
+ // Tests for Google Test itself. This file verifies that the parameter
32
+ // generators objects produce correct parameter sequences and that
33
+ // Google Test runtime instantiates correct tests from those sequences.
34
+
35
+ #include "gtest/gtest.h"
36
+
37
+ # include <algorithm>
38
+ # include <iostream>
39
+ # include <list>
40
+ # include <set>
41
+ # include <sstream>
42
+ # include <string>
43
+ # include <vector>
44
+
45
+ # include "src/gtest-internal-inl.h" // for UnitTestOptions
46
+ # include "test/googletest-param-test-test.h"
47
+
48
+ using ::std::vector;
49
+ using ::std::sort;
50
+
51
+ using ::testing::AddGlobalTestEnvironment;
52
+ using ::testing::Bool;
53
+ using ::testing::Combine;
54
+ using ::testing::Message;
55
+ using ::testing::Range;
56
+ using ::testing::TestWithParam;
57
+ using ::testing::Values;
58
+ using ::testing::ValuesIn;
59
+
60
+ using ::testing::internal::ParamGenerator;
61
+ using ::testing::internal::UnitTestOptions;
62
+
63
+ // Prints a value to a string.
64
+ //
65
+ // FIXME: remove PrintValue() when we move matchers and
66
+ // EXPECT_THAT() from Google Mock to Google Test. At that time, we
67
+ // can write EXPECT_THAT(x, Eq(y)) to compare two tuples x and y, as
68
+ // EXPECT_THAT() and the matchers know how to print tuples.
69
+ template <typename T>
70
+ ::std::string PrintValue(const T& value) {
71
+ return testing::PrintToString(value);
72
+ }
73
+
74
+ // Verifies that a sequence generated by the generator and accessed
75
+ // via the iterator object matches the expected one using Google Test
76
+ // assertions.
77
+ template <typename T, size_t N>
78
+ void VerifyGenerator(const ParamGenerator<T>& generator,
79
+ const T (&expected_values)[N]) {
80
+ typename ParamGenerator<T>::iterator it = generator.begin();
81
+ for (size_t i = 0; i < N; ++i) {
82
+ ASSERT_FALSE(it == generator.end())
83
+ << "At element " << i << " when accessing via an iterator "
84
+ << "created with the copy constructor.\n";
85
+ // We cannot use EXPECT_EQ() here as the values may be tuples,
86
+ // which don't support <<.
87
+ EXPECT_TRUE(expected_values[i] == *it)
88
+ << "where i is " << i
89
+ << ", expected_values[i] is " << PrintValue(expected_values[i])
90
+ << ", *it is " << PrintValue(*it)
91
+ << ", and 'it' is an iterator created with the copy constructor.\n";
92
+ ++it;
93
+ }
94
+ EXPECT_TRUE(it == generator.end())
95
+ << "At the presumed end of sequence when accessing via an iterator "
96
+ << "created with the copy constructor.\n";
97
+
98
+ // Test the iterator assignment. The following lines verify that
99
+ // the sequence accessed via an iterator initialized via the
100
+ // assignment operator (as opposed to a copy constructor) matches
101
+ // just the same.
102
+ it = generator.begin();
103
+ for (size_t i = 0; i < N; ++i) {
104
+ ASSERT_FALSE(it == generator.end())
105
+ << "At element " << i << " when accessing via an iterator "
106
+ << "created with the assignment operator.\n";
107
+ EXPECT_TRUE(expected_values[i] == *it)
108
+ << "where i is " << i
109
+ << ", expected_values[i] is " << PrintValue(expected_values[i])
110
+ << ", *it is " << PrintValue(*it)
111
+ << ", and 'it' is an iterator created with the copy constructor.\n";
112
+ ++it;
113
+ }
114
+ EXPECT_TRUE(it == generator.end())
115
+ << "At the presumed end of sequence when accessing via an iterator "
116
+ << "created with the assignment operator.\n";
117
+ }
118
+
119
+ template <typename T>
120
+ void VerifyGeneratorIsEmpty(const ParamGenerator<T>& generator) {
121
+ typename ParamGenerator<T>::iterator it = generator.begin();
122
+ EXPECT_TRUE(it == generator.end());
123
+
124
+ it = generator.begin();
125
+ EXPECT_TRUE(it == generator.end());
126
+ }
127
+
128
+ // Generator tests. They test that each of the provided generator functions
129
+ // generates an expected sequence of values. The general test pattern
130
+ // instantiates a generator using one of the generator functions,
131
+ // checks the sequence produced by the generator using its iterator API,
132
+ // and then resets the iterator back to the beginning of the sequence
133
+ // and checks the sequence again.
134
+
135
+ // Tests that iterators produced by generator functions conform to the
136
+ // ForwardIterator concept.
137
+ TEST(IteratorTest, ParamIteratorConformsToForwardIteratorConcept) {
138
+ const ParamGenerator<int> gen = Range(0, 10);
139
+ ParamGenerator<int>::iterator it = gen.begin();
140
+
141
+ // Verifies that iterator initialization works as expected.
142
+ ParamGenerator<int>::iterator it2 = it;
143
+ EXPECT_TRUE(*it == *it2) << "Initialized iterators must point to the "
144
+ << "element same as its source points to";
145
+
146
+ // Verifies that iterator assignment works as expected.
147
+ ++it;
148
+ EXPECT_FALSE(*it == *it2);
149
+ it2 = it;
150
+ EXPECT_TRUE(*it == *it2) << "Assigned iterators must point to the "
151
+ << "element same as its source points to";
152
+
153
+ // Verifies that prefix operator++() returns *this.
154
+ EXPECT_EQ(&it, &(++it)) << "Result of the prefix operator++ must be "
155
+ << "refer to the original object";
156
+
157
+ // Verifies that the result of the postfix operator++ points to the value
158
+ // pointed to by the original iterator.
159
+ int original_value = *it; // Have to compute it outside of macro call to be
160
+ // unaffected by the parameter evaluation order.
161
+ EXPECT_EQ(original_value, *(it++));
162
+
163
+ // Verifies that prefix and postfix operator++() advance an iterator
164
+ // all the same.
165
+ it2 = it;
166
+ ++it;
167
+ ++it2;
168
+ EXPECT_TRUE(*it == *it2);
169
+ }
170
+
171
+ // Tests that Range() generates the expected sequence.
172
+ TEST(RangeTest, IntRangeWithDefaultStep) {
173
+ const ParamGenerator<int> gen = Range(0, 3);
174
+ const int expected_values[] = {0, 1, 2};
175
+ VerifyGenerator(gen, expected_values);
176
+ }
177
+
178
+ // Edge case. Tests that Range() generates the single element sequence
179
+ // as expected when provided with range limits that are equal.
180
+ TEST(RangeTest, IntRangeSingleValue) {
181
+ const ParamGenerator<int> gen = Range(0, 1);
182
+ const int expected_values[] = {0};
183
+ VerifyGenerator(gen, expected_values);
184
+ }
185
+
186
+ // Edge case. Tests that Range() with generates empty sequence when
187
+ // supplied with an empty range.
188
+ TEST(RangeTest, IntRangeEmpty) {
189
+ const ParamGenerator<int> gen = Range(0, 0);
190
+ VerifyGeneratorIsEmpty(gen);
191
+ }
192
+
193
+ // Tests that Range() with custom step (greater then one) generates
194
+ // the expected sequence.
195
+ TEST(RangeTest, IntRangeWithCustomStep) {
196
+ const ParamGenerator<int> gen = Range(0, 9, 3);
197
+ const int expected_values[] = {0, 3, 6};
198
+ VerifyGenerator(gen, expected_values);
199
+ }
200
+
201
+ // Tests that Range() with custom step (greater then one) generates
202
+ // the expected sequence when the last element does not fall on the
203
+ // upper range limit. Sequences generated by Range() must not have
204
+ // elements beyond the range limits.
205
+ TEST(RangeTest, IntRangeWithCustomStepOverUpperBound) {
206
+ const ParamGenerator<int> gen = Range(0, 4, 3);
207
+ const int expected_values[] = {0, 3};
208
+ VerifyGenerator(gen, expected_values);
209
+ }
210
+
211
+ // Verifies that Range works with user-defined types that define
212
+ // copy constructor, operator=(), operator+(), and operator<().
213
+ class DogAdder {
214
+ public:
215
+ explicit DogAdder(const char* a_value) : value_(a_value) {}
216
+ DogAdder(const DogAdder& other) : value_(other.value_.c_str()) {}
217
+
218
+ DogAdder operator=(const DogAdder& other) {
219
+ if (this != &other)
220
+ value_ = other.value_;
221
+ return *this;
222
+ }
223
+ DogAdder operator+(const DogAdder& other) const {
224
+ Message msg;
225
+ msg << value_.c_str() << other.value_.c_str();
226
+ return DogAdder(msg.GetString().c_str());
227
+ }
228
+ bool operator<(const DogAdder& other) const {
229
+ return value_ < other.value_;
230
+ }
231
+ const std::string& value() const { return value_; }
232
+
233
+ private:
234
+ std::string value_;
235
+ };
236
+
237
+ TEST(RangeTest, WorksWithACustomType) {
238
+ const ParamGenerator<DogAdder> gen =
239
+ Range(DogAdder("cat"), DogAdder("catdogdog"), DogAdder("dog"));
240
+ ParamGenerator<DogAdder>::iterator it = gen.begin();
241
+
242
+ ASSERT_FALSE(it == gen.end());
243
+ EXPECT_STREQ("cat", it->value().c_str());
244
+
245
+ ASSERT_FALSE(++it == gen.end());
246
+ EXPECT_STREQ("catdog", it->value().c_str());
247
+
248
+ EXPECT_TRUE(++it == gen.end());
249
+ }
250
+
251
+ class IntWrapper {
252
+ public:
253
+ explicit IntWrapper(int a_value) : value_(a_value) {}
254
+ IntWrapper(const IntWrapper& other) : value_(other.value_) {}
255
+
256
+ IntWrapper operator=(const IntWrapper& other) {
257
+ value_ = other.value_;
258
+ return *this;
259
+ }
260
+ // operator+() adds a different type.
261
+ IntWrapper operator+(int other) const { return IntWrapper(value_ + other); }
262
+ bool operator<(const IntWrapper& other) const {
263
+ return value_ < other.value_;
264
+ }
265
+ int value() const { return value_; }
266
+
267
+ private:
268
+ int value_;
269
+ };
270
+
271
+ TEST(RangeTest, WorksWithACustomTypeWithDifferentIncrementType) {
272
+ const ParamGenerator<IntWrapper> gen = Range(IntWrapper(0), IntWrapper(2));
273
+ ParamGenerator<IntWrapper>::iterator it = gen.begin();
274
+
275
+ ASSERT_FALSE(it == gen.end());
276
+ EXPECT_EQ(0, it->value());
277
+
278
+ ASSERT_FALSE(++it == gen.end());
279
+ EXPECT_EQ(1, it->value());
280
+
281
+ EXPECT_TRUE(++it == gen.end());
282
+ }
283
+
284
+ // Tests that ValuesIn() with an array parameter generates
285
+ // the expected sequence.
286
+ TEST(ValuesInTest, ValuesInArray) {
287
+ int array[] = {3, 5, 8};
288
+ const ParamGenerator<int> gen = ValuesIn(array);
289
+ VerifyGenerator(gen, array);
290
+ }
291
+
292
+ // Tests that ValuesIn() with a const array parameter generates
293
+ // the expected sequence.
294
+ TEST(ValuesInTest, ValuesInConstArray) {
295
+ const int array[] = {3, 5, 8};
296
+ const ParamGenerator<int> gen = ValuesIn(array);
297
+ VerifyGenerator(gen, array);
298
+ }
299
+
300
+ // Edge case. Tests that ValuesIn() with an array parameter containing a
301
+ // single element generates the single element sequence.
302
+ TEST(ValuesInTest, ValuesInSingleElementArray) {
303
+ int array[] = {42};
304
+ const ParamGenerator<int> gen = ValuesIn(array);
305
+ VerifyGenerator(gen, array);
306
+ }
307
+
308
+ // Tests that ValuesIn() generates the expected sequence for an STL
309
+ // container (vector).
310
+ TEST(ValuesInTest, ValuesInVector) {
311
+ typedef ::std::vector<int> ContainerType;
312
+ ContainerType values;
313
+ values.push_back(3);
314
+ values.push_back(5);
315
+ values.push_back(8);
316
+ const ParamGenerator<int> gen = ValuesIn(values);
317
+
318
+ const int expected_values[] = {3, 5, 8};
319
+ VerifyGenerator(gen, expected_values);
320
+ }
321
+
322
+ // Tests that ValuesIn() generates the expected sequence.
323
+ TEST(ValuesInTest, ValuesInIteratorRange) {
324
+ typedef ::std::vector<int> ContainerType;
325
+ ContainerType values;
326
+ values.push_back(3);
327
+ values.push_back(5);
328
+ values.push_back(8);
329
+ const ParamGenerator<int> gen = ValuesIn(values.begin(), values.end());
330
+
331
+ const int expected_values[] = {3, 5, 8};
332
+ VerifyGenerator(gen, expected_values);
333
+ }
334
+
335
+ // Edge case. Tests that ValuesIn() provided with an iterator range specifying a
336
+ // single value generates a single-element sequence.
337
+ TEST(ValuesInTest, ValuesInSingleElementIteratorRange) {
338
+ typedef ::std::vector<int> ContainerType;
339
+ ContainerType values;
340
+ values.push_back(42);
341
+ const ParamGenerator<int> gen = ValuesIn(values.begin(), values.end());
342
+
343
+ const int expected_values[] = {42};
344
+ VerifyGenerator(gen, expected_values);
345
+ }
346
+
347
+ // Edge case. Tests that ValuesIn() provided with an empty iterator range
348
+ // generates an empty sequence.
349
+ TEST(ValuesInTest, ValuesInEmptyIteratorRange) {
350
+ typedef ::std::vector<int> ContainerType;
351
+ ContainerType values;
352
+ const ParamGenerator<int> gen = ValuesIn(values.begin(), values.end());
353
+
354
+ VerifyGeneratorIsEmpty(gen);
355
+ }
356
+
357
+ // Tests that the Values() generates the expected sequence.
358
+ TEST(ValuesTest, ValuesWorks) {
359
+ const ParamGenerator<int> gen = Values(3, 5, 8);
360
+
361
+ const int expected_values[] = {3, 5, 8};
362
+ VerifyGenerator(gen, expected_values);
363
+ }
364
+
365
+ // Tests that Values() generates the expected sequences from elements of
366
+ // different types convertible to ParamGenerator's parameter type.
367
+ TEST(ValuesTest, ValuesWorksForValuesOfCompatibleTypes) {
368
+ const ParamGenerator<double> gen = Values(3, 5.0f, 8.0);
369
+
370
+ const double expected_values[] = {3.0, 5.0, 8.0};
371
+ VerifyGenerator(gen, expected_values);
372
+ }
373
+
374
+ TEST(ValuesTest, ValuesWorksForMaxLengthList) {
375
+ const ParamGenerator<int> gen = Values(
376
+ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
377
+ 110, 120, 130, 140, 150, 160, 170, 180, 190, 200,
378
+ 210, 220, 230, 240, 250, 260, 270, 280, 290, 300,
379
+ 310, 320, 330, 340, 350, 360, 370, 380, 390, 400,
380
+ 410, 420, 430, 440, 450, 460, 470, 480, 490, 500);
381
+
382
+ const int expected_values[] = {
383
+ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
384
+ 110, 120, 130, 140, 150, 160, 170, 180, 190, 200,
385
+ 210, 220, 230, 240, 250, 260, 270, 280, 290, 300,
386
+ 310, 320, 330, 340, 350, 360, 370, 380, 390, 400,
387
+ 410, 420, 430, 440, 450, 460, 470, 480, 490, 500};
388
+ VerifyGenerator(gen, expected_values);
389
+ }
390
+
391
+ // Edge case test. Tests that single-parameter Values() generates the sequence
392
+ // with the single value.
393
+ TEST(ValuesTest, ValuesWithSingleParameter) {
394
+ const ParamGenerator<int> gen = Values(42);
395
+
396
+ const int expected_values[] = {42};
397
+ VerifyGenerator(gen, expected_values);
398
+ }
399
+
400
+ // Tests that Bool() generates sequence (false, true).
401
+ TEST(BoolTest, BoolWorks) {
402
+ const ParamGenerator<bool> gen = Bool();
403
+
404
+ const bool expected_values[] = {false, true};
405
+ VerifyGenerator(gen, expected_values);
406
+ }
407
+
408
+ // Tests that Combine() with two parameters generates the expected sequence.
409
+ TEST(CombineTest, CombineWithTwoParameters) {
410
+ const char* foo = "foo";
411
+ const char* bar = "bar";
412
+ const ParamGenerator<std::tuple<const char*, int> > gen =
413
+ Combine(Values(foo, bar), Values(3, 4));
414
+
415
+ std::tuple<const char*, int> expected_values[] = {
416
+ std::make_tuple(foo, 3), std::make_tuple(foo, 4), std::make_tuple(bar, 3),
417
+ std::make_tuple(bar, 4)};
418
+ VerifyGenerator(gen, expected_values);
419
+ }
420
+
421
+ // Tests that Combine() with three parameters generates the expected sequence.
422
+ TEST(CombineTest, CombineWithThreeParameters) {
423
+ const ParamGenerator<std::tuple<int, int, int> > gen =
424
+ Combine(Values(0, 1), Values(3, 4), Values(5, 6));
425
+ std::tuple<int, int, int> expected_values[] = {
426
+ std::make_tuple(0, 3, 5), std::make_tuple(0, 3, 6),
427
+ std::make_tuple(0, 4, 5), std::make_tuple(0, 4, 6),
428
+ std::make_tuple(1, 3, 5), std::make_tuple(1, 3, 6),
429
+ std::make_tuple(1, 4, 5), std::make_tuple(1, 4, 6)};
430
+ VerifyGenerator(gen, expected_values);
431
+ }
432
+
433
+ // Tests that the Combine() with the first parameter generating a single value
434
+ // sequence generates a sequence with the number of elements equal to the
435
+ // number of elements in the sequence generated by the second parameter.
436
+ TEST(CombineTest, CombineWithFirstParameterSingleValue) {
437
+ const ParamGenerator<std::tuple<int, int> > gen =
438
+ Combine(Values(42), Values(0, 1));
439
+
440
+ std::tuple<int, int> expected_values[] = {std::make_tuple(42, 0),
441
+ std::make_tuple(42, 1)};
442
+ VerifyGenerator(gen, expected_values);
443
+ }
444
+
445
+ // Tests that the Combine() with the second parameter generating a single value
446
+ // sequence generates a sequence with the number of elements equal to the
447
+ // number of elements in the sequence generated by the first parameter.
448
+ TEST(CombineTest, CombineWithSecondParameterSingleValue) {
449
+ const ParamGenerator<std::tuple<int, int> > gen =
450
+ Combine(Values(0, 1), Values(42));
451
+
452
+ std::tuple<int, int> expected_values[] = {std::make_tuple(0, 42),
453
+ std::make_tuple(1, 42)};
454
+ VerifyGenerator(gen, expected_values);
455
+ }
456
+
457
+ // Tests that when the first parameter produces an empty sequence,
458
+ // Combine() produces an empty sequence, too.
459
+ TEST(CombineTest, CombineWithFirstParameterEmptyRange) {
460
+ const ParamGenerator<std::tuple<int, int> > gen =
461
+ Combine(Range(0, 0), Values(0, 1));
462
+ VerifyGeneratorIsEmpty(gen);
463
+ }
464
+
465
+ // Tests that when the second parameter produces an empty sequence,
466
+ // Combine() produces an empty sequence, too.
467
+ TEST(CombineTest, CombineWithSecondParameterEmptyRange) {
468
+ const ParamGenerator<std::tuple<int, int> > gen =
469
+ Combine(Values(0, 1), Range(1, 1));
470
+ VerifyGeneratorIsEmpty(gen);
471
+ }
472
+
473
+ // Edge case. Tests that combine works with the maximum number
474
+ // of parameters supported by Google Test (currently 10).
475
+ TEST(CombineTest, CombineWithMaxNumberOfParameters) {
476
+ const char* foo = "foo";
477
+ const char* bar = "bar";
478
+ const ParamGenerator<
479
+ std::tuple<const char*, int, int, int, int, int, int, int, int, int> >
480
+ gen =
481
+ Combine(Values(foo, bar), Values(1), Values(2), Values(3), Values(4),
482
+ Values(5), Values(6), Values(7), Values(8), Values(9));
483
+
484
+ std::tuple<const char*, int, int, int, int, int, int, int, int, int>
485
+ expected_values[] = {std::make_tuple(foo, 1, 2, 3, 4, 5, 6, 7, 8, 9),
486
+ std::make_tuple(bar, 1, 2, 3, 4, 5, 6, 7, 8, 9)};
487
+ VerifyGenerator(gen, expected_values);
488
+ }
489
+
490
+ class NonDefaultConstructAssignString {
491
+ public:
492
+ NonDefaultConstructAssignString(const std::string& s) : str_(s) {}
493
+
494
+ const std::string& str() const { return str_; }
495
+
496
+ private:
497
+ std::string str_;
498
+
499
+ // Not default constructible
500
+ NonDefaultConstructAssignString();
501
+ // Not assignable
502
+ void operator=(const NonDefaultConstructAssignString&);
503
+ };
504
+
505
+ TEST(CombineTest, NonDefaultConstructAssign) {
506
+ const ParamGenerator<std::tuple<int, NonDefaultConstructAssignString> > gen =
507
+ Combine(Values(0, 1), Values(NonDefaultConstructAssignString("A"),
508
+ NonDefaultConstructAssignString("B")));
509
+
510
+ ParamGenerator<std::tuple<int, NonDefaultConstructAssignString> >::iterator
511
+ it = gen.begin();
512
+
513
+ EXPECT_EQ(0, std::get<0>(*it));
514
+ EXPECT_EQ("A", std::get<1>(*it).str());
515
+ ++it;
516
+
517
+ EXPECT_EQ(0, std::get<0>(*it));
518
+ EXPECT_EQ("B", std::get<1>(*it).str());
519
+ ++it;
520
+
521
+ EXPECT_EQ(1, std::get<0>(*it));
522
+ EXPECT_EQ("A", std::get<1>(*it).str());
523
+ ++it;
524
+
525
+ EXPECT_EQ(1, std::get<0>(*it));
526
+ EXPECT_EQ("B", std::get<1>(*it).str());
527
+ ++it;
528
+
529
+ EXPECT_TRUE(it == gen.end());
530
+ }
531
+
532
+
533
+ // Tests that an generator produces correct sequence after being
534
+ // assigned from another generator.
535
+ TEST(ParamGeneratorTest, AssignmentWorks) {
536
+ ParamGenerator<int> gen = Values(1, 2);
537
+ const ParamGenerator<int> gen2 = Values(3, 4);
538
+ gen = gen2;
539
+
540
+ const int expected_values[] = {3, 4};
541
+ VerifyGenerator(gen, expected_values);
542
+ }
543
+
544
+ // This test verifies that the tests are expanded and run as specified:
545
+ // one test per element from the sequence produced by the generator
546
+ // specified in INSTANTIATE_TEST_SUITE_P. It also verifies that the test's
547
+ // fixture constructor, SetUp(), and TearDown() have run and have been
548
+ // supplied with the correct parameters.
549
+
550
+ // The use of environment object allows detection of the case where no test
551
+ // case functionality is run at all. In this case TearDownTestSuite will not
552
+ // be able to detect missing tests, naturally.
553
+ template <int kExpectedCalls>
554
+ class TestGenerationEnvironment : public ::testing::Environment {
555
+ public:
556
+ static TestGenerationEnvironment* Instance() {
557
+ static TestGenerationEnvironment* instance = new TestGenerationEnvironment;
558
+ return instance;
559
+ }
560
+
561
+ void FixtureConstructorExecuted() { fixture_constructor_count_++; }
562
+ void SetUpExecuted() { set_up_count_++; }
563
+ void TearDownExecuted() { tear_down_count_++; }
564
+ void TestBodyExecuted() { test_body_count_++; }
565
+
566
+ void TearDown() override {
567
+ // If all MultipleTestGenerationTest tests have been de-selected
568
+ // by the filter flag, the following checks make no sense.
569
+ bool perform_check = false;
570
+
571
+ for (int i = 0; i < kExpectedCalls; ++i) {
572
+ Message msg;
573
+ msg << "TestsExpandedAndRun/" << i;
574
+ if (UnitTestOptions::FilterMatchesTest(
575
+ "TestExpansionModule/MultipleTestGenerationTest",
576
+ msg.GetString().c_str())) {
577
+ perform_check = true;
578
+ }
579
+ }
580
+ if (perform_check) {
581
+ EXPECT_EQ(kExpectedCalls, fixture_constructor_count_)
582
+ << "Fixture constructor of ParamTestGenerationTest test case "
583
+ << "has not been run as expected.";
584
+ EXPECT_EQ(kExpectedCalls, set_up_count_)
585
+ << "Fixture SetUp method of ParamTestGenerationTest test case "
586
+ << "has not been run as expected.";
587
+ EXPECT_EQ(kExpectedCalls, tear_down_count_)
588
+ << "Fixture TearDown method of ParamTestGenerationTest test case "
589
+ << "has not been run as expected.";
590
+ EXPECT_EQ(kExpectedCalls, test_body_count_)
591
+ << "Test in ParamTestGenerationTest test case "
592
+ << "has not been run as expected.";
593
+ }
594
+ }
595
+
596
+ private:
597
+ TestGenerationEnvironment() : fixture_constructor_count_(0), set_up_count_(0),
598
+ tear_down_count_(0), test_body_count_(0) {}
599
+
600
+ int fixture_constructor_count_;
601
+ int set_up_count_;
602
+ int tear_down_count_;
603
+ int test_body_count_;
604
+
605
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestGenerationEnvironment);
606
+ };
607
+
608
+ const int test_generation_params[] = {36, 42, 72};
609
+
610
+ class TestGenerationTest : public TestWithParam<int> {
611
+ public:
612
+ enum {
613
+ PARAMETER_COUNT =
614
+ sizeof(test_generation_params)/sizeof(test_generation_params[0])
615
+ };
616
+
617
+ typedef TestGenerationEnvironment<PARAMETER_COUNT> Environment;
618
+
619
+ TestGenerationTest() {
620
+ Environment::Instance()->FixtureConstructorExecuted();
621
+ current_parameter_ = GetParam();
622
+ }
623
+ void SetUp() override {
624
+ Environment::Instance()->SetUpExecuted();
625
+ EXPECT_EQ(current_parameter_, GetParam());
626
+ }
627
+ void TearDown() override {
628
+ Environment::Instance()->TearDownExecuted();
629
+ EXPECT_EQ(current_parameter_, GetParam());
630
+ }
631
+
632
+ static void SetUpTestSuite() {
633
+ bool all_tests_in_test_case_selected = true;
634
+
635
+ for (int i = 0; i < PARAMETER_COUNT; ++i) {
636
+ Message test_name;
637
+ test_name << "TestsExpandedAndRun/" << i;
638
+ if ( !UnitTestOptions::FilterMatchesTest(
639
+ "TestExpansionModule/MultipleTestGenerationTest",
640
+ test_name.GetString())) {
641
+ all_tests_in_test_case_selected = false;
642
+ }
643
+ }
644
+ EXPECT_TRUE(all_tests_in_test_case_selected)
645
+ << "When running the TestGenerationTest test case all of its tests\n"
646
+ << "must be selected by the filter flag for the test case to pass.\n"
647
+ << "If not all of them are enabled, we can't reliably conclude\n"
648
+ << "that the correct number of tests have been generated.";
649
+
650
+ collected_parameters_.clear();
651
+ }
652
+
653
+ static void TearDownTestSuite() {
654
+ vector<int> expected_values(test_generation_params,
655
+ test_generation_params + PARAMETER_COUNT);
656
+ // Test execution order is not guaranteed by Google Test,
657
+ // so the order of values in collected_parameters_ can be
658
+ // different and we have to sort to compare.
659
+ sort(expected_values.begin(), expected_values.end());
660
+ sort(collected_parameters_.begin(), collected_parameters_.end());
661
+
662
+ EXPECT_TRUE(collected_parameters_ == expected_values);
663
+ }
664
+
665
+ protected:
666
+ int current_parameter_;
667
+ static vector<int> collected_parameters_;
668
+
669
+ private:
670
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestGenerationTest);
671
+ };
672
+ vector<int> TestGenerationTest::collected_parameters_;
673
+
674
+ TEST_P(TestGenerationTest, TestsExpandedAndRun) {
675
+ Environment::Instance()->TestBodyExecuted();
676
+ EXPECT_EQ(current_parameter_, GetParam());
677
+ collected_parameters_.push_back(GetParam());
678
+ }
679
+ INSTANTIATE_TEST_SUITE_P(TestExpansionModule, TestGenerationTest,
680
+ ValuesIn(test_generation_params));
681
+
682
+ // This test verifies that the element sequence (third parameter of
683
+ // INSTANTIATE_TEST_SUITE_P) is evaluated in InitGoogleTest() and neither at
684
+ // the call site of INSTANTIATE_TEST_SUITE_P nor in RUN_ALL_TESTS(). For
685
+ // that, we declare param_value_ to be a static member of
686
+ // GeneratorEvaluationTest and initialize it to 0. We set it to 1 in
687
+ // main(), just before invocation of InitGoogleTest(). After calling
688
+ // InitGoogleTest(), we set the value to 2. If the sequence is evaluated
689
+ // before or after InitGoogleTest, INSTANTIATE_TEST_SUITE_P will create a
690
+ // test with parameter other than 1, and the test body will fail the
691
+ // assertion.
692
+ class GeneratorEvaluationTest : public TestWithParam<int> {
693
+ public:
694
+ static int param_value() { return param_value_; }
695
+ static void set_param_value(int param_value) { param_value_ = param_value; }
696
+
697
+ private:
698
+ static int param_value_;
699
+ };
700
+ int GeneratorEvaluationTest::param_value_ = 0;
701
+
702
+ TEST_P(GeneratorEvaluationTest, GeneratorsEvaluatedInMain) {
703
+ EXPECT_EQ(1, GetParam());
704
+ }
705
+ INSTANTIATE_TEST_SUITE_P(GenEvalModule, GeneratorEvaluationTest,
706
+ Values(GeneratorEvaluationTest::param_value()));
707
+
708
+ // Tests that generators defined in a different translation unit are
709
+ // functional. Generator extern_gen is defined in gtest-param-test_test2.cc.
710
+ extern ParamGenerator<int> extern_gen;
711
+ class ExternalGeneratorTest : public TestWithParam<int> {};
712
+ TEST_P(ExternalGeneratorTest, ExternalGenerator) {
713
+ // Sequence produced by extern_gen contains only a single value
714
+ // which we verify here.
715
+ EXPECT_EQ(GetParam(), 33);
716
+ }
717
+ INSTANTIATE_TEST_SUITE_P(ExternalGeneratorModule, ExternalGeneratorTest,
718
+ extern_gen);
719
+
720
+ // Tests that a parameterized test case can be defined in one translation
721
+ // unit and instantiated in another. This test will be instantiated in
722
+ // gtest-param-test_test2.cc. ExternalInstantiationTest fixture class is
723
+ // defined in gtest-param-test_test.h.
724
+ TEST_P(ExternalInstantiationTest, IsMultipleOf33) {
725
+ EXPECT_EQ(0, GetParam() % 33);
726
+ }
727
+
728
+ // Tests that a parameterized test case can be instantiated with multiple
729
+ // generators.
730
+ class MultipleInstantiationTest : public TestWithParam<int> {};
731
+ TEST_P(MultipleInstantiationTest, AllowsMultipleInstances) {
732
+ }
733
+ INSTANTIATE_TEST_SUITE_P(Sequence1, MultipleInstantiationTest, Values(1, 2));
734
+ INSTANTIATE_TEST_SUITE_P(Sequence2, MultipleInstantiationTest, Range(3, 5));
735
+
736
+ // Tests that a parameterized test case can be instantiated
737
+ // in multiple translation units. This test will be instantiated
738
+ // here and in gtest-param-test_test2.cc.
739
+ // InstantiationInMultipleTranslationUnitsTest fixture class
740
+ // is defined in gtest-param-test_test.h.
741
+ TEST_P(InstantiationInMultipleTranslationUnitsTest, IsMultipleOf42) {
742
+ EXPECT_EQ(0, GetParam() % 42);
743
+ }
744
+ INSTANTIATE_TEST_SUITE_P(Sequence1, InstantiationInMultipleTranslationUnitsTest,
745
+ Values(42, 42 * 2));
746
+
747
+ // Tests that each iteration of parameterized test runs in a separate test
748
+ // object.
749
+ class SeparateInstanceTest : public TestWithParam<int> {
750
+ public:
751
+ SeparateInstanceTest() : count_(0) {}
752
+
753
+ static void TearDownTestSuite() {
754
+ EXPECT_GE(global_count_, 2)
755
+ << "If some (but not all) SeparateInstanceTest tests have been "
756
+ << "filtered out this test will fail. Make sure that all "
757
+ << "GeneratorEvaluationTest are selected or de-selected together "
758
+ << "by the test filter.";
759
+ }
760
+
761
+ protected:
762
+ int count_;
763
+ static int global_count_;
764
+ };
765
+ int SeparateInstanceTest::global_count_ = 0;
766
+
767
+ TEST_P(SeparateInstanceTest, TestsRunInSeparateInstances) {
768
+ EXPECT_EQ(0, count_++);
769
+ global_count_++;
770
+ }
771
+ INSTANTIATE_TEST_SUITE_P(FourElemSequence, SeparateInstanceTest, Range(1, 4));
772
+
773
+ // Tests that all instantiations of a test have named appropriately. Test
774
+ // defined with TEST_P(TestSuiteName, TestName) and instantiated with
775
+ // INSTANTIATE_TEST_SUITE_P(SequenceName, TestSuiteName, generator) must be
776
+ // named SequenceName/TestSuiteName.TestName/i, where i is the 0-based index of
777
+ // the sequence element used to instantiate the test.
778
+ class NamingTest : public TestWithParam<int> {};
779
+
780
+ TEST_P(NamingTest, TestsReportCorrectNamesAndParameters) {
781
+ const ::testing::TestInfo* const test_info =
782
+ ::testing::UnitTest::GetInstance()->current_test_info();
783
+
784
+ EXPECT_STREQ("ZeroToFiveSequence/NamingTest", test_info->test_suite_name());
785
+
786
+ Message index_stream;
787
+ index_stream << "TestsReportCorrectNamesAndParameters/" << GetParam();
788
+ EXPECT_STREQ(index_stream.GetString().c_str(), test_info->name());
789
+
790
+ EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param());
791
+ }
792
+
793
+ INSTANTIATE_TEST_SUITE_P(ZeroToFiveSequence, NamingTest, Range(0, 5));
794
+
795
+ // Tests that macros in test names are expanded correctly.
796
+ class MacroNamingTest : public TestWithParam<int> {};
797
+
798
+ #define PREFIX_WITH_FOO(test_name) Foo##test_name
799
+ #define PREFIX_WITH_MACRO(test_name) Macro##test_name
800
+
801
+ TEST_P(PREFIX_WITH_MACRO(NamingTest), PREFIX_WITH_FOO(SomeTestName)) {
802
+ const ::testing::TestInfo* const test_info =
803
+ ::testing::UnitTest::GetInstance()->current_test_info();
804
+
805
+ EXPECT_STREQ("FortyTwo/MacroNamingTest", test_info->test_suite_name());
806
+ EXPECT_STREQ("FooSomeTestName/0", test_info->name());
807
+ }
808
+
809
+ INSTANTIATE_TEST_SUITE_P(FortyTwo, MacroNamingTest, Values(42));
810
+
811
+ // Tests the same thing for non-parametrized tests.
812
+ class MacroNamingTestNonParametrized : public ::testing::Test {};
813
+
814
+ TEST_F(PREFIX_WITH_MACRO(NamingTestNonParametrized),
815
+ PREFIX_WITH_FOO(SomeTestName)) {
816
+ const ::testing::TestInfo* const test_info =
817
+ ::testing::UnitTest::GetInstance()->current_test_info();
818
+
819
+ EXPECT_STREQ("MacroNamingTestNonParametrized", test_info->test_suite_name());
820
+ EXPECT_STREQ("FooSomeTestName", test_info->name());
821
+ }
822
+
823
+ TEST(MacroNameing, LookupNames) {
824
+ std::set<std::string> know_suite_names, know_test_names;
825
+
826
+ auto ins = testing::UnitTest::GetInstance();
827
+ int ts = 0;
828
+ while (const testing::TestSuite* suite = ins->GetTestSuite(ts++)) {
829
+ know_suite_names.insert(suite->name());
830
+
831
+ int ti = 0;
832
+ while (const testing::TestInfo* info = suite->GetTestInfo(ti++)) {
833
+ know_test_names.insert(std::string(suite->name()) + "." + info->name());
834
+ }
835
+ }
836
+
837
+ // Check that the expected form of the test suit name actualy exists.
838
+ EXPECT_NE( //
839
+ know_suite_names.find("FortyTwo/MacroNamingTest"),
840
+ know_suite_names.end());
841
+ EXPECT_NE(
842
+ know_suite_names.find("MacroNamingTestNonParametrized"),
843
+ know_suite_names.end());
844
+ // Check that the expected form of the test name actualy exists.
845
+ EXPECT_NE( //
846
+ know_test_names.find("FortyTwo/MacroNamingTest.FooSomeTestName/0"),
847
+ know_test_names.end());
848
+ EXPECT_NE(
849
+ know_test_names.find("MacroNamingTestNonParametrized.FooSomeTestName"),
850
+ know_test_names.end());
851
+ }
852
+
853
+ // Tests that user supplied custom parameter names are working correctly.
854
+ // Runs the test with a builtin helper method which uses PrintToString,
855
+ // as well as a custom function and custom functor to ensure all possible
856
+ // uses work correctly.
857
+ class CustomFunctorNamingTest : public TestWithParam<std::string> {};
858
+ TEST_P(CustomFunctorNamingTest, CustomTestNames) {}
859
+
860
+ struct CustomParamNameFunctor {
861
+ std::string operator()(const ::testing::TestParamInfo<std::string>& inf) {
862
+ return inf.param;
863
+ }
864
+ };
865
+
866
+ INSTANTIATE_TEST_SUITE_P(CustomParamNameFunctor, CustomFunctorNamingTest,
867
+ Values(std::string("FunctorName")),
868
+ CustomParamNameFunctor());
869
+
870
+ INSTANTIATE_TEST_SUITE_P(AllAllowedCharacters, CustomFunctorNamingTest,
871
+ Values("abcdefghijklmnopqrstuvwxyz",
872
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "01234567890_"),
873
+ CustomParamNameFunctor());
874
+
875
+ inline std::string CustomParamNameFunction(
876
+ const ::testing::TestParamInfo<std::string>& inf) {
877
+ return inf.param;
878
+ }
879
+
880
+ class CustomFunctionNamingTest : public TestWithParam<std::string> {};
881
+ TEST_P(CustomFunctionNamingTest, CustomTestNames) {}
882
+
883
+ INSTANTIATE_TEST_SUITE_P(CustomParamNameFunction, CustomFunctionNamingTest,
884
+ Values(std::string("FunctionName")),
885
+ CustomParamNameFunction);
886
+
887
+ INSTANTIATE_TEST_SUITE_P(CustomParamNameFunctionP, CustomFunctionNamingTest,
888
+ Values(std::string("FunctionNameP")),
889
+ &CustomParamNameFunction);
890
+
891
+ // Test custom naming with a lambda
892
+
893
+ class CustomLambdaNamingTest : public TestWithParam<std::string> {};
894
+ TEST_P(CustomLambdaNamingTest, CustomTestNames) {}
895
+
896
+ INSTANTIATE_TEST_SUITE_P(CustomParamNameLambda, CustomLambdaNamingTest,
897
+ Values(std::string("LambdaName")),
898
+ [](const ::testing::TestParamInfo<std::string>& inf) {
899
+ return inf.param;
900
+ });
901
+
902
+ TEST(CustomNamingTest, CheckNameRegistry) {
903
+ ::testing::UnitTest* unit_test = ::testing::UnitTest::GetInstance();
904
+ std::set<std::string> test_names;
905
+ for (int suite_num = 0; suite_num < unit_test->total_test_suite_count();
906
+ ++suite_num) {
907
+ const ::testing::TestSuite* test_suite = unit_test->GetTestSuite(suite_num);
908
+ for (int test_num = 0; test_num < test_suite->total_test_count();
909
+ ++test_num) {
910
+ const ::testing::TestInfo* test_info = test_suite->GetTestInfo(test_num);
911
+ test_names.insert(std::string(test_info->name()));
912
+ }
913
+ }
914
+ EXPECT_EQ(1u, test_names.count("CustomTestNames/FunctorName"));
915
+ EXPECT_EQ(1u, test_names.count("CustomTestNames/FunctionName"));
916
+ EXPECT_EQ(1u, test_names.count("CustomTestNames/FunctionNameP"));
917
+ EXPECT_EQ(1u, test_names.count("CustomTestNames/LambdaName"));
918
+ }
919
+
920
+ // Test a numeric name to ensure PrintToStringParamName works correctly.
921
+
922
+ class CustomIntegerNamingTest : public TestWithParam<int> {};
923
+
924
+ TEST_P(CustomIntegerNamingTest, TestsReportCorrectNames) {
925
+ const ::testing::TestInfo* const test_info =
926
+ ::testing::UnitTest::GetInstance()->current_test_info();
927
+ Message test_name_stream;
928
+ test_name_stream << "TestsReportCorrectNames/" << GetParam();
929
+ EXPECT_STREQ(test_name_stream.GetString().c_str(), test_info->name());
930
+ }
931
+
932
+ INSTANTIATE_TEST_SUITE_P(PrintToString, CustomIntegerNamingTest, Range(0, 5),
933
+ ::testing::PrintToStringParamName());
934
+
935
+ // Test a custom struct with PrintToString.
936
+
937
+ struct CustomStruct {
938
+ explicit CustomStruct(int value) : x(value) {}
939
+ int x;
940
+ };
941
+
942
+ std::ostream& operator<<(std::ostream& stream, const CustomStruct& val) {
943
+ stream << val.x;
944
+ return stream;
945
+ }
946
+
947
+ class CustomStructNamingTest : public TestWithParam<CustomStruct> {};
948
+
949
+ TEST_P(CustomStructNamingTest, TestsReportCorrectNames) {
950
+ const ::testing::TestInfo* const test_info =
951
+ ::testing::UnitTest::GetInstance()->current_test_info();
952
+ Message test_name_stream;
953
+ test_name_stream << "TestsReportCorrectNames/" << GetParam();
954
+ EXPECT_STREQ(test_name_stream.GetString().c_str(), test_info->name());
955
+ }
956
+
957
+ INSTANTIATE_TEST_SUITE_P(PrintToString, CustomStructNamingTest,
958
+ Values(CustomStruct(0), CustomStruct(1)),
959
+ ::testing::PrintToStringParamName());
960
+
961
+ // Test that using a stateful parameter naming function works as expected.
962
+
963
+ struct StatefulNamingFunctor {
964
+ StatefulNamingFunctor() : sum(0) {}
965
+ std::string operator()(const ::testing::TestParamInfo<int>& info) {
966
+ int value = info.param + sum;
967
+ sum += info.param;
968
+ return ::testing::PrintToString(value);
969
+ }
970
+ int sum;
971
+ };
972
+
973
+ class StatefulNamingTest : public ::testing::TestWithParam<int> {
974
+ protected:
975
+ StatefulNamingTest() : sum_(0) {}
976
+ int sum_;
977
+ };
978
+
979
+ TEST_P(StatefulNamingTest, TestsReportCorrectNames) {
980
+ const ::testing::TestInfo* const test_info =
981
+ ::testing::UnitTest::GetInstance()->current_test_info();
982
+ sum_ += GetParam();
983
+ Message test_name_stream;
984
+ test_name_stream << "TestsReportCorrectNames/" << sum_;
985
+ EXPECT_STREQ(test_name_stream.GetString().c_str(), test_info->name());
986
+ }
987
+
988
+ INSTANTIATE_TEST_SUITE_P(StatefulNamingFunctor, StatefulNamingTest, Range(0, 5),
989
+ StatefulNamingFunctor());
990
+
991
+ // Class that cannot be streamed into an ostream. It needs to be copyable
992
+ // (and, in case of MSVC, also assignable) in order to be a test parameter
993
+ // type. Its default copy constructor and assignment operator do exactly
994
+ // what we need.
995
+ class Unstreamable {
996
+ public:
997
+ explicit Unstreamable(int value) : value_(value) {}
998
+ // -Wunused-private-field: dummy accessor for `value_`.
999
+ const int& dummy_value() const { return value_; }
1000
+
1001
+ private:
1002
+ int value_;
1003
+ };
1004
+
1005
+ class CommentTest : public TestWithParam<Unstreamable> {};
1006
+
1007
+ TEST_P(CommentTest, TestsCorrectlyReportUnstreamableParams) {
1008
+ const ::testing::TestInfo* const test_info =
1009
+ ::testing::UnitTest::GetInstance()->current_test_info();
1010
+
1011
+ EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param());
1012
+ }
1013
+
1014
+ INSTANTIATE_TEST_SUITE_P(InstantiationWithComments, CommentTest,
1015
+ Values(Unstreamable(1)));
1016
+
1017
+ // Verify that we can create a hierarchy of test fixtures, where the base
1018
+ // class fixture is not parameterized and the derived class is. In this case
1019
+ // ParameterizedDerivedTest inherits from NonParameterizedBaseTest. We
1020
+ // perform simple tests on both.
1021
+ class NonParameterizedBaseTest : public ::testing::Test {
1022
+ public:
1023
+ NonParameterizedBaseTest() : n_(17) { }
1024
+ protected:
1025
+ int n_;
1026
+ };
1027
+
1028
+ class ParameterizedDerivedTest : public NonParameterizedBaseTest,
1029
+ public ::testing::WithParamInterface<int> {
1030
+ protected:
1031
+ ParameterizedDerivedTest() : count_(0) { }
1032
+ int count_;
1033
+ static int global_count_;
1034
+ };
1035
+
1036
+ int ParameterizedDerivedTest::global_count_ = 0;
1037
+
1038
+ TEST_F(NonParameterizedBaseTest, FixtureIsInitialized) {
1039
+ EXPECT_EQ(17, n_);
1040
+ }
1041
+
1042
+ TEST_P(ParameterizedDerivedTest, SeesSequence) {
1043
+ EXPECT_EQ(17, n_);
1044
+ EXPECT_EQ(0, count_++);
1045
+ EXPECT_EQ(GetParam(), global_count_++);
1046
+ }
1047
+
1048
+ class ParameterizedDeathTest : public ::testing::TestWithParam<int> { };
1049
+
1050
+ TEST_F(ParameterizedDeathTest, GetParamDiesFromTestF) {
1051
+ EXPECT_DEATH_IF_SUPPORTED(GetParam(),
1052
+ ".* value-parameterized test .*");
1053
+ }
1054
+
1055
+ INSTANTIATE_TEST_SUITE_P(RangeZeroToFive, ParameterizedDerivedTest,
1056
+ Range(0, 5));
1057
+
1058
+ // Tests param generator working with Enums
1059
+ enum MyEnums {
1060
+ ENUM1 = 1,
1061
+ ENUM2 = 3,
1062
+ ENUM3 = 8,
1063
+ };
1064
+
1065
+ class MyEnumTest : public testing::TestWithParam<MyEnums> {};
1066
+
1067
+ TEST_P(MyEnumTest, ChecksParamMoreThanZero) { EXPECT_GE(10, GetParam()); }
1068
+ INSTANTIATE_TEST_SUITE_P(MyEnumTests, MyEnumTest,
1069
+ ::testing::Values(ENUM1, ENUM2, 0));
1070
+
1071
+ int main(int argc, char **argv) {
1072
+ // Used in TestGenerationTest test suite.
1073
+ AddGlobalTestEnvironment(TestGenerationTest::Environment::Instance());
1074
+ // Used in GeneratorEvaluationTest test suite. Tests that the updated value
1075
+ // will be picked up for instantiating tests in GeneratorEvaluationTest.
1076
+ GeneratorEvaluationTest::set_param_value(1);
1077
+
1078
+ ::testing::InitGoogleTest(&argc, argv);
1079
+
1080
+ // Used in GeneratorEvaluationTest test suite. Tests that value updated
1081
+ // here will NOT be used for instantiating tests in
1082
+ // GeneratorEvaluationTest.
1083
+ GeneratorEvaluationTest::set_param_value(2);
1084
+
1085
+ return RUN_ALL_TESTS();
1086
+ }