rj_schema 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
+ }