rj_schema 0.0.1 → 0.0.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 (323) hide show
  1. checksums.yaml +5 -5
  2. data/Rakefile +4 -0
  3. data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +16 -0
  4. data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +141 -0
  5. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +126 -0
  6. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +202 -0
  7. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +40 -0
  8. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/LICENSE +28 -0
  9. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/Makefile.am +224 -0
  10. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +333 -0
  11. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +146 -0
  12. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +562 -0
  13. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +3675 -0
  14. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +280 -0
  15. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DevGuide.md +132 -0
  16. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +12 -0
  17. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +439 -0
  18. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +628 -0
  19. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +19 -0
  20. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CheatSheet.md +525 -0
  21. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CookBook.md +3250 -0
  22. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/Documentation.md +11 -0
  23. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/ForDummies.md +439 -0
  24. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +624 -0
  25. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CheatSheet.md +534 -0
  26. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CookBook.md +3342 -0
  27. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/Documentation.md +12 -0
  28. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/ForDummies.md +439 -0
  29. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +628 -0
  30. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CheatSheet.md +556 -0
  31. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CookBook.md +3432 -0
  32. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/Documentation.md +12 -0
  33. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/ForDummies.md +439 -0
  34. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +628 -0
  35. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +1205 -0
  36. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +147 -0
  37. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +2377 -0
  38. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +794 -0
  39. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +1095 -0
  40. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +291 -0
  41. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +2179 -0
  42. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +672 -0
  43. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +397 -0
  44. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +161 -0
  45. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +4399 -0
  46. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +246 -0
  47. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +58 -0
  48. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +1847 -0
  49. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +94 -0
  50. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +8 -0
  51. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +10 -0
  52. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +39 -0
  53. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +46 -0
  54. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +279 -0
  55. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +136 -0
  56. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +511 -0
  57. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +91 -0
  58. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/make/Makefile +101 -0
  59. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +32 -0
  60. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +191 -0
  61. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +15 -0
  62. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +187 -0
  63. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +201 -0
  64. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +32 -0
  65. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +82 -0
  66. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +19 -0
  67. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +88 -0
  68. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +101 -0
  69. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +32 -0
  70. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +84 -0
  71. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +19 -0
  72. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +90 -0
  73. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +103 -0
  74. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +240 -0
  75. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +203 -0
  76. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +35 -0
  77. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +115 -0
  78. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
  79. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +1733 -0
  80. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +227 -0
  81. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +448 -0
  82. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +59 -0
  83. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +287 -0
  84. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +41 -0
  85. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +31 -0
  86. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +303 -0
  87. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +640 -0
  88. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +1387 -0
  89. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +78 -0
  90. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +47 -0
  91. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +156 -0
  92. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +174 -0
  93. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +498 -0
  94. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +823 -0
  95. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +183 -0
  96. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +54 -0
  97. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +1411 -0
  98. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +428 -0
  99. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +1228 -0
  100. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +622 -0
  101. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +127 -0
  102. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +1286 -0
  103. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +699 -0
  104. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +5648 -0
  105. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +708 -0
  106. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +424 -0
  107. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +43 -0
  108. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +2644 -0
  109. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +51 -0
  110. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +81 -0
  111. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +108 -0
  112. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +100 -0
  113. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +40 -0
  114. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +40 -0
  115. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +669 -0
  116. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +180 -0
  117. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +291 -0
  118. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +310 -0
  119. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +322 -0
  120. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +220 -0
  121. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +112 -0
  122. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CHANGES +157 -0
  123. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +286 -0
  124. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +37 -0
  125. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/LICENSE +28 -0
  126. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +310 -0
  127. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +280 -0
  128. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +242 -0
  129. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +138 -0
  130. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +54 -0
  131. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +38 -0
  132. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +40 -0
  133. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +82 -0
  134. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +88 -0
  135. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +68 -0
  136. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/AdvancedGuide.md +2182 -0
  137. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/DevGuide.md +126 -0
  138. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Documentation.md +14 -0
  139. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/FAQ.md +1087 -0
  140. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Primer.md +502 -0
  141. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +177 -0
  142. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Samples.md +14 -0
  143. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_AdvancedGuide.md +2096 -0
  144. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Documentation.md +12 -0
  145. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_FAQ.md +886 -0
  146. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Primer.md +497 -0
  147. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_PumpManual.md +177 -0
  148. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_XcodeGuide.md +93 -0
  149. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_AdvancedGuide.md +2178 -0
  150. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Documentation.md +14 -0
  151. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_FAQ.md +1038 -0
  152. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Primer.md +501 -0
  153. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_PumpManual.md +177 -0
  154. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Samples.md +14 -0
  155. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_XcodeGuide.md +93 -0
  156. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_AdvancedGuide.md +2181 -0
  157. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Documentation.md +14 -0
  158. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_FAQ.md +1082 -0
  159. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Primer.md +501 -0
  160. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_PumpManual.md +177 -0
  161. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Samples.md +14 -0
  162. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_XcodeGuide.md +93 -0
  163. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +93 -0
  164. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +294 -0
  165. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +250 -0
  166. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +1444 -0
  167. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  168. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +993 -0
  169. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +232 -0
  170. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +179 -0
  171. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +263 -0
  172. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +2236 -0
  173. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +358 -0
  174. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +58 -0
  175. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  176. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  177. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +41 -0
  178. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  179. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  180. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  181. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  182. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  183. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  184. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  185. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  186. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +2554 -0
  187. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +167 -0
  188. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  189. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  190. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  191. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  192. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +363 -0
  193. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +74 -0
  194. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/make/Makefile +82 -0
  195. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln +45 -0
  196. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj +126 -0
  197. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln +45 -0
  198. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj +126 -0
  199. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj +129 -0
  200. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj +129 -0
  201. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj +164 -0
  202. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj +164 -0
  203. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj +147 -0
  204. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj +147 -0
  205. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +123 -0
  206. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +68 -0
  207. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +43 -0
  208. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +144 -0
  209. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +153 -0
  210. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +56 -0
  211. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +85 -0
  212. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +109 -0
  213. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +172 -0
  214. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +151 -0
  215. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +46 -0
  216. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +53 -0
  217. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +45 -0
  218. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +199 -0
  219. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +224 -0
  220. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +130 -0
  221. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +173 -0
  222. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +160 -0
  223. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/common.py +83 -0
  224. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +253 -0
  225. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +730 -0
  226. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +274 -0
  227. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +855 -0
  228. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +158 -0
  229. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/test/Makefile +59 -0
  230. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +1387 -0
  231. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +78 -0
  232. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +48 -0
  233. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +1342 -0
  234. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +387 -0
  235. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +1183 -0
  236. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +1259 -0
  237. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +373 -0
  238. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +110 -0
  239. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +118 -0
  240. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +5388 -0
  241. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +38 -0
  242. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +93 -0
  243. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +1427 -0
  244. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +662 -0
  245. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +154 -0
  246. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +311 -0
  247. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +159 -0
  248. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +215 -0
  249. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +65 -0
  250. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +1055 -0
  251. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +57 -0
  252. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +1304 -0
  253. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +1635 -0
  254. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +208 -0
  255. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +320 -0
  256. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +45 -0
  257. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +380 -0
  258. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +66 -0
  259. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +341 -0
  260. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +47 -0
  261. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +212 -0
  262. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +88 -0
  263. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +237 -0
  264. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +311 -0
  265. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +130 -0
  266. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +71 -0
  267. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +117 -0
  268. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +126 -0
  269. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +192 -0
  270. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +636 -0
  271. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +140 -0
  272. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +172 -0
  273. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +46 -0
  274. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +207 -0
  275. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +157 -0
  276. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +45 -0
  277. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +56 -0
  278. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +340 -0
  279. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +1062 -0
  280. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +743 -0
  281. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
  282. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +127 -0
  283. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +57 -0
  284. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +253 -0
  285. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +325 -0
  286. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +103 -0
  287. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +57 -0
  288. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +256 -0
  289. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +320 -0
  290. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +92 -0
  291. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +171 -0
  292. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +72 -0
  293. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +70 -0
  294. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +43 -0
  295. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +7706 -0
  296. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +49 -0
  297. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +49 -0
  298. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +132 -0
  299. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +308 -0
  300. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +181 -0
  301. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +194 -0
  302. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +36 -0
  303. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +55 -0
  304. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +30 -0
  305. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +17 -0
  306. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +41 -0
  307. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +32 -0
  308. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +18 -0
  309. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +8 -0
  310. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +30 -0
  311. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +28 -0
  312. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +457 -0
  313. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +62 -0
  314. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +63 -0
  315. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +59 -0
  316. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +68 -0
  317. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +65 -0
  318. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +100 -0
  319. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +1135 -0
  320. data/ext/rj_schema/rapidjson/thirdparty/gtest/travis.sh +15 -0
  321. data/ext/rj_schema/rj_schema.cpp +64 -41
  322. data/lib/rj_schema.rb +1 -1
  323. metadata +378 -5
@@ -0,0 +1,1062 @@
1
+ // Copyright 2005, 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
+ // The purpose of this file is to generate Google Test output under
31
+ // various conditions. The output will then be verified by
32
+ // gtest_output_test.py to ensure that Google Test generates the
33
+ // desired messages. Therefore, most tests in this file are MEANT TO
34
+ // FAIL.
35
+ //
36
+ // Author: wan@google.com (Zhanyong Wan)
37
+
38
+ #include "gtest/gtest-spi.h"
39
+ #include "gtest/gtest.h"
40
+
41
+ // Indicates that this translation unit is part of Google Test's
42
+ // implementation. It must come before gtest-internal-inl.h is
43
+ // included, or there will be a compiler error. This trick is to
44
+ // prevent a user from accidentally including gtest-internal-inl.h in
45
+ // his code.
46
+ #define GTEST_IMPLEMENTATION_ 1
47
+ #include "src/gtest-internal-inl.h"
48
+ #undef GTEST_IMPLEMENTATION_
49
+
50
+ #include <stdlib.h>
51
+
52
+ #if GTEST_IS_THREADSAFE
53
+ using testing::ScopedFakeTestPartResultReporter;
54
+ using testing::TestPartResultArray;
55
+
56
+ using testing::internal::Notification;
57
+ using testing::internal::ThreadWithParam;
58
+ #endif
59
+
60
+ namespace posix = ::testing::internal::posix;
61
+
62
+ // Tests catching fatal failures.
63
+
64
+ // A subroutine used by the following test.
65
+ void TestEq1(int x) {
66
+ ASSERT_EQ(1, x);
67
+ }
68
+
69
+ // This function calls a test subroutine, catches the fatal failure it
70
+ // generates, and then returns early.
71
+ void TryTestSubroutine() {
72
+ // Calls a subrountine that yields a fatal failure.
73
+ TestEq1(2);
74
+
75
+ // Catches the fatal failure and aborts the test.
76
+ //
77
+ // The testing::Test:: prefix is necessary when calling
78
+ // HasFatalFailure() outside of a TEST, TEST_F, or test fixture.
79
+ if (testing::Test::HasFatalFailure()) return;
80
+
81
+ // If we get here, something is wrong.
82
+ FAIL() << "This should never be reached.";
83
+ }
84
+
85
+ TEST(PassingTest, PassingTest1) {
86
+ }
87
+
88
+ TEST(PassingTest, PassingTest2) {
89
+ }
90
+
91
+ // Tests that parameters of failing parameterized tests are printed in the
92
+ // failing test summary.
93
+ class FailingParamTest : public testing::TestWithParam<int> {};
94
+
95
+ TEST_P(FailingParamTest, Fails) {
96
+ EXPECT_EQ(1, GetParam());
97
+ }
98
+
99
+ // This generates a test which will fail. Google Test is expected to print
100
+ // its parameter when it outputs the list of all failed tests.
101
+ INSTANTIATE_TEST_CASE_P(PrintingFailingParams,
102
+ FailingParamTest,
103
+ testing::Values(2));
104
+
105
+ static const char kGoldenString[] = "\"Line\0 1\"\nLine 2";
106
+
107
+ TEST(NonfatalFailureTest, EscapesStringOperands) {
108
+ std::string actual = "actual \"string\"";
109
+ EXPECT_EQ(kGoldenString, actual);
110
+
111
+ const char* golden = kGoldenString;
112
+ EXPECT_EQ(golden, actual);
113
+ }
114
+
115
+ TEST(NonfatalFailureTest, DiffForLongStrings) {
116
+ std::string golden_str(kGoldenString, sizeof(kGoldenString) - 1);
117
+ EXPECT_EQ(golden_str, "Line 2");
118
+ }
119
+
120
+ // Tests catching a fatal failure in a subroutine.
121
+ TEST(FatalFailureTest, FatalFailureInSubroutine) {
122
+ printf("(expecting a failure that x should be 1)\n");
123
+
124
+ TryTestSubroutine();
125
+ }
126
+
127
+ // Tests catching a fatal failure in a nested subroutine.
128
+ TEST(FatalFailureTest, FatalFailureInNestedSubroutine) {
129
+ printf("(expecting a failure that x should be 1)\n");
130
+
131
+ // Calls a subrountine that yields a fatal failure.
132
+ TryTestSubroutine();
133
+
134
+ // Catches the fatal failure and aborts the test.
135
+ //
136
+ // When calling HasFatalFailure() inside a TEST, TEST_F, or test
137
+ // fixture, the testing::Test:: prefix is not needed.
138
+ if (HasFatalFailure()) return;
139
+
140
+ // If we get here, something is wrong.
141
+ FAIL() << "This should never be reached.";
142
+ }
143
+
144
+ // Tests HasFatalFailure() after a failed EXPECT check.
145
+ TEST(FatalFailureTest, NonfatalFailureInSubroutine) {
146
+ printf("(expecting a failure on false)\n");
147
+ EXPECT_TRUE(false); // Generates a nonfatal failure
148
+ ASSERT_FALSE(HasFatalFailure()); // This should succeed.
149
+ }
150
+
151
+ // Tests interleaving user logging and Google Test assertions.
152
+ TEST(LoggingTest, InterleavingLoggingAndAssertions) {
153
+ static const int a[4] = {
154
+ 3, 9, 2, 6
155
+ };
156
+
157
+ printf("(expecting 2 failures on (3) >= (a[i]))\n");
158
+ for (int i = 0; i < static_cast<int>(sizeof(a)/sizeof(*a)); i++) {
159
+ printf("i == %d\n", i);
160
+ EXPECT_GE(3, a[i]);
161
+ }
162
+ }
163
+
164
+ // Tests the SCOPED_TRACE macro.
165
+
166
+ // A helper function for testing SCOPED_TRACE.
167
+ void SubWithoutTrace(int n) {
168
+ EXPECT_EQ(1, n);
169
+ ASSERT_EQ(2, n);
170
+ }
171
+
172
+ // Another helper function for testing SCOPED_TRACE.
173
+ void SubWithTrace(int n) {
174
+ SCOPED_TRACE(testing::Message() << "n = " << n);
175
+
176
+ SubWithoutTrace(n);
177
+ }
178
+
179
+ // Tests that SCOPED_TRACE() obeys lexical scopes.
180
+ TEST(SCOPED_TRACETest, ObeysScopes) {
181
+ printf("(expected to fail)\n");
182
+
183
+ // There should be no trace before SCOPED_TRACE() is invoked.
184
+ ADD_FAILURE() << "This failure is expected, and shouldn't have a trace.";
185
+
186
+ {
187
+ SCOPED_TRACE("Expected trace");
188
+ // After SCOPED_TRACE(), a failure in the current scope should contain
189
+ // the trace.
190
+ ADD_FAILURE() << "This failure is expected, and should have a trace.";
191
+ }
192
+
193
+ // Once the control leaves the scope of the SCOPED_TRACE(), there
194
+ // should be no trace again.
195
+ ADD_FAILURE() << "This failure is expected, and shouldn't have a trace.";
196
+ }
197
+
198
+ // Tests that SCOPED_TRACE works inside a loop.
199
+ TEST(SCOPED_TRACETest, WorksInLoop) {
200
+ printf("(expected to fail)\n");
201
+
202
+ for (int i = 1; i <= 2; i++) {
203
+ SCOPED_TRACE(testing::Message() << "i = " << i);
204
+
205
+ SubWithoutTrace(i);
206
+ }
207
+ }
208
+
209
+ // Tests that SCOPED_TRACE works in a subroutine.
210
+ TEST(SCOPED_TRACETest, WorksInSubroutine) {
211
+ printf("(expected to fail)\n");
212
+
213
+ SubWithTrace(1);
214
+ SubWithTrace(2);
215
+ }
216
+
217
+ // Tests that SCOPED_TRACE can be nested.
218
+ TEST(SCOPED_TRACETest, CanBeNested) {
219
+ printf("(expected to fail)\n");
220
+
221
+ SCOPED_TRACE(""); // A trace without a message.
222
+
223
+ SubWithTrace(2);
224
+ }
225
+
226
+ // Tests that multiple SCOPED_TRACEs can be used in the same scope.
227
+ TEST(SCOPED_TRACETest, CanBeRepeated) {
228
+ printf("(expected to fail)\n");
229
+
230
+ SCOPED_TRACE("A");
231
+ ADD_FAILURE()
232
+ << "This failure is expected, and should contain trace point A.";
233
+
234
+ SCOPED_TRACE("B");
235
+ ADD_FAILURE()
236
+ << "This failure is expected, and should contain trace point A and B.";
237
+
238
+ {
239
+ SCOPED_TRACE("C");
240
+ ADD_FAILURE() << "This failure is expected, and should "
241
+ << "contain trace point A, B, and C.";
242
+ }
243
+
244
+ SCOPED_TRACE("D");
245
+ ADD_FAILURE() << "This failure is expected, and should "
246
+ << "contain trace point A, B, and D.";
247
+ }
248
+
249
+ #if GTEST_IS_THREADSAFE
250
+ // Tests that SCOPED_TRACE()s can be used concurrently from multiple
251
+ // threads. Namely, an assertion should be affected by
252
+ // SCOPED_TRACE()s in its own thread only.
253
+
254
+ // Here's the sequence of actions that happen in the test:
255
+ //
256
+ // Thread A (main) | Thread B (spawned)
257
+ // ===============================|================================
258
+ // spawns thread B |
259
+ // -------------------------------+--------------------------------
260
+ // waits for n1 | SCOPED_TRACE("Trace B");
261
+ // | generates failure #1
262
+ // | notifies n1
263
+ // -------------------------------+--------------------------------
264
+ // SCOPED_TRACE("Trace A"); | waits for n2
265
+ // generates failure #2 |
266
+ // notifies n2 |
267
+ // -------------------------------|--------------------------------
268
+ // waits for n3 | generates failure #3
269
+ // | trace B dies
270
+ // | generates failure #4
271
+ // | notifies n3
272
+ // -------------------------------|--------------------------------
273
+ // generates failure #5 | finishes
274
+ // trace A dies |
275
+ // generates failure #6 |
276
+ // -------------------------------|--------------------------------
277
+ // waits for thread B to finish |
278
+
279
+ struct CheckPoints {
280
+ Notification n1;
281
+ Notification n2;
282
+ Notification n3;
283
+ };
284
+
285
+ static void ThreadWithScopedTrace(CheckPoints* check_points) {
286
+ {
287
+ SCOPED_TRACE("Trace B");
288
+ ADD_FAILURE()
289
+ << "Expected failure #1 (in thread B, only trace B alive).";
290
+ check_points->n1.Notify();
291
+ check_points->n2.WaitForNotification();
292
+
293
+ ADD_FAILURE()
294
+ << "Expected failure #3 (in thread B, trace A & B both alive).";
295
+ } // Trace B dies here.
296
+ ADD_FAILURE()
297
+ << "Expected failure #4 (in thread B, only trace A alive).";
298
+ check_points->n3.Notify();
299
+ }
300
+
301
+ TEST(SCOPED_TRACETest, WorksConcurrently) {
302
+ printf("(expecting 6 failures)\n");
303
+
304
+ CheckPoints check_points;
305
+ ThreadWithParam<CheckPoints*> thread(&ThreadWithScopedTrace,
306
+ &check_points,
307
+ NULL);
308
+ check_points.n1.WaitForNotification();
309
+
310
+ {
311
+ SCOPED_TRACE("Trace A");
312
+ ADD_FAILURE()
313
+ << "Expected failure #2 (in thread A, trace A & B both alive).";
314
+ check_points.n2.Notify();
315
+ check_points.n3.WaitForNotification();
316
+
317
+ ADD_FAILURE()
318
+ << "Expected failure #5 (in thread A, only trace A alive).";
319
+ } // Trace A dies here.
320
+ ADD_FAILURE()
321
+ << "Expected failure #6 (in thread A, no trace alive).";
322
+ thread.Join();
323
+ }
324
+ #endif // GTEST_IS_THREADSAFE
325
+
326
+ TEST(DisabledTestsWarningTest,
327
+ DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning) {
328
+ // This test body is intentionally empty. Its sole purpose is for
329
+ // verifying that the --gtest_also_run_disabled_tests flag
330
+ // suppresses the "YOU HAVE 12 DISABLED TESTS" warning at the end of
331
+ // the test output.
332
+ }
333
+
334
+ // Tests using assertions outside of TEST and TEST_F.
335
+ //
336
+ // This function creates two failures intentionally.
337
+ void AdHocTest() {
338
+ printf("The non-test part of the code is expected to have 2 failures.\n\n");
339
+ EXPECT_TRUE(false);
340
+ EXPECT_EQ(2, 3);
341
+ }
342
+
343
+ // Runs all TESTs, all TEST_Fs, and the ad hoc test.
344
+ int RunAllTests() {
345
+ AdHocTest();
346
+ return RUN_ALL_TESTS();
347
+ }
348
+
349
+ // Tests non-fatal failures in the fixture constructor.
350
+ class NonFatalFailureInFixtureConstructorTest : public testing::Test {
351
+ protected:
352
+ NonFatalFailureInFixtureConstructorTest() {
353
+ printf("(expecting 5 failures)\n");
354
+ ADD_FAILURE() << "Expected failure #1, in the test fixture c'tor.";
355
+ }
356
+
357
+ ~NonFatalFailureInFixtureConstructorTest() {
358
+ ADD_FAILURE() << "Expected failure #5, in the test fixture d'tor.";
359
+ }
360
+
361
+ virtual void SetUp() {
362
+ ADD_FAILURE() << "Expected failure #2, in SetUp().";
363
+ }
364
+
365
+ virtual void TearDown() {
366
+ ADD_FAILURE() << "Expected failure #4, in TearDown.";
367
+ }
368
+ };
369
+
370
+ TEST_F(NonFatalFailureInFixtureConstructorTest, FailureInConstructor) {
371
+ ADD_FAILURE() << "Expected failure #3, in the test body.";
372
+ }
373
+
374
+ // Tests fatal failures in the fixture constructor.
375
+ class FatalFailureInFixtureConstructorTest : public testing::Test {
376
+ protected:
377
+ FatalFailureInFixtureConstructorTest() {
378
+ printf("(expecting 2 failures)\n");
379
+ Init();
380
+ }
381
+
382
+ ~FatalFailureInFixtureConstructorTest() {
383
+ ADD_FAILURE() << "Expected failure #2, in the test fixture d'tor.";
384
+ }
385
+
386
+ virtual void SetUp() {
387
+ ADD_FAILURE() << "UNEXPECTED failure in SetUp(). "
388
+ << "We should never get here, as the test fixture c'tor "
389
+ << "had a fatal failure.";
390
+ }
391
+
392
+ virtual void TearDown() {
393
+ ADD_FAILURE() << "UNEXPECTED failure in TearDown(). "
394
+ << "We should never get here, as the test fixture c'tor "
395
+ << "had a fatal failure.";
396
+ }
397
+
398
+ private:
399
+ void Init() {
400
+ FAIL() << "Expected failure #1, in the test fixture c'tor.";
401
+ }
402
+ };
403
+
404
+ TEST_F(FatalFailureInFixtureConstructorTest, FailureInConstructor) {
405
+ ADD_FAILURE() << "UNEXPECTED failure in the test body. "
406
+ << "We should never get here, as the test fixture c'tor "
407
+ << "had a fatal failure.";
408
+ }
409
+
410
+ // Tests non-fatal failures in SetUp().
411
+ class NonFatalFailureInSetUpTest : public testing::Test {
412
+ protected:
413
+ virtual ~NonFatalFailureInSetUpTest() {
414
+ Deinit();
415
+ }
416
+
417
+ virtual void SetUp() {
418
+ printf("(expecting 4 failures)\n");
419
+ ADD_FAILURE() << "Expected failure #1, in SetUp().";
420
+ }
421
+
422
+ virtual void TearDown() {
423
+ FAIL() << "Expected failure #3, in TearDown().";
424
+ }
425
+ private:
426
+ void Deinit() {
427
+ FAIL() << "Expected failure #4, in the test fixture d'tor.";
428
+ }
429
+ };
430
+
431
+ TEST_F(NonFatalFailureInSetUpTest, FailureInSetUp) {
432
+ FAIL() << "Expected failure #2, in the test function.";
433
+ }
434
+
435
+ // Tests fatal failures in SetUp().
436
+ class FatalFailureInSetUpTest : public testing::Test {
437
+ protected:
438
+ virtual ~FatalFailureInSetUpTest() {
439
+ Deinit();
440
+ }
441
+
442
+ virtual void SetUp() {
443
+ printf("(expecting 3 failures)\n");
444
+ FAIL() << "Expected failure #1, in SetUp().";
445
+ }
446
+
447
+ virtual void TearDown() {
448
+ FAIL() << "Expected failure #2, in TearDown().";
449
+ }
450
+ private:
451
+ void Deinit() {
452
+ FAIL() << "Expected failure #3, in the test fixture d'tor.";
453
+ }
454
+ };
455
+
456
+ TEST_F(FatalFailureInSetUpTest, FailureInSetUp) {
457
+ FAIL() << "UNEXPECTED failure in the test function. "
458
+ << "We should never get here, as SetUp() failed.";
459
+ }
460
+
461
+ TEST(AddFailureAtTest, MessageContainsSpecifiedFileAndLineNumber) {
462
+ ADD_FAILURE_AT("foo.cc", 42) << "Expected failure in foo.cc";
463
+ }
464
+
465
+ #if GTEST_IS_THREADSAFE
466
+
467
+ // A unary function that may die.
468
+ void DieIf(bool should_die) {
469
+ GTEST_CHECK_(!should_die) << " - death inside DieIf().";
470
+ }
471
+
472
+ // Tests running death tests in a multi-threaded context.
473
+
474
+ // Used for coordination between the main and the spawn thread.
475
+ struct SpawnThreadNotifications {
476
+ SpawnThreadNotifications() {}
477
+
478
+ Notification spawn_thread_started;
479
+ Notification spawn_thread_ok_to_terminate;
480
+
481
+ private:
482
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(SpawnThreadNotifications);
483
+ };
484
+
485
+ // The function to be executed in the thread spawn by the
486
+ // MultipleThreads test (below).
487
+ static void ThreadRoutine(SpawnThreadNotifications* notifications) {
488
+ // Signals the main thread that this thread has started.
489
+ notifications->spawn_thread_started.Notify();
490
+
491
+ // Waits for permission to finish from the main thread.
492
+ notifications->spawn_thread_ok_to_terminate.WaitForNotification();
493
+ }
494
+
495
+ // This is a death-test test, but it's not named with a DeathTest
496
+ // suffix. It starts threads which might interfere with later
497
+ // death tests, so it must run after all other death tests.
498
+ class DeathTestAndMultiThreadsTest : public testing::Test {
499
+ protected:
500
+ // Starts a thread and waits for it to begin.
501
+ virtual void SetUp() {
502
+ thread_.reset(new ThreadWithParam<SpawnThreadNotifications*>(
503
+ &ThreadRoutine, &notifications_, NULL));
504
+ notifications_.spawn_thread_started.WaitForNotification();
505
+ }
506
+ // Tells the thread to finish, and reaps it.
507
+ // Depending on the version of the thread library in use,
508
+ // a manager thread might still be left running that will interfere
509
+ // with later death tests. This is unfortunate, but this class
510
+ // cleans up after itself as best it can.
511
+ virtual void TearDown() {
512
+ notifications_.spawn_thread_ok_to_terminate.Notify();
513
+ }
514
+
515
+ private:
516
+ SpawnThreadNotifications notifications_;
517
+ testing::internal::scoped_ptr<ThreadWithParam<SpawnThreadNotifications*> >
518
+ thread_;
519
+ };
520
+
521
+ #endif // GTEST_IS_THREADSAFE
522
+
523
+ // The MixedUpTestCaseTest test case verifies that Google Test will fail a
524
+ // test if it uses a different fixture class than what other tests in
525
+ // the same test case use. It deliberately contains two fixture
526
+ // classes with the same name but defined in different namespaces.
527
+
528
+ // The MixedUpTestCaseWithSameTestNameTest test case verifies that
529
+ // when the user defines two tests with the same test case name AND
530
+ // same test name (but in different namespaces), the second test will
531
+ // fail.
532
+
533
+ namespace foo {
534
+
535
+ class MixedUpTestCaseTest : public testing::Test {
536
+ };
537
+
538
+ TEST_F(MixedUpTestCaseTest, FirstTestFromNamespaceFoo) {}
539
+ TEST_F(MixedUpTestCaseTest, SecondTestFromNamespaceFoo) {}
540
+
541
+ class MixedUpTestCaseWithSameTestNameTest : public testing::Test {
542
+ };
543
+
544
+ TEST_F(MixedUpTestCaseWithSameTestNameTest,
545
+ TheSecondTestWithThisNameShouldFail) {}
546
+
547
+ } // namespace foo
548
+
549
+ namespace bar {
550
+
551
+ class MixedUpTestCaseTest : public testing::Test {
552
+ };
553
+
554
+ // The following two tests are expected to fail. We rely on the
555
+ // golden file to check that Google Test generates the right error message.
556
+ TEST_F(MixedUpTestCaseTest, ThisShouldFail) {}
557
+ TEST_F(MixedUpTestCaseTest, ThisShouldFailToo) {}
558
+
559
+ class MixedUpTestCaseWithSameTestNameTest : public testing::Test {
560
+ };
561
+
562
+ // Expected to fail. We rely on the golden file to check that Google Test
563
+ // generates the right error message.
564
+ TEST_F(MixedUpTestCaseWithSameTestNameTest,
565
+ TheSecondTestWithThisNameShouldFail) {}
566
+
567
+ } // namespace bar
568
+
569
+ // The following two test cases verify that Google Test catches the user
570
+ // error of mixing TEST and TEST_F in the same test case. The first
571
+ // test case checks the scenario where TEST_F appears before TEST, and
572
+ // the second one checks where TEST appears before TEST_F.
573
+
574
+ class TEST_F_before_TEST_in_same_test_case : public testing::Test {
575
+ };
576
+
577
+ TEST_F(TEST_F_before_TEST_in_same_test_case, DefinedUsingTEST_F) {}
578
+
579
+ // Expected to fail. We rely on the golden file to check that Google Test
580
+ // generates the right error message.
581
+ TEST(TEST_F_before_TEST_in_same_test_case, DefinedUsingTESTAndShouldFail) {}
582
+
583
+ class TEST_before_TEST_F_in_same_test_case : public testing::Test {
584
+ };
585
+
586
+ TEST(TEST_before_TEST_F_in_same_test_case, DefinedUsingTEST) {}
587
+
588
+ // Expected to fail. We rely on the golden file to check that Google Test
589
+ // generates the right error message.
590
+ TEST_F(TEST_before_TEST_F_in_same_test_case, DefinedUsingTEST_FAndShouldFail) {
591
+ }
592
+
593
+ // Used for testing EXPECT_NONFATAL_FAILURE() and EXPECT_FATAL_FAILURE().
594
+ int global_integer = 0;
595
+
596
+ // Tests that EXPECT_NONFATAL_FAILURE() can reference global variables.
597
+ TEST(ExpectNonfatalFailureTest, CanReferenceGlobalVariables) {
598
+ global_integer = 0;
599
+ EXPECT_NONFATAL_FAILURE({
600
+ EXPECT_EQ(1, global_integer) << "Expected non-fatal failure.";
601
+ }, "Expected non-fatal failure.");
602
+ }
603
+
604
+ // Tests that EXPECT_NONFATAL_FAILURE() can reference local variables
605
+ // (static or not).
606
+ TEST(ExpectNonfatalFailureTest, CanReferenceLocalVariables) {
607
+ int m = 0;
608
+ static int n;
609
+ n = 1;
610
+ EXPECT_NONFATAL_FAILURE({
611
+ EXPECT_EQ(m, n) << "Expected non-fatal failure.";
612
+ }, "Expected non-fatal failure.");
613
+ }
614
+
615
+ // Tests that EXPECT_NONFATAL_FAILURE() succeeds when there is exactly
616
+ // one non-fatal failure and no fatal failure.
617
+ TEST(ExpectNonfatalFailureTest, SucceedsWhenThereIsOneNonfatalFailure) {
618
+ EXPECT_NONFATAL_FAILURE({
619
+ ADD_FAILURE() << "Expected non-fatal failure.";
620
+ }, "Expected non-fatal failure.");
621
+ }
622
+
623
+ // Tests that EXPECT_NONFATAL_FAILURE() fails when there is no
624
+ // non-fatal failure.
625
+ TEST(ExpectNonfatalFailureTest, FailsWhenThereIsNoNonfatalFailure) {
626
+ printf("(expecting a failure)\n");
627
+ EXPECT_NONFATAL_FAILURE({
628
+ }, "");
629
+ }
630
+
631
+ // Tests that EXPECT_NONFATAL_FAILURE() fails when there are two
632
+ // non-fatal failures.
633
+ TEST(ExpectNonfatalFailureTest, FailsWhenThereAreTwoNonfatalFailures) {
634
+ printf("(expecting a failure)\n");
635
+ EXPECT_NONFATAL_FAILURE({
636
+ ADD_FAILURE() << "Expected non-fatal failure 1.";
637
+ ADD_FAILURE() << "Expected non-fatal failure 2.";
638
+ }, "");
639
+ }
640
+
641
+ // Tests that EXPECT_NONFATAL_FAILURE() fails when there is one fatal
642
+ // failure.
643
+ TEST(ExpectNonfatalFailureTest, FailsWhenThereIsOneFatalFailure) {
644
+ printf("(expecting a failure)\n");
645
+ EXPECT_NONFATAL_FAILURE({
646
+ FAIL() << "Expected fatal failure.";
647
+ }, "");
648
+ }
649
+
650
+ // Tests that EXPECT_NONFATAL_FAILURE() fails when the statement being
651
+ // tested returns.
652
+ TEST(ExpectNonfatalFailureTest, FailsWhenStatementReturns) {
653
+ printf("(expecting a failure)\n");
654
+ EXPECT_NONFATAL_FAILURE({
655
+ return;
656
+ }, "");
657
+ }
658
+
659
+ #if GTEST_HAS_EXCEPTIONS
660
+
661
+ // Tests that EXPECT_NONFATAL_FAILURE() fails when the statement being
662
+ // tested throws.
663
+ TEST(ExpectNonfatalFailureTest, FailsWhenStatementThrows) {
664
+ printf("(expecting a failure)\n");
665
+ try {
666
+ EXPECT_NONFATAL_FAILURE({
667
+ throw 0;
668
+ }, "");
669
+ } catch(int) { // NOLINT
670
+ }
671
+ }
672
+
673
+ #endif // GTEST_HAS_EXCEPTIONS
674
+
675
+ // Tests that EXPECT_FATAL_FAILURE() can reference global variables.
676
+ TEST(ExpectFatalFailureTest, CanReferenceGlobalVariables) {
677
+ global_integer = 0;
678
+ EXPECT_FATAL_FAILURE({
679
+ ASSERT_EQ(1, global_integer) << "Expected fatal failure.";
680
+ }, "Expected fatal failure.");
681
+ }
682
+
683
+ // Tests that EXPECT_FATAL_FAILURE() can reference local static
684
+ // variables.
685
+ TEST(ExpectFatalFailureTest, CanReferenceLocalStaticVariables) {
686
+ static int n;
687
+ n = 1;
688
+ EXPECT_FATAL_FAILURE({
689
+ ASSERT_EQ(0, n) << "Expected fatal failure.";
690
+ }, "Expected fatal failure.");
691
+ }
692
+
693
+ // Tests that EXPECT_FATAL_FAILURE() succeeds when there is exactly
694
+ // one fatal failure and no non-fatal failure.
695
+ TEST(ExpectFatalFailureTest, SucceedsWhenThereIsOneFatalFailure) {
696
+ EXPECT_FATAL_FAILURE({
697
+ FAIL() << "Expected fatal failure.";
698
+ }, "Expected fatal failure.");
699
+ }
700
+
701
+ // Tests that EXPECT_FATAL_FAILURE() fails when there is no fatal
702
+ // failure.
703
+ TEST(ExpectFatalFailureTest, FailsWhenThereIsNoFatalFailure) {
704
+ printf("(expecting a failure)\n");
705
+ EXPECT_FATAL_FAILURE({
706
+ }, "");
707
+ }
708
+
709
+ // A helper for generating a fatal failure.
710
+ void FatalFailure() {
711
+ FAIL() << "Expected fatal failure.";
712
+ }
713
+
714
+ // Tests that EXPECT_FATAL_FAILURE() fails when there are two
715
+ // fatal failures.
716
+ TEST(ExpectFatalFailureTest, FailsWhenThereAreTwoFatalFailures) {
717
+ printf("(expecting a failure)\n");
718
+ EXPECT_FATAL_FAILURE({
719
+ FatalFailure();
720
+ FatalFailure();
721
+ }, "");
722
+ }
723
+
724
+ // Tests that EXPECT_FATAL_FAILURE() fails when there is one non-fatal
725
+ // failure.
726
+ TEST(ExpectFatalFailureTest, FailsWhenThereIsOneNonfatalFailure) {
727
+ printf("(expecting a failure)\n");
728
+ EXPECT_FATAL_FAILURE({
729
+ ADD_FAILURE() << "Expected non-fatal failure.";
730
+ }, "");
731
+ }
732
+
733
+ // Tests that EXPECT_FATAL_FAILURE() fails when the statement being
734
+ // tested returns.
735
+ TEST(ExpectFatalFailureTest, FailsWhenStatementReturns) {
736
+ printf("(expecting a failure)\n");
737
+ EXPECT_FATAL_FAILURE({
738
+ return;
739
+ }, "");
740
+ }
741
+
742
+ #if GTEST_HAS_EXCEPTIONS
743
+
744
+ // Tests that EXPECT_FATAL_FAILURE() fails when the statement being
745
+ // tested throws.
746
+ TEST(ExpectFatalFailureTest, FailsWhenStatementThrows) {
747
+ printf("(expecting a failure)\n");
748
+ try {
749
+ EXPECT_FATAL_FAILURE({
750
+ throw 0;
751
+ }, "");
752
+ } catch(int) { // NOLINT
753
+ }
754
+ }
755
+
756
+ #endif // GTEST_HAS_EXCEPTIONS
757
+
758
+ // This #ifdef block tests the output of value-parameterized tests.
759
+
760
+ #if GTEST_HAS_PARAM_TEST
761
+
762
+ std::string ParamNameFunc(const testing::TestParamInfo<std::string>& info) {
763
+ return info.param;
764
+ }
765
+
766
+ class ParamTest : public testing::TestWithParam<std::string> {
767
+ };
768
+
769
+ TEST_P(ParamTest, Success) {
770
+ EXPECT_EQ("a", GetParam());
771
+ }
772
+
773
+ TEST_P(ParamTest, Failure) {
774
+ EXPECT_EQ("b", GetParam()) << "Expected failure";
775
+ }
776
+
777
+ INSTANTIATE_TEST_CASE_P(PrintingStrings,
778
+ ParamTest,
779
+ testing::Values(std::string("a")),
780
+ ParamNameFunc);
781
+
782
+ #endif // GTEST_HAS_PARAM_TEST
783
+
784
+ // This #ifdef block tests the output of typed tests.
785
+ #if GTEST_HAS_TYPED_TEST
786
+
787
+ template <typename T>
788
+ class TypedTest : public testing::Test {
789
+ };
790
+
791
+ TYPED_TEST_CASE(TypedTest, testing::Types<int>);
792
+
793
+ TYPED_TEST(TypedTest, Success) {
794
+ EXPECT_EQ(0, TypeParam());
795
+ }
796
+
797
+ TYPED_TEST(TypedTest, Failure) {
798
+ EXPECT_EQ(1, TypeParam()) << "Expected failure";
799
+ }
800
+
801
+ #endif // GTEST_HAS_TYPED_TEST
802
+
803
+ // This #ifdef block tests the output of type-parameterized tests.
804
+ #if GTEST_HAS_TYPED_TEST_P
805
+
806
+ template <typename T>
807
+ class TypedTestP : public testing::Test {
808
+ };
809
+
810
+ TYPED_TEST_CASE_P(TypedTestP);
811
+
812
+ TYPED_TEST_P(TypedTestP, Success) {
813
+ EXPECT_EQ(0U, TypeParam());
814
+ }
815
+
816
+ TYPED_TEST_P(TypedTestP, Failure) {
817
+ EXPECT_EQ(1U, TypeParam()) << "Expected failure";
818
+ }
819
+
820
+ REGISTER_TYPED_TEST_CASE_P(TypedTestP, Success, Failure);
821
+
822
+ typedef testing::Types<unsigned char, unsigned int> UnsignedTypes;
823
+ INSTANTIATE_TYPED_TEST_CASE_P(Unsigned, TypedTestP, UnsignedTypes);
824
+
825
+ #endif // GTEST_HAS_TYPED_TEST_P
826
+
827
+ #if GTEST_HAS_DEATH_TEST
828
+
829
+ // We rely on the golden file to verify that tests whose test case
830
+ // name ends with DeathTest are run first.
831
+
832
+ TEST(ADeathTest, ShouldRunFirst) {
833
+ }
834
+
835
+ # if GTEST_HAS_TYPED_TEST
836
+
837
+ // We rely on the golden file to verify that typed tests whose test
838
+ // case name ends with DeathTest are run first.
839
+
840
+ template <typename T>
841
+ class ATypedDeathTest : public testing::Test {
842
+ };
843
+
844
+ typedef testing::Types<int, double> NumericTypes;
845
+ TYPED_TEST_CASE(ATypedDeathTest, NumericTypes);
846
+
847
+ TYPED_TEST(ATypedDeathTest, ShouldRunFirst) {
848
+ }
849
+
850
+ # endif // GTEST_HAS_TYPED_TEST
851
+
852
+ # if GTEST_HAS_TYPED_TEST_P
853
+
854
+
855
+ // We rely on the golden file to verify that type-parameterized tests
856
+ // whose test case name ends with DeathTest are run first.
857
+
858
+ template <typename T>
859
+ class ATypeParamDeathTest : public testing::Test {
860
+ };
861
+
862
+ TYPED_TEST_CASE_P(ATypeParamDeathTest);
863
+
864
+ TYPED_TEST_P(ATypeParamDeathTest, ShouldRunFirst) {
865
+ }
866
+
867
+ REGISTER_TYPED_TEST_CASE_P(ATypeParamDeathTest, ShouldRunFirst);
868
+
869
+ INSTANTIATE_TYPED_TEST_CASE_P(My, ATypeParamDeathTest, NumericTypes);
870
+
871
+ # endif // GTEST_HAS_TYPED_TEST_P
872
+
873
+ #endif // GTEST_HAS_DEATH_TEST
874
+
875
+ // Tests various failure conditions of
876
+ // EXPECT_{,NON}FATAL_FAILURE{,_ON_ALL_THREADS}.
877
+ class ExpectFailureTest : public testing::Test {
878
+ public: // Must be public and not protected due to a bug in g++ 3.4.2.
879
+ enum FailureMode {
880
+ FATAL_FAILURE,
881
+ NONFATAL_FAILURE
882
+ };
883
+ static void AddFailure(FailureMode failure) {
884
+ if (failure == FATAL_FAILURE) {
885
+ FAIL() << "Expected fatal failure.";
886
+ } else {
887
+ ADD_FAILURE() << "Expected non-fatal failure.";
888
+ }
889
+ }
890
+ };
891
+
892
+ TEST_F(ExpectFailureTest, ExpectFatalFailure) {
893
+ // Expected fatal failure, but succeeds.
894
+ printf("(expecting 1 failure)\n");
895
+ EXPECT_FATAL_FAILURE(SUCCEED(), "Expected fatal failure.");
896
+ // Expected fatal failure, but got a non-fatal failure.
897
+ printf("(expecting 1 failure)\n");
898
+ EXPECT_FATAL_FAILURE(AddFailure(NONFATAL_FAILURE), "Expected non-fatal "
899
+ "failure.");
900
+ // Wrong message.
901
+ printf("(expecting 1 failure)\n");
902
+ EXPECT_FATAL_FAILURE(AddFailure(FATAL_FAILURE), "Some other fatal failure "
903
+ "expected.");
904
+ }
905
+
906
+ TEST_F(ExpectFailureTest, ExpectNonFatalFailure) {
907
+ // Expected non-fatal failure, but succeeds.
908
+ printf("(expecting 1 failure)\n");
909
+ EXPECT_NONFATAL_FAILURE(SUCCEED(), "Expected non-fatal failure.");
910
+ // Expected non-fatal failure, but got a fatal failure.
911
+ printf("(expecting 1 failure)\n");
912
+ EXPECT_NONFATAL_FAILURE(AddFailure(FATAL_FAILURE), "Expected fatal failure.");
913
+ // Wrong message.
914
+ printf("(expecting 1 failure)\n");
915
+ EXPECT_NONFATAL_FAILURE(AddFailure(NONFATAL_FAILURE), "Some other non-fatal "
916
+ "failure.");
917
+ }
918
+
919
+ #if GTEST_IS_THREADSAFE
920
+
921
+ class ExpectFailureWithThreadsTest : public ExpectFailureTest {
922
+ protected:
923
+ static void AddFailureInOtherThread(FailureMode failure) {
924
+ ThreadWithParam<FailureMode> thread(&AddFailure, failure, NULL);
925
+ thread.Join();
926
+ }
927
+ };
928
+
929
+ TEST_F(ExpectFailureWithThreadsTest, ExpectFatalFailure) {
930
+ // We only intercept the current thread.
931
+ printf("(expecting 2 failures)\n");
932
+ EXPECT_FATAL_FAILURE(AddFailureInOtherThread(FATAL_FAILURE),
933
+ "Expected fatal failure.");
934
+ }
935
+
936
+ TEST_F(ExpectFailureWithThreadsTest, ExpectNonFatalFailure) {
937
+ // We only intercept the current thread.
938
+ printf("(expecting 2 failures)\n");
939
+ EXPECT_NONFATAL_FAILURE(AddFailureInOtherThread(NONFATAL_FAILURE),
940
+ "Expected non-fatal failure.");
941
+ }
942
+
943
+ typedef ExpectFailureWithThreadsTest ScopedFakeTestPartResultReporterTest;
944
+
945
+ // Tests that the ScopedFakeTestPartResultReporter only catches failures from
946
+ // the current thread if it is instantiated with INTERCEPT_ONLY_CURRENT_THREAD.
947
+ TEST_F(ScopedFakeTestPartResultReporterTest, InterceptOnlyCurrentThread) {
948
+ printf("(expecting 2 failures)\n");
949
+ TestPartResultArray results;
950
+ {
951
+ ScopedFakeTestPartResultReporter reporter(
952
+ ScopedFakeTestPartResultReporter::INTERCEPT_ONLY_CURRENT_THREAD,
953
+ &results);
954
+ AddFailureInOtherThread(FATAL_FAILURE);
955
+ AddFailureInOtherThread(NONFATAL_FAILURE);
956
+ }
957
+ // The two failures should not have been intercepted.
958
+ EXPECT_EQ(0, results.size()) << "This shouldn't fail.";
959
+ }
960
+
961
+ #endif // GTEST_IS_THREADSAFE
962
+
963
+ TEST_F(ExpectFailureTest, ExpectFatalFailureOnAllThreads) {
964
+ // Expected fatal failure, but succeeds.
965
+ printf("(expecting 1 failure)\n");
966
+ EXPECT_FATAL_FAILURE_ON_ALL_THREADS(SUCCEED(), "Expected fatal failure.");
967
+ // Expected fatal failure, but got a non-fatal failure.
968
+ printf("(expecting 1 failure)\n");
969
+ EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailure(NONFATAL_FAILURE),
970
+ "Expected non-fatal failure.");
971
+ // Wrong message.
972
+ printf("(expecting 1 failure)\n");
973
+ EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailure(FATAL_FAILURE),
974
+ "Some other fatal failure expected.");
975
+ }
976
+
977
+ TEST_F(ExpectFailureTest, ExpectNonFatalFailureOnAllThreads) {
978
+ // Expected non-fatal failure, but succeeds.
979
+ printf("(expecting 1 failure)\n");
980
+ EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(SUCCEED(), "Expected non-fatal "
981
+ "failure.");
982
+ // Expected non-fatal failure, but got a fatal failure.
983
+ printf("(expecting 1 failure)\n");
984
+ EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddFailure(FATAL_FAILURE),
985
+ "Expected fatal failure.");
986
+ // Wrong message.
987
+ printf("(expecting 1 failure)\n");
988
+ EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddFailure(NONFATAL_FAILURE),
989
+ "Some other non-fatal failure.");
990
+ }
991
+
992
+
993
+ // Two test environments for testing testing::AddGlobalTestEnvironment().
994
+
995
+ class FooEnvironment : public testing::Environment {
996
+ public:
997
+ virtual void SetUp() {
998
+ printf("%s", "FooEnvironment::SetUp() called.\n");
999
+ }
1000
+
1001
+ virtual void TearDown() {
1002
+ printf("%s", "FooEnvironment::TearDown() called.\n");
1003
+ FAIL() << "Expected fatal failure.";
1004
+ }
1005
+ };
1006
+
1007
+ class BarEnvironment : public testing::Environment {
1008
+ public:
1009
+ virtual void SetUp() {
1010
+ printf("%s", "BarEnvironment::SetUp() called.\n");
1011
+ }
1012
+
1013
+ virtual void TearDown() {
1014
+ printf("%s", "BarEnvironment::TearDown() called.\n");
1015
+ ADD_FAILURE() << "Expected non-fatal failure.";
1016
+ }
1017
+ };
1018
+
1019
+ // The main function.
1020
+ //
1021
+ // The idea is to use Google Test to run all the tests we have defined (some
1022
+ // of them are intended to fail), and then compare the test results
1023
+ // with the "golden" file.
1024
+ int main(int argc, char **argv) {
1025
+ testing::GTEST_FLAG(print_time) = false;
1026
+
1027
+ // We just run the tests, knowing some of them are intended to fail.
1028
+ // We will use a separate Python script to compare the output of
1029
+ // this program with the golden file.
1030
+
1031
+ // It's hard to test InitGoogleTest() directly, as it has many
1032
+ // global side effects. The following line serves as a sanity test
1033
+ // for it.
1034
+ testing::InitGoogleTest(&argc, argv);
1035
+ bool internal_skip_environment_and_ad_hoc_tests =
1036
+ std::count(argv, argv + argc,
1037
+ std::string("internal_skip_environment_and_ad_hoc_tests")) > 0;
1038
+
1039
+ #if GTEST_HAS_DEATH_TEST
1040
+ if (testing::internal::GTEST_FLAG(internal_run_death_test) != "") {
1041
+ // Skip the usual output capturing if we're running as the child
1042
+ // process of an threadsafe-style death test.
1043
+ # if GTEST_OS_WINDOWS
1044
+ posix::FReopen("nul:", "w", stdout);
1045
+ # else
1046
+ posix::FReopen("/dev/null", "w", stdout);
1047
+ # endif // GTEST_OS_WINDOWS
1048
+ return RUN_ALL_TESTS();
1049
+ }
1050
+ #endif // GTEST_HAS_DEATH_TEST
1051
+
1052
+ if (internal_skip_environment_and_ad_hoc_tests)
1053
+ return RUN_ALL_TESTS();
1054
+
1055
+ // Registers two global test environments.
1056
+ // The golden file verifies that they are set up in the order they
1057
+ // are registered, and torn down in the reverse order.
1058
+ testing::AddGlobalTestEnvironment(new FooEnvironment);
1059
+ testing::AddGlobalTestEnvironment(new BarEnvironment);
1060
+
1061
+ return RunAllTests();
1062
+ }