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,699 @@
1
+ // Copyright 2007, 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
+ // Author: wan@google.com (Zhanyong Wan)
31
+
32
+ // Google Mock - a framework for writing C++ mock classes.
33
+ //
34
+ // This file tests the internal utilities.
35
+
36
+ #include "gmock/internal/gmock-internal-utils.h"
37
+ #include <stdlib.h>
38
+ #include <map>
39
+ #include <memory>
40
+ #include <string>
41
+ #include <sstream>
42
+ #include <vector>
43
+ #include "gmock/gmock.h"
44
+ #include "gmock/internal/gmock-port.h"
45
+ #include "gtest/gtest.h"
46
+ #include "gtest/gtest-spi.h"
47
+
48
+ // Indicates that this translation unit is part of Google Test's
49
+ // implementation. It must come before gtest-internal-inl.h is
50
+ // included, or there will be a compiler error. This trick is to
51
+ // prevent a user from accidentally including gtest-internal-inl.h in
52
+ // his code.
53
+ #define GTEST_IMPLEMENTATION_ 1
54
+ #include "src/gtest-internal-inl.h"
55
+ #undef GTEST_IMPLEMENTATION_
56
+
57
+ #if GTEST_OS_CYGWIN
58
+ # include <sys/types.h> // For ssize_t. NOLINT
59
+ #endif
60
+
61
+ class ProtocolMessage;
62
+
63
+ namespace proto2 {
64
+ class Message;
65
+ } // namespace proto2
66
+
67
+ namespace testing {
68
+ namespace internal {
69
+
70
+ namespace {
71
+
72
+ TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsNoWord) {
73
+ EXPECT_EQ("", ConvertIdentifierNameToWords(""));
74
+ EXPECT_EQ("", ConvertIdentifierNameToWords("_"));
75
+ EXPECT_EQ("", ConvertIdentifierNameToWords("__"));
76
+ }
77
+
78
+ TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsDigits) {
79
+ EXPECT_EQ("1", ConvertIdentifierNameToWords("_1"));
80
+ EXPECT_EQ("2", ConvertIdentifierNameToWords("2_"));
81
+ EXPECT_EQ("34", ConvertIdentifierNameToWords("_34_"));
82
+ EXPECT_EQ("34 56", ConvertIdentifierNameToWords("_34_56"));
83
+ }
84
+
85
+ TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContainsCamelCaseWords) {
86
+ EXPECT_EQ("a big word", ConvertIdentifierNameToWords("ABigWord"));
87
+ EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("FooBar"));
88
+ EXPECT_EQ("foo", ConvertIdentifierNameToWords("Foo_"));
89
+ EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("_Foo_Bar_"));
90
+ EXPECT_EQ("foo and bar", ConvertIdentifierNameToWords("_Foo__And_Bar"));
91
+ }
92
+
93
+ TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameContains_SeparatedWords) {
94
+ EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("foo_bar"));
95
+ EXPECT_EQ("foo", ConvertIdentifierNameToWords("_foo_"));
96
+ EXPECT_EQ("foo bar", ConvertIdentifierNameToWords("_foo_bar_"));
97
+ EXPECT_EQ("foo and bar", ConvertIdentifierNameToWords("_foo__and_bar"));
98
+ }
99
+
100
+ TEST(ConvertIdentifierNameToWordsTest, WorksWhenNameIsMixture) {
101
+ EXPECT_EQ("foo bar 123", ConvertIdentifierNameToWords("Foo_bar123"));
102
+ EXPECT_EQ("chapter 11 section 1",
103
+ ConvertIdentifierNameToWords("_Chapter11Section_1_"));
104
+ }
105
+
106
+ TEST(PointeeOfTest, WorksForSmartPointers) {
107
+ CompileAssertTypesEqual<const char,
108
+ PointeeOf<internal::linked_ptr<const char> >::type>();
109
+ #if GTEST_HAS_STD_UNIQUE_PTR_
110
+ CompileAssertTypesEqual<int, PointeeOf<std::unique_ptr<int> >::type>();
111
+ #endif // GTEST_HAS_STD_UNIQUE_PTR_
112
+ #if GTEST_HAS_STD_SHARED_PTR_
113
+ CompileAssertTypesEqual<std::string,
114
+ PointeeOf<std::shared_ptr<std::string> >::type>();
115
+ #endif // GTEST_HAS_STD_SHARED_PTR_
116
+ }
117
+
118
+ TEST(PointeeOfTest, WorksForRawPointers) {
119
+ CompileAssertTypesEqual<int, PointeeOf<int*>::type>();
120
+ CompileAssertTypesEqual<const char, PointeeOf<const char*>::type>();
121
+ CompileAssertTypesEqual<void, PointeeOf<void*>::type>();
122
+ }
123
+
124
+ TEST(GetRawPointerTest, WorksForSmartPointers) {
125
+ #if GTEST_HAS_STD_UNIQUE_PTR_
126
+ const char* const raw_p1 = new const char('a'); // NOLINT
127
+ const std::unique_ptr<const char> p1(raw_p1);
128
+ EXPECT_EQ(raw_p1, GetRawPointer(p1));
129
+ #endif // GTEST_HAS_STD_UNIQUE_PTR_
130
+ #if GTEST_HAS_STD_SHARED_PTR_
131
+ double* const raw_p2 = new double(2.5); // NOLINT
132
+ const std::shared_ptr<double> p2(raw_p2);
133
+ EXPECT_EQ(raw_p2, GetRawPointer(p2));
134
+ #endif // GTEST_HAS_STD_SHARED_PTR_
135
+
136
+ const char* const raw_p4 = new const char('a'); // NOLINT
137
+ const internal::linked_ptr<const char> p4(raw_p4);
138
+ EXPECT_EQ(raw_p4, GetRawPointer(p4));
139
+ }
140
+
141
+ TEST(GetRawPointerTest, WorksForRawPointers) {
142
+ int* p = NULL;
143
+ // Don't use EXPECT_EQ as no NULL-testing magic on Symbian.
144
+ EXPECT_TRUE(NULL == GetRawPointer(p));
145
+ int n = 1;
146
+ EXPECT_EQ(&n, GetRawPointer(&n));
147
+ }
148
+
149
+ // Tests KindOf<T>.
150
+
151
+ class Base {};
152
+ class Derived : public Base {};
153
+
154
+ TEST(KindOfTest, Bool) {
155
+ EXPECT_EQ(kBool, GMOCK_KIND_OF_(bool)); // NOLINT
156
+ }
157
+
158
+ TEST(KindOfTest, Integer) {
159
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(char)); // NOLINT
160
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(signed char)); // NOLINT
161
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned char)); // NOLINT
162
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(short)); // NOLINT
163
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned short)); // NOLINT
164
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(int)); // NOLINT
165
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned int)); // NOLINT
166
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(long)); // NOLINT
167
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(unsigned long)); // NOLINT
168
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(wchar_t)); // NOLINT
169
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(Int64)); // NOLINT
170
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(UInt64)); // NOLINT
171
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(size_t)); // NOLINT
172
+ #if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN
173
+ // ssize_t is not defined on Windows and possibly some other OSes.
174
+ EXPECT_EQ(kInteger, GMOCK_KIND_OF_(ssize_t)); // NOLINT
175
+ #endif
176
+ }
177
+
178
+ TEST(KindOfTest, FloatingPoint) {
179
+ EXPECT_EQ(kFloatingPoint, GMOCK_KIND_OF_(float)); // NOLINT
180
+ EXPECT_EQ(kFloatingPoint, GMOCK_KIND_OF_(double)); // NOLINT
181
+ EXPECT_EQ(kFloatingPoint, GMOCK_KIND_OF_(long double)); // NOLINT
182
+ }
183
+
184
+ TEST(KindOfTest, Other) {
185
+ EXPECT_EQ(kOther, GMOCK_KIND_OF_(void*)); // NOLINT
186
+ EXPECT_EQ(kOther, GMOCK_KIND_OF_(char**)); // NOLINT
187
+ EXPECT_EQ(kOther, GMOCK_KIND_OF_(Base)); // NOLINT
188
+ }
189
+
190
+ // Tests LosslessArithmeticConvertible<T, U>.
191
+
192
+ TEST(LosslessArithmeticConvertibleTest, BoolToBool) {
193
+ EXPECT_TRUE((LosslessArithmeticConvertible<bool, bool>::value));
194
+ }
195
+
196
+ TEST(LosslessArithmeticConvertibleTest, BoolToInteger) {
197
+ EXPECT_TRUE((LosslessArithmeticConvertible<bool, char>::value));
198
+ EXPECT_TRUE((LosslessArithmeticConvertible<bool, int>::value));
199
+ EXPECT_TRUE(
200
+ (LosslessArithmeticConvertible<bool, unsigned long>::value)); // NOLINT
201
+ }
202
+
203
+ TEST(LosslessArithmeticConvertibleTest, BoolToFloatingPoint) {
204
+ EXPECT_TRUE((LosslessArithmeticConvertible<bool, float>::value));
205
+ EXPECT_TRUE((LosslessArithmeticConvertible<bool, double>::value));
206
+ }
207
+
208
+ TEST(LosslessArithmeticConvertibleTest, IntegerToBool) {
209
+ EXPECT_FALSE((LosslessArithmeticConvertible<unsigned char, bool>::value));
210
+ EXPECT_FALSE((LosslessArithmeticConvertible<int, bool>::value));
211
+ }
212
+
213
+ TEST(LosslessArithmeticConvertibleTest, IntegerToInteger) {
214
+ // Unsigned => larger signed is fine.
215
+ EXPECT_TRUE((LosslessArithmeticConvertible<unsigned char, int>::value));
216
+
217
+ // Unsigned => larger unsigned is fine.
218
+ EXPECT_TRUE(
219
+ (LosslessArithmeticConvertible<unsigned short, UInt64>::value)); // NOLINT
220
+
221
+ // Signed => unsigned is not fine.
222
+ EXPECT_FALSE((LosslessArithmeticConvertible<short, UInt64>::value)); // NOLINT
223
+ EXPECT_FALSE((LosslessArithmeticConvertible<
224
+ signed char, unsigned int>::value)); // NOLINT
225
+
226
+ // Same size and same signedness: fine too.
227
+ EXPECT_TRUE((LosslessArithmeticConvertible<
228
+ unsigned char, unsigned char>::value));
229
+ EXPECT_TRUE((LosslessArithmeticConvertible<int, int>::value));
230
+ EXPECT_TRUE((LosslessArithmeticConvertible<wchar_t, wchar_t>::value));
231
+ EXPECT_TRUE((LosslessArithmeticConvertible<
232
+ unsigned long, unsigned long>::value)); // NOLINT
233
+
234
+ // Same size, different signedness: not fine.
235
+ EXPECT_FALSE((LosslessArithmeticConvertible<
236
+ unsigned char, signed char>::value));
237
+ EXPECT_FALSE((LosslessArithmeticConvertible<int, unsigned int>::value));
238
+ EXPECT_FALSE((LosslessArithmeticConvertible<UInt64, Int64>::value));
239
+
240
+ // Larger size => smaller size is not fine.
241
+ EXPECT_FALSE((LosslessArithmeticConvertible<long, char>::value)); // NOLINT
242
+ EXPECT_FALSE((LosslessArithmeticConvertible<int, signed char>::value));
243
+ EXPECT_FALSE((LosslessArithmeticConvertible<Int64, unsigned int>::value));
244
+ }
245
+
246
+ TEST(LosslessArithmeticConvertibleTest, IntegerToFloatingPoint) {
247
+ // Integers cannot be losslessly converted to floating-points, as
248
+ // the format of the latter is implementation-defined.
249
+ EXPECT_FALSE((LosslessArithmeticConvertible<char, float>::value));
250
+ EXPECT_FALSE((LosslessArithmeticConvertible<int, double>::value));
251
+ EXPECT_FALSE((LosslessArithmeticConvertible<
252
+ short, long double>::value)); // NOLINT
253
+ }
254
+
255
+ TEST(LosslessArithmeticConvertibleTest, FloatingPointToBool) {
256
+ EXPECT_FALSE((LosslessArithmeticConvertible<float, bool>::value));
257
+ EXPECT_FALSE((LosslessArithmeticConvertible<double, bool>::value));
258
+ }
259
+
260
+ TEST(LosslessArithmeticConvertibleTest, FloatingPointToInteger) {
261
+ EXPECT_FALSE((LosslessArithmeticConvertible<float, long>::value)); // NOLINT
262
+ EXPECT_FALSE((LosslessArithmeticConvertible<double, Int64>::value));
263
+ EXPECT_FALSE((LosslessArithmeticConvertible<long double, int>::value));
264
+ }
265
+
266
+ TEST(LosslessArithmeticConvertibleTest, FloatingPointToFloatingPoint) {
267
+ // Smaller size => larger size is fine.
268
+ EXPECT_TRUE((LosslessArithmeticConvertible<float, double>::value));
269
+ EXPECT_TRUE((LosslessArithmeticConvertible<float, long double>::value));
270
+ EXPECT_TRUE((LosslessArithmeticConvertible<double, long double>::value));
271
+
272
+ // Same size: fine.
273
+ EXPECT_TRUE((LosslessArithmeticConvertible<float, float>::value));
274
+ EXPECT_TRUE((LosslessArithmeticConvertible<double, double>::value));
275
+
276
+ // Larger size => smaller size is not fine.
277
+ EXPECT_FALSE((LosslessArithmeticConvertible<double, float>::value));
278
+ GTEST_INTENTIONAL_CONST_COND_PUSH_()
279
+ if (sizeof(double) == sizeof(long double)) { // NOLINT
280
+ GTEST_INTENTIONAL_CONST_COND_POP_()
281
+ // In some implementations (e.g. MSVC), double and long double
282
+ // have the same size.
283
+ EXPECT_TRUE((LosslessArithmeticConvertible<long double, double>::value));
284
+ } else {
285
+ EXPECT_FALSE((LosslessArithmeticConvertible<long double, double>::value));
286
+ }
287
+ }
288
+
289
+ // Tests the TupleMatches() template function.
290
+
291
+ TEST(TupleMatchesTest, WorksForSize0) {
292
+ tuple<> matchers;
293
+ tuple<> values;
294
+
295
+ EXPECT_TRUE(TupleMatches(matchers, values));
296
+ }
297
+
298
+ TEST(TupleMatchesTest, WorksForSize1) {
299
+ tuple<Matcher<int> > matchers(Eq(1));
300
+ tuple<int> values1(1),
301
+ values2(2);
302
+
303
+ EXPECT_TRUE(TupleMatches(matchers, values1));
304
+ EXPECT_FALSE(TupleMatches(matchers, values2));
305
+ }
306
+
307
+ TEST(TupleMatchesTest, WorksForSize2) {
308
+ tuple<Matcher<int>, Matcher<char> > matchers(Eq(1), Eq('a'));
309
+ tuple<int, char> values1(1, 'a'),
310
+ values2(1, 'b'),
311
+ values3(2, 'a'),
312
+ values4(2, 'b');
313
+
314
+ EXPECT_TRUE(TupleMatches(matchers, values1));
315
+ EXPECT_FALSE(TupleMatches(matchers, values2));
316
+ EXPECT_FALSE(TupleMatches(matchers, values3));
317
+ EXPECT_FALSE(TupleMatches(matchers, values4));
318
+ }
319
+
320
+ TEST(TupleMatchesTest, WorksForSize5) {
321
+ tuple<Matcher<int>, Matcher<char>, Matcher<bool>, Matcher<long>, // NOLINT
322
+ Matcher<string> >
323
+ matchers(Eq(1), Eq('a'), Eq(true), Eq(2L), Eq("hi"));
324
+ tuple<int, char, bool, long, string> // NOLINT
325
+ values1(1, 'a', true, 2L, "hi"),
326
+ values2(1, 'a', true, 2L, "hello"),
327
+ values3(2, 'a', true, 2L, "hi");
328
+
329
+ EXPECT_TRUE(TupleMatches(matchers, values1));
330
+ EXPECT_FALSE(TupleMatches(matchers, values2));
331
+ EXPECT_FALSE(TupleMatches(matchers, values3));
332
+ }
333
+
334
+ // Tests that Assert(true, ...) succeeds.
335
+ TEST(AssertTest, SucceedsOnTrue) {
336
+ Assert(true, __FILE__, __LINE__, "This should succeed.");
337
+ Assert(true, __FILE__, __LINE__); // This should succeed too.
338
+ }
339
+
340
+ // Tests that Assert(false, ...) generates a fatal failure.
341
+ TEST(AssertTest, FailsFatallyOnFalse) {
342
+ EXPECT_DEATH_IF_SUPPORTED({
343
+ Assert(false, __FILE__, __LINE__, "This should fail.");
344
+ }, "");
345
+
346
+ EXPECT_DEATH_IF_SUPPORTED({
347
+ Assert(false, __FILE__, __LINE__);
348
+ }, "");
349
+ }
350
+
351
+ // Tests that Expect(true, ...) succeeds.
352
+ TEST(ExpectTest, SucceedsOnTrue) {
353
+ Expect(true, __FILE__, __LINE__, "This should succeed.");
354
+ Expect(true, __FILE__, __LINE__); // This should succeed too.
355
+ }
356
+
357
+ // Tests that Expect(false, ...) generates a non-fatal failure.
358
+ TEST(ExpectTest, FailsNonfatallyOnFalse) {
359
+ EXPECT_NONFATAL_FAILURE({ // NOLINT
360
+ Expect(false, __FILE__, __LINE__, "This should fail.");
361
+ }, "This should fail");
362
+
363
+ EXPECT_NONFATAL_FAILURE({ // NOLINT
364
+ Expect(false, __FILE__, __LINE__);
365
+ }, "Expectation failed");
366
+ }
367
+
368
+ // Tests LogIsVisible().
369
+
370
+ class LogIsVisibleTest : public ::testing::Test {
371
+ protected:
372
+ virtual void SetUp() {
373
+ original_verbose_ = GMOCK_FLAG(verbose);
374
+ }
375
+
376
+ virtual void TearDown() { GMOCK_FLAG(verbose) = original_verbose_; }
377
+
378
+ string original_verbose_;
379
+ };
380
+
381
+ TEST_F(LogIsVisibleTest, AlwaysReturnsTrueIfVerbosityIsInfo) {
382
+ GMOCK_FLAG(verbose) = kInfoVerbosity;
383
+ EXPECT_TRUE(LogIsVisible(kInfo));
384
+ EXPECT_TRUE(LogIsVisible(kWarning));
385
+ }
386
+
387
+ TEST_F(LogIsVisibleTest, AlwaysReturnsFalseIfVerbosityIsError) {
388
+ GMOCK_FLAG(verbose) = kErrorVerbosity;
389
+ EXPECT_FALSE(LogIsVisible(kInfo));
390
+ EXPECT_FALSE(LogIsVisible(kWarning));
391
+ }
392
+
393
+ TEST_F(LogIsVisibleTest, WorksWhenVerbosityIsWarning) {
394
+ GMOCK_FLAG(verbose) = kWarningVerbosity;
395
+ EXPECT_FALSE(LogIsVisible(kInfo));
396
+ EXPECT_TRUE(LogIsVisible(kWarning));
397
+ }
398
+
399
+ #if GTEST_HAS_STREAM_REDIRECTION
400
+
401
+ // Tests the Log() function.
402
+
403
+ // Verifies that Log() behaves correctly for the given verbosity level
404
+ // and log severity.
405
+ void TestLogWithSeverity(const string& verbosity, LogSeverity severity,
406
+ bool should_print) {
407
+ const string old_flag = GMOCK_FLAG(verbose);
408
+ GMOCK_FLAG(verbose) = verbosity;
409
+ CaptureStdout();
410
+ Log(severity, "Test log.\n", 0);
411
+ if (should_print) {
412
+ EXPECT_THAT(GetCapturedStdout().c_str(),
413
+ ContainsRegex(
414
+ severity == kWarning ?
415
+ "^\nGMOCK WARNING:\nTest log\\.\nStack trace:\n" :
416
+ "^\nTest log\\.\nStack trace:\n"));
417
+ } else {
418
+ EXPECT_STREQ("", GetCapturedStdout().c_str());
419
+ }
420
+ GMOCK_FLAG(verbose) = old_flag;
421
+ }
422
+
423
+ // Tests that when the stack_frames_to_skip parameter is negative,
424
+ // Log() doesn't include the stack trace in the output.
425
+ TEST(LogTest, NoStackTraceWhenStackFramesToSkipIsNegative) {
426
+ const string saved_flag = GMOCK_FLAG(verbose);
427
+ GMOCK_FLAG(verbose) = kInfoVerbosity;
428
+ CaptureStdout();
429
+ Log(kInfo, "Test log.\n", -1);
430
+ EXPECT_STREQ("\nTest log.\n", GetCapturedStdout().c_str());
431
+ GMOCK_FLAG(verbose) = saved_flag;
432
+ }
433
+
434
+ struct MockStackTraceGetter : testing::internal::OsStackTraceGetterInterface {
435
+ virtual string CurrentStackTrace(int max_depth, int skip_count) {
436
+ return (testing::Message() << max_depth << "::" << skip_count << "\n")
437
+ .GetString();
438
+ }
439
+ virtual void UponLeavingGTest() {}
440
+ };
441
+
442
+ // Tests that in opt mode, a positive stack_frames_to_skip argument is
443
+ // treated as 0.
444
+ TEST(LogTest, NoSkippingStackFrameInOptMode) {
445
+ MockStackTraceGetter* mock_os_stack_trace_getter = new MockStackTraceGetter;
446
+ GetUnitTestImpl()->set_os_stack_trace_getter(mock_os_stack_trace_getter);
447
+
448
+ CaptureStdout();
449
+ Log(kWarning, "Test log.\n", 100);
450
+ const string log = GetCapturedStdout();
451
+
452
+ string expected_trace =
453
+ (testing::Message() << GTEST_FLAG(stack_trace_depth) << "::").GetString();
454
+ string expected_message =
455
+ "\nGMOCK WARNING:\n"
456
+ "Test log.\n"
457
+ "Stack trace:\n" +
458
+ expected_trace;
459
+ EXPECT_THAT(log, HasSubstr(expected_message));
460
+ int skip_count = atoi(log.substr(expected_message.size()).c_str());
461
+
462
+ # if defined(NDEBUG)
463
+ // In opt mode, no stack frame should be skipped.
464
+ const int expected_skip_count = 0;
465
+ # else
466
+ // In dbg mode, the stack frames should be skipped.
467
+ const int expected_skip_count = 100;
468
+ # endif
469
+
470
+ // Note that each inner implementation layer will +1 the number to remove
471
+ // itself from the trace. This means that the value is a little higher than
472
+ // expected, but close enough.
473
+ EXPECT_THAT(skip_count,
474
+ AllOf(Ge(expected_skip_count), Le(expected_skip_count + 10)));
475
+
476
+ // Restores the default OS stack trace getter.
477
+ GetUnitTestImpl()->set_os_stack_trace_getter(NULL);
478
+ }
479
+
480
+ // Tests that all logs are printed when the value of the
481
+ // --gmock_verbose flag is "info".
482
+ TEST(LogTest, AllLogsArePrintedWhenVerbosityIsInfo) {
483
+ TestLogWithSeverity(kInfoVerbosity, kInfo, true);
484
+ TestLogWithSeverity(kInfoVerbosity, kWarning, true);
485
+ }
486
+
487
+ // Tests that only warnings are printed when the value of the
488
+ // --gmock_verbose flag is "warning".
489
+ TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsWarning) {
490
+ TestLogWithSeverity(kWarningVerbosity, kInfo, false);
491
+ TestLogWithSeverity(kWarningVerbosity, kWarning, true);
492
+ }
493
+
494
+ // Tests that no logs are printed when the value of the
495
+ // --gmock_verbose flag is "error".
496
+ TEST(LogTest, NoLogsArePrintedWhenVerbosityIsError) {
497
+ TestLogWithSeverity(kErrorVerbosity, kInfo, false);
498
+ TestLogWithSeverity(kErrorVerbosity, kWarning, false);
499
+ }
500
+
501
+ // Tests that only warnings are printed when the value of the
502
+ // --gmock_verbose flag is invalid.
503
+ TEST(LogTest, OnlyWarningsArePrintedWhenVerbosityIsInvalid) {
504
+ TestLogWithSeverity("invalid", kInfo, false);
505
+ TestLogWithSeverity("invalid", kWarning, true);
506
+ }
507
+
508
+ #endif // GTEST_HAS_STREAM_REDIRECTION
509
+
510
+ TEST(TypeTraitsTest, true_type) {
511
+ EXPECT_TRUE(true_type::value);
512
+ }
513
+
514
+ TEST(TypeTraitsTest, false_type) {
515
+ EXPECT_FALSE(false_type::value);
516
+ }
517
+
518
+ TEST(TypeTraitsTest, is_reference) {
519
+ EXPECT_FALSE(is_reference<int>::value);
520
+ EXPECT_FALSE(is_reference<char*>::value);
521
+ EXPECT_TRUE(is_reference<const int&>::value);
522
+ }
523
+
524
+ TEST(TypeTraitsTest, is_pointer) {
525
+ EXPECT_FALSE(is_pointer<int>::value);
526
+ EXPECT_FALSE(is_pointer<char&>::value);
527
+ EXPECT_TRUE(is_pointer<const int*>::value);
528
+ }
529
+
530
+ TEST(TypeTraitsTest, type_equals) {
531
+ EXPECT_FALSE((type_equals<int, const int>::value));
532
+ EXPECT_FALSE((type_equals<int, int&>::value));
533
+ EXPECT_FALSE((type_equals<int, double>::value));
534
+ EXPECT_TRUE((type_equals<char, char>::value));
535
+ }
536
+
537
+ TEST(TypeTraitsTest, remove_reference) {
538
+ EXPECT_TRUE((type_equals<char, remove_reference<char&>::type>::value));
539
+ EXPECT_TRUE((type_equals<const int,
540
+ remove_reference<const int&>::type>::value));
541
+ EXPECT_TRUE((type_equals<int, remove_reference<int>::type>::value));
542
+ EXPECT_TRUE((type_equals<double*, remove_reference<double*>::type>::value));
543
+ }
544
+
545
+ #if GTEST_HAS_STREAM_REDIRECTION
546
+
547
+ // Verifies that Log() behaves correctly for the given verbosity level
548
+ // and log severity.
549
+ std::string GrabOutput(void(*logger)(), const char* verbosity) {
550
+ const string saved_flag = GMOCK_FLAG(verbose);
551
+ GMOCK_FLAG(verbose) = verbosity;
552
+ CaptureStdout();
553
+ logger();
554
+ GMOCK_FLAG(verbose) = saved_flag;
555
+ return GetCapturedStdout();
556
+ }
557
+
558
+ class DummyMock {
559
+ public:
560
+ MOCK_METHOD0(TestMethod, void());
561
+ MOCK_METHOD1(TestMethodArg, void(int dummy));
562
+ };
563
+
564
+ void ExpectCallLogger() {
565
+ DummyMock mock;
566
+ EXPECT_CALL(mock, TestMethod());
567
+ mock.TestMethod();
568
+ };
569
+
570
+ // Verifies that EXPECT_CALL logs if the --gmock_verbose flag is set to "info".
571
+ TEST(ExpectCallTest, LogsWhenVerbosityIsInfo) {
572
+ EXPECT_THAT(std::string(GrabOutput(ExpectCallLogger, kInfoVerbosity)),
573
+ HasSubstr("EXPECT_CALL(mock, TestMethod())"));
574
+ }
575
+
576
+ // Verifies that EXPECT_CALL doesn't log
577
+ // if the --gmock_verbose flag is set to "warning".
578
+ TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsWarning) {
579
+ EXPECT_STREQ("", GrabOutput(ExpectCallLogger, kWarningVerbosity).c_str());
580
+ }
581
+
582
+ // Verifies that EXPECT_CALL doesn't log
583
+ // if the --gmock_verbose flag is set to "error".
584
+ TEST(ExpectCallTest, DoesNotLogWhenVerbosityIsError) {
585
+ EXPECT_STREQ("", GrabOutput(ExpectCallLogger, kErrorVerbosity).c_str());
586
+ }
587
+
588
+ void OnCallLogger() {
589
+ DummyMock mock;
590
+ ON_CALL(mock, TestMethod());
591
+ };
592
+
593
+ // Verifies that ON_CALL logs if the --gmock_verbose flag is set to "info".
594
+ TEST(OnCallTest, LogsWhenVerbosityIsInfo) {
595
+ EXPECT_THAT(std::string(GrabOutput(OnCallLogger, kInfoVerbosity)),
596
+ HasSubstr("ON_CALL(mock, TestMethod())"));
597
+ }
598
+
599
+ // Verifies that ON_CALL doesn't log
600
+ // if the --gmock_verbose flag is set to "warning".
601
+ TEST(OnCallTest, DoesNotLogWhenVerbosityIsWarning) {
602
+ EXPECT_STREQ("", GrabOutput(OnCallLogger, kWarningVerbosity).c_str());
603
+ }
604
+
605
+ // Verifies that ON_CALL doesn't log if
606
+ // the --gmock_verbose flag is set to "error".
607
+ TEST(OnCallTest, DoesNotLogWhenVerbosityIsError) {
608
+ EXPECT_STREQ("", GrabOutput(OnCallLogger, kErrorVerbosity).c_str());
609
+ }
610
+
611
+ void OnCallAnyArgumentLogger() {
612
+ DummyMock mock;
613
+ ON_CALL(mock, TestMethodArg(_));
614
+ }
615
+
616
+ // Verifies that ON_CALL prints provided _ argument.
617
+ TEST(OnCallTest, LogsAnythingArgument) {
618
+ EXPECT_THAT(std::string(GrabOutput(OnCallAnyArgumentLogger, kInfoVerbosity)),
619
+ HasSubstr("ON_CALL(mock, TestMethodArg(_)"));
620
+ }
621
+
622
+ #endif // GTEST_HAS_STREAM_REDIRECTION
623
+
624
+ // Tests StlContainerView.
625
+
626
+ TEST(StlContainerViewTest, WorksForStlContainer) {
627
+ StaticAssertTypeEq<std::vector<int>,
628
+ StlContainerView<std::vector<int> >::type>();
629
+ StaticAssertTypeEq<const std::vector<double>&,
630
+ StlContainerView<std::vector<double> >::const_reference>();
631
+
632
+ typedef std::vector<char> Chars;
633
+ Chars v1;
634
+ const Chars& v2(StlContainerView<Chars>::ConstReference(v1));
635
+ EXPECT_EQ(&v1, &v2);
636
+
637
+ v1.push_back('a');
638
+ Chars v3 = StlContainerView<Chars>::Copy(v1);
639
+ EXPECT_THAT(v3, Eq(v3));
640
+ }
641
+
642
+ TEST(StlContainerViewTest, WorksForStaticNativeArray) {
643
+ StaticAssertTypeEq<NativeArray<int>,
644
+ StlContainerView<int[3]>::type>();
645
+ StaticAssertTypeEq<NativeArray<double>,
646
+ StlContainerView<const double[4]>::type>();
647
+ StaticAssertTypeEq<NativeArray<char[3]>,
648
+ StlContainerView<const char[2][3]>::type>();
649
+
650
+ StaticAssertTypeEq<const NativeArray<int>,
651
+ StlContainerView<int[2]>::const_reference>();
652
+
653
+ int a1[3] = { 0, 1, 2 };
654
+ NativeArray<int> a2 = StlContainerView<int[3]>::ConstReference(a1);
655
+ EXPECT_EQ(3U, a2.size());
656
+ EXPECT_EQ(a1, a2.begin());
657
+
658
+ const NativeArray<int> a3 = StlContainerView<int[3]>::Copy(a1);
659
+ ASSERT_EQ(3U, a3.size());
660
+ EXPECT_EQ(0, a3.begin()[0]);
661
+ EXPECT_EQ(1, a3.begin()[1]);
662
+ EXPECT_EQ(2, a3.begin()[2]);
663
+
664
+ // Makes sure a1 and a3 aren't aliases.
665
+ a1[0] = 3;
666
+ EXPECT_EQ(0, a3.begin()[0]);
667
+ }
668
+
669
+ TEST(StlContainerViewTest, WorksForDynamicNativeArray) {
670
+ StaticAssertTypeEq<NativeArray<int>,
671
+ StlContainerView<tuple<const int*, size_t> >::type>();
672
+ StaticAssertTypeEq<NativeArray<double>,
673
+ StlContainerView<tuple<linked_ptr<double>, int> >::type>();
674
+
675
+ StaticAssertTypeEq<const NativeArray<int>,
676
+ StlContainerView<tuple<const int*, int> >::const_reference>();
677
+
678
+ int a1[3] = { 0, 1, 2 };
679
+ const int* const p1 = a1;
680
+ NativeArray<int> a2 = StlContainerView<tuple<const int*, int> >::
681
+ ConstReference(make_tuple(p1, 3));
682
+ EXPECT_EQ(3U, a2.size());
683
+ EXPECT_EQ(a1, a2.begin());
684
+
685
+ const NativeArray<int> a3 = StlContainerView<tuple<int*, size_t> >::
686
+ Copy(make_tuple(static_cast<int*>(a1), 3));
687
+ ASSERT_EQ(3U, a3.size());
688
+ EXPECT_EQ(0, a3.begin()[0]);
689
+ EXPECT_EQ(1, a3.begin()[1]);
690
+ EXPECT_EQ(2, a3.begin()[2]);
691
+
692
+ // Makes sure a1 and a3 aren't aliases.
693
+ a1[0] = 3;
694
+ EXPECT_EQ(0, a3.begin()[0]);
695
+ }
696
+
697
+ } // namespace
698
+ } // namespace internal
699
+ } // namespace testing