rj_schema 0.2.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (371) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rj_schema/rapidjson/CMakeLists.txt +9 -4
  3. data/ext/rj_schema/rapidjson/RapidJSONConfig.cmake.in +10 -0
  4. data/ext/rj_schema/rapidjson/appveyor.yml +22 -9
  5. data/ext/rj_schema/rapidjson/bin/data/abcde.txt +1 -0
  6. data/ext/rj_schema/rapidjson/bin/unittestschema/address.json +139 -0
  7. data/ext/rj_schema/rapidjson/bin/unittestschema/allOf_address.json +7 -0
  8. data/ext/rj_schema/rapidjson/bin/unittestschema/anyOf_address.json +7 -0
  9. data/ext/rj_schema/rapidjson/bin/unittestschema/oneOf_address.json +7 -0
  10. data/ext/rj_schema/rapidjson/contrib/natvis/rapidjson.natvis +2 -2
  11. data/ext/rj_schema/rapidjson/doc/dom.md +1 -0
  12. data/ext/rj_schema/rapidjson/doc/dom.zh-cn.md +1 -0
  13. data/ext/rj_schema/rapidjson/doc/faq.md +3 -3
  14. data/ext/rj_schema/rapidjson/doc/faq.zh-cn.md +8 -8
  15. data/ext/rj_schema/rapidjson/doc/internals.md +1 -1
  16. data/ext/rj_schema/rapidjson/doc/internals.zh-cn.md +2 -2
  17. data/ext/rj_schema/rapidjson/doc/pointer.zh-cn.md +1 -1
  18. data/ext/rj_schema/rapidjson/doc/sax.md +1 -1
  19. data/ext/rj_schema/rapidjson/doc/sax.zh-cn.md +2 -2
  20. data/ext/rj_schema/rapidjson/doc/stream.md +1 -1
  21. data/ext/rj_schema/rapidjson/doc/tutorial.md +1 -1
  22. data/ext/rj_schema/rapidjson/doc/tutorial.zh-cn.md +7 -6
  23. data/ext/rj_schema/rapidjson/example/CMakeLists.txt +1 -0
  24. data/ext/rj_schema/rapidjson/example/schemavalidator/schemavalidator.cpp +118 -0
  25. data/ext/rj_schema/rapidjson/example/sortkeys/sortkeys.cpp +62 -0
  26. data/ext/rj_schema/rapidjson/example/tutorial/tutorial.cpp +1 -1
  27. data/ext/rj_schema/rapidjson/include/rapidjson/allocators.h +6 -6
  28. data/ext/rj_schema/rapidjson/include/rapidjson/cursorstreamwrapper.h +1 -1
  29. data/ext/rj_schema/rapidjson/include/rapidjson/document.h +124 -35
  30. data/ext/rj_schema/rapidjson/include/rapidjson/encodedstream.h +1 -1
  31. data/ext/rj_schema/rapidjson/include/rapidjson/encodings.h +1 -1
  32. data/ext/rj_schema/rapidjson/include/rapidjson/error/en.h +49 -1
  33. data/ext/rj_schema/rapidjson/include/rapidjson/error/error.h +56 -1
  34. data/ext/rj_schema/rapidjson/include/rapidjson/filereadstream.h +2 -2
  35. data/ext/rj_schema/rapidjson/include/rapidjson/filewritestream.h +1 -1
  36. data/ext/rj_schema/rapidjson/include/rapidjson/fwd.h +2 -2
  37. data/ext/rj_schema/rapidjson/include/rapidjson/internal/biginteger.h +2 -2
  38. data/ext/rj_schema/rapidjson/include/rapidjson/internal/clzll.h +71 -0
  39. data/ext/rj_schema/rapidjson/include/rapidjson/internal/diyfp.h +3 -17
  40. data/ext/rj_schema/rapidjson/include/rapidjson/internal/dtoa.h +1 -1
  41. data/ext/rj_schema/rapidjson/include/rapidjson/internal/ieee754.h +1 -1
  42. data/ext/rj_schema/rapidjson/include/rapidjson/internal/itoa.h +1 -1
  43. data/ext/rj_schema/rapidjson/include/rapidjson/internal/meta.h +1 -1
  44. data/ext/rj_schema/rapidjson/include/rapidjson/internal/pow10.h +1 -1
  45. data/ext/rj_schema/rapidjson/include/rapidjson/internal/regex.h +20 -13
  46. data/ext/rj_schema/rapidjson/include/rapidjson/internal/stack.h +4 -3
  47. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strfunc.h +1 -1
  48. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strtod.h +1 -1
  49. data/ext/rj_schema/rapidjson/include/rapidjson/internal/swap.h +1 -1
  50. data/ext/rj_schema/rapidjson/include/rapidjson/istreamwrapper.h +50 -35
  51. data/ext/rj_schema/rapidjson/include/rapidjson/memorybuffer.h +1 -1
  52. data/ext/rj_schema/rapidjson/include/rapidjson/memorystream.h +1 -1
  53. data/ext/rj_schema/rapidjson/include/rapidjson/ostreamwrapper.h +1 -1
  54. data/ext/rj_schema/rapidjson/include/rapidjson/pointer.h +63 -5
  55. data/ext/rj_schema/rapidjson/include/rapidjson/prettywriter.h +2 -2
  56. data/ext/rj_schema/rapidjson/include/rapidjson/rapidjson.h +63 -1
  57. data/ext/rj_schema/rapidjson/include/rapidjson/reader.h +67 -53
  58. data/ext/rj_schema/rapidjson/include/rapidjson/schema.h +318 -164
  59. data/ext/rj_schema/rapidjson/include/rapidjson/stream.h +1 -1
  60. data/ext/rj_schema/rapidjson/include/rapidjson/stringbuffer.h +1 -1
  61. data/ext/rj_schema/rapidjson/include/rapidjson/writer.h +10 -10
  62. data/ext/rj_schema/rapidjson/readme.md +51 -1
  63. data/ext/rj_schema/rapidjson/readme.zh-cn.md +2 -2
  64. data/ext/rj_schema/rapidjson/test/perftest/misctest.cpp +1 -1
  65. data/ext/rj_schema/rapidjson/test/perftest/perftest.cpp +1 -1
  66. data/ext/rj_schema/rapidjson/test/perftest/perftest.h +1 -1
  67. data/ext/rj_schema/rapidjson/test/perftest/platformtest.cpp +2 -2
  68. data/ext/rj_schema/rapidjson/test/perftest/rapidjsontest.cpp +75 -1
  69. data/ext/rj_schema/rapidjson/test/unittest/CMakeLists.txt +1 -0
  70. data/ext/rj_schema/rapidjson/test/unittest/allocatorstest.cpp +1 -1
  71. data/ext/rj_schema/rapidjson/test/unittest/bigintegertest.cpp +1 -1
  72. data/ext/rj_schema/rapidjson/test/unittest/clzlltest.cpp +34 -0
  73. data/ext/rj_schema/rapidjson/test/unittest/cursorstreamwrappertest.cpp +19 -19
  74. data/ext/rj_schema/rapidjson/test/unittest/documenttest.cpp +1 -1
  75. data/ext/rj_schema/rapidjson/test/unittest/dtoatest.cpp +1 -1
  76. data/ext/rj_schema/rapidjson/test/unittest/encodedstreamtest.cpp +1 -1
  77. data/ext/rj_schema/rapidjson/test/unittest/encodingstest.cpp +1 -1
  78. data/ext/rj_schema/rapidjson/test/unittest/filestreamtest.cpp +45 -2
  79. data/ext/rj_schema/rapidjson/test/unittest/fwdtest.cpp +1 -1
  80. data/ext/rj_schema/rapidjson/test/unittest/istreamwrappertest.cpp +10 -10
  81. data/ext/rj_schema/rapidjson/test/unittest/itoatest.cpp +8 -8
  82. data/ext/rj_schema/rapidjson/test/unittest/jsoncheckertest.cpp +1 -1
  83. data/ext/rj_schema/rapidjson/test/unittest/namespacetest.cpp +1 -1
  84. data/ext/rj_schema/rapidjson/test/unittest/ostreamwrappertest.cpp +1 -1
  85. data/ext/rj_schema/rapidjson/test/unittest/pointertest.cpp +157 -16
  86. data/ext/rj_schema/rapidjson/test/unittest/prettywritertest.cpp +1 -1
  87. data/ext/rj_schema/rapidjson/test/unittest/readertest.cpp +113 -75
  88. data/ext/rj_schema/rapidjson/test/unittest/regextest.cpp +2 -1
  89. data/ext/rj_schema/rapidjson/test/unittest/schematest.cpp +593 -78
  90. data/ext/rj_schema/rapidjson/test/unittest/simdtest.cpp +1 -1
  91. data/ext/rj_schema/rapidjson/test/unittest/strfunctest.cpp +1 -1
  92. data/ext/rj_schema/rapidjson/test/unittest/stringbuffertest.cpp +5 -5
  93. data/ext/rj_schema/rapidjson/test/unittest/strtodtest.cpp +1 -1
  94. data/ext/rj_schema/rapidjson/test/unittest/unittest.cpp +1 -1
  95. data/ext/rj_schema/rapidjson/test/unittest/unittest.h +4 -1
  96. data/ext/rj_schema/rapidjson/test/unittest/valuetest.cpp +12 -12
  97. data/ext/rj_schema/rapidjson/test/unittest/writertest.cpp +1 -1
  98. data/ext/rj_schema/rapidjson/thirdparty/gtest/BUILD.bazel +175 -0
  99. data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +18 -1
  100. data/ext/rj_schema/rapidjson/thirdparty/gtest/CONTRIBUTING.md +160 -0
  101. data/ext/rj_schema/rapidjson/thirdparty/gtest/LICENSE +28 -0
  102. data/ext/rj_schema/rapidjson/thirdparty/gtest/Makefile.am +14 -0
  103. data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +16 -35
  104. data/ext/rj_schema/rapidjson/thirdparty/gtest/WORKSPACE +8 -0
  105. data/ext/rj_schema/rapidjson/thirdparty/gtest/appveyor.yml +104 -0
  106. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/build-linux-autotools.sh +44 -0
  107. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/build-linux-bazel.sh +36 -0
  108. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/env-linux.sh +41 -0
  109. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/env-osx.sh +40 -0
  110. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/get-nprocessors.sh +48 -0
  111. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/install-linux.sh +49 -0
  112. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/install-osx.sh +39 -0
  113. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/log-config.sh +51 -0
  114. data/ext/rj_schema/rapidjson/thirdparty/gtest/ci/travis.sh +44 -0
  115. data/ext/rj_schema/rapidjson/thirdparty/gtest/configure.ac +16 -0
  116. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +1 -1
  117. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +72 -32
  118. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +53 -42
  119. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/cmake/gmock.pc.in +9 -0
  120. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/cmake/gmock_main.pc.in +9 -0
  121. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +4 -4
  122. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +6 -4
  123. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +117 -132
  124. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +7 -4
  125. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +20 -12
  126. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +1 -2
  127. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +83 -26
  128. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +262 -68
  129. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +45 -6
  130. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +650 -366
  131. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +76 -20
  132. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +308 -229
  133. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +18 -15
  134. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +87 -26
  135. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +33 -16
  136. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +1209 -353
  137. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +33 -0
  138. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +159 -88
  139. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +2 -1
  140. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +1 -1
  141. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +3 -4
  142. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +16 -9
  143. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +71 -8
  144. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +7 -11
  145. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +14 -0
  146. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +69 -6
  147. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +2 -2
  148. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +69 -6
  149. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +83 -8
  150. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +14 -0
  151. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +63 -2
  152. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +63 -2
  153. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +76 -3
  154. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +1 -1
  155. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +4 -5
  156. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +3 -3
  157. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +1 -1
  158. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +36 -6
  159. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +210 -135
  160. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +108 -48
  161. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +23 -1
  162. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/BUILD.bazel +123 -0
  163. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +166 -2
  164. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +1 -1
  165. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +64 -62
  166. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +43 -18
  167. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +11 -9
  168. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +91 -36
  169. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +33 -14
  170. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +1286 -167
  171. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +85 -83
  172. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +102 -15
  173. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +136 -9
  174. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +1 -1
  175. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +1 -1
  176. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +24 -2
  177. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +8 -5
  178. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +20 -1
  179. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +8 -1
  180. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +3 -2
  181. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +44 -2
  182. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +5 -7
  183. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +40 -14
  184. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +60 -31
  185. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +232 -171
  186. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/gtest.pc.in +9 -0
  187. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/gtest_main.pc.in +10 -0
  188. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +54 -16
  189. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +1 -1
  190. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Pkgconfig.md +146 -0
  191. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +2 -2
  192. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +6 -6
  193. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/{AdvancedGuide.md → advanced.md} +260 -26
  194. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/{FAQ.md → faq.md} +62 -57
  195. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/{Primer.md → primer.md} +43 -9
  196. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/{Samples.md → samples.md} +0 -0
  197. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +53 -5
  198. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +1 -2
  199. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +30 -36
  200. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +8 -17
  201. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +140 -51
  202. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +2 -3
  203. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +4 -3
  204. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +126 -30
  205. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +6 -7
  206. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +8 -5
  207. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +6 -5
  208. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +4 -0
  209. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +13 -57
  210. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +1 -2
  211. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +98 -59
  212. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +34 -41
  213. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +3 -10
  214. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +9 -17
  215. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +8 -1
  216. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +232 -99
  217. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +3 -3
  218. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +17 -1
  219. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +17 -1
  220. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.sln +55 -0
  221. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.vcxproj +149 -0
  222. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest-md.vcxproj.filters +18 -0
  223. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.sln +55 -0
  224. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.vcxproj +149 -0
  225. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest.vcxproj.filters +18 -0
  226. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main-md.vcxproj +154 -0
  227. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main-md.vcxproj.filters +18 -0
  228. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main.vcxproj +162 -0
  229. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_main.vcxproj.filters +18 -0
  230. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test-md.vcxproj +199 -0
  231. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test-md.vcxproj.filters +26 -0
  232. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test.vcxproj +191 -0
  233. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_prod_test.vcxproj.filters +26 -0
  234. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest-md.vcxproj +188 -0
  235. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest-md.vcxproj.filters +18 -0
  236. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest.vcxproj +180 -0
  237. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/2010/gtest_unittest.vcxproj.filters +18 -0
  238. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +6 -2
  239. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +1 -1
  240. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +0 -4
  241. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +2 -1
  242. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +2 -1
  243. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +7 -6
  244. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +5 -1
  245. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +3 -3
  246. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +2 -1
  247. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +10 -22
  248. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +2 -1
  249. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +0 -3
  250. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +1 -1
  251. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +10 -10
  252. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +1 -1
  253. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +1 -1
  254. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +226 -32
  255. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +5 -7
  256. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +21 -29
  257. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +85 -67
  258. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +93 -8
  259. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +1 -9
  260. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +1 -0
  261. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +622 -164
  262. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +1 -1
  263. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/BUILD.bazel +396 -0
  264. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +12 -15
  265. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +2 -12
  266. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +1 -1
  267. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +6 -8
  268. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +1 -5
  269. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +84 -29
  270. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +1 -5
  271. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +11 -12
  272. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +165 -63
  273. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +1 -1
  274. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +1 -1
  275. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +1 -1
  276. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +13 -13
  277. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_assert_by_exception_test.cc +119 -0
  278. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +1 -3
  279. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +1 -2
  280. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +0 -2
  281. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +1 -1
  282. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +1 -2
  283. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +0 -8
  284. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +6 -4
  285. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +0 -2
  286. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +0 -3
  287. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +20 -18
  288. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +0 -2
  289. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +1 -1
  290. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_json_outfiles_test.py +162 -0
  291. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_json_output_unittest.py +611 -0
  292. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_json_test_utils.py +60 -0
  293. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +4 -4
  294. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +2 -2
  295. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +11 -7
  296. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +17 -12
  297. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +104 -66
  298. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +1 -1
  299. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +2 -2
  300. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +2 -19
  301. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +0 -6
  302. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +12 -14
  303. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_testbridge_test.py +65 -0
  304. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_testbridge_test_.cc +44 -0
  305. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +1 -1
  306. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +4 -5
  307. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +2 -2
  308. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +240 -149
  309. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +0 -1
  310. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +0 -1
  311. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +15 -7
  312. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +100 -30
  313. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +0 -2
  314. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +25 -23
  315. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +1 -1
  316. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +1 -1
  317. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +4 -4
  318. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +47 -0
  319. data/ext/rj_schema/rapidjson/travis-doxygen.sh +13 -6
  320. data/ext/rj_schema/rj_schema.cpp +161 -17
  321. data/lib/rj_schema.rb +1 -1
  322. metadata +63 -58
  323. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DevGuide.md +0 -132
  324. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CheatSheet.md +0 -525
  325. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CookBook.md +0 -3250
  326. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/Documentation.md +0 -11
  327. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/ForDummies.md +0 -439
  328. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +0 -624
  329. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CheatSheet.md +0 -534
  330. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CookBook.md +0 -3342
  331. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/Documentation.md +0 -12
  332. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/ForDummies.md +0 -439
  333. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +0 -628
  334. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CheatSheet.md +0 -556
  335. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CookBook.md +0 -3432
  336. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/Documentation.md +0 -12
  337. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/ForDummies.md +0 -439
  338. data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +0 -628
  339. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/DevGuide.md +0 -126
  340. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Documentation.md +0 -14
  341. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_AdvancedGuide.md +0 -2096
  342. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Documentation.md +0 -12
  343. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_FAQ.md +0 -886
  344. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Primer.md +0 -497
  345. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_PumpManual.md +0 -177
  346. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_XcodeGuide.md +0 -93
  347. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_AdvancedGuide.md +0 -2178
  348. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Documentation.md +0 -14
  349. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_FAQ.md +0 -1038
  350. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Primer.md +0 -501
  351. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_PumpManual.md +0 -177
  352. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Samples.md +0 -14
  353. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_XcodeGuide.md +0 -93
  354. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_AdvancedGuide.md +0 -2181
  355. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Documentation.md +0 -14
  356. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_FAQ.md +0 -1082
  357. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Primer.md +0 -501
  358. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_PumpManual.md +0 -177
  359. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Samples.md +0 -14
  360. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_XcodeGuide.md +0 -93
  361. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln +0 -45
  362. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj +0 -126
  363. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln +0 -45
  364. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj +0 -126
  365. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj +0 -129
  366. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj +0 -129
  367. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj +0 -164
  368. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj +0 -164
  369. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj +0 -147
  370. data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj +0 -147
  371. data/ext/rj_schema/rapidjson/thirdparty/gtest/travis.sh +0 -15
@@ -43,6 +43,18 @@
43
43
 
44
44
  namespace testing {
45
45
 
46
+ // Silence C4100 (unreferenced formal
47
+ // parameter) for MSVC
48
+ #ifdef _MSC_VER
49
+ # pragma warning(push)
50
+ # pragma warning(disable:4100)
51
+ #if (_MSC_VER == 1900)
52
+ // and silence C4800 (C4800: 'int *const ': forcing value
53
+ // to bool 'true' or 'false') for MSVC 14
54
+ # pragma warning(disable:4800)
55
+ #endif
56
+ #endif
57
+
46
58
  // Defines a matcher that matches an empty container. The container must
47
59
  // support both size() and empty(), which all STL-like containers provide.
48
60
  MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
@@ -53,6 +65,27 @@ MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
53
65
  return false;
54
66
  }
55
67
 
68
+ // Define a matcher that matches a value that evaluates in boolean
69
+ // context to true. Useful for types that define "explicit operator
70
+ // bool" operators and so can't be compared for equality with true
71
+ // and false.
72
+ MATCHER(IsTrue, negation ? "is false" : "is true") {
73
+ return static_cast<bool>(arg);
74
+ }
75
+
76
+ // Define a matcher that matches a value that evaluates in boolean
77
+ // context to false. Useful for types that define "explicit operator
78
+ // bool" operators and so can't be compared for equality with true
79
+ // and false.
80
+ MATCHER(IsFalse, negation ? "is true" : "is false") {
81
+ return !static_cast<bool>(arg);
82
+ }
83
+
84
+ #ifdef _MSC_VER
85
+ # pragma warning(pop)
86
+ #endif
87
+
88
+
56
89
  } // namespace testing
57
90
 
58
91
  #endif // GMOCK_GMOCK_MORE_MATCHERS_H_
@@ -65,11 +65,6 @@
65
65
  #include <sstream>
66
66
  #include <string>
67
67
  #include <vector>
68
-
69
- #if GTEST_HAS_EXCEPTIONS
70
- # include <stdexcept> // NOLINT
71
- #endif
72
-
73
68
  #include "gmock/gmock-actions.h"
74
69
  #include "gmock/gmock-cardinalities.h"
75
70
  #include "gmock/gmock-matchers.h"
@@ -77,6 +72,10 @@
77
72
  #include "gmock/internal/gmock-port.h"
78
73
  #include "gtest/gtest.h"
79
74
 
75
+ #if GTEST_HAS_EXCEPTIONS
76
+ # include <stdexcept> // NOLINT
77
+ #endif
78
+
80
79
  namespace testing {
81
80
 
82
81
  // An abstract handle of an expectation.
@@ -148,15 +147,13 @@ class GTEST_API_ UntypedFunctionMockerBase {
148
147
  // action fails.
149
148
  // L = *
150
149
  virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
151
- const void* untyped_args,
152
- const string& call_description) const = 0;
150
+ void* untyped_args, const std::string& call_description) const = 0;
153
151
 
154
152
  // Performs the given action with the given arguments and returns
155
153
  // the action's result.
156
154
  // L = *
157
155
  virtual UntypedActionResultHolderBase* UntypedPerformAction(
158
- const void* untyped_action,
159
- const void* untyped_args) const = 0;
156
+ const void* untyped_action, void* untyped_args) const = 0;
160
157
 
161
158
  // Writes a message that the call is uninteresting (i.e. neither
162
159
  // explicitly expected nor explicitly unexpected) to the given
@@ -211,9 +208,8 @@ class GTEST_API_ UntypedFunctionMockerBase {
211
208
  // arguments. This function can be safely called from multiple
212
209
  // threads concurrently. The caller is responsible for deleting the
213
210
  // result.
214
- UntypedActionResultHolderBase* UntypedInvokeWith(
215
- const void* untyped_args)
216
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
211
+ UntypedActionResultHolderBase* UntypedInvokeWith(void* untyped_args)
212
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex);
217
213
 
218
214
  protected:
219
215
  typedef std::vector<const void*> UntypedOnCallSpecs;
@@ -238,6 +234,14 @@ class GTEST_API_ UntypedFunctionMockerBase {
238
234
  UntypedOnCallSpecs untyped_on_call_specs_;
239
235
 
240
236
  // All expectations for this function mocker.
237
+ //
238
+ // It's undefined behavior to interleave expectations (EXPECT_CALLs
239
+ // or ON_CALLs) and mock function calls. Also, the order of
240
+ // expectations is important. Therefore it's a logic race condition
241
+ // to read/write untyped_expectations_ concurrently. In order for
242
+ // tools like tsan to catch concurrent read/write accesses to
243
+ // untyped_expectations, we deliberately leave accesses to it
244
+ // unprotected.
241
245
  UntypedExpectations untyped_expectations_;
242
246
  }; // class UntypedFunctionMockerBase
243
247
 
@@ -263,12 +267,14 @@ class UntypedOnCallSpecBase {
263
267
  };
264
268
 
265
269
  // Asserts that the ON_CALL() statement has a certain property.
266
- void AssertSpecProperty(bool property, const string& failure_message) const {
270
+ void AssertSpecProperty(bool property,
271
+ const std::string& failure_message) const {
267
272
  Assert(property, file_, line_, failure_message);
268
273
  }
269
274
 
270
275
  // Expects that the ON_CALL() statement has a certain property.
271
- void ExpectSpecProperty(bool property, const string& failure_message) const {
276
+ void ExpectSpecProperty(bool property,
277
+ const std::string& failure_message) const {
272
278
  Expect(property, file_, line_, failure_message);
273
279
  }
274
280
 
@@ -362,7 +368,6 @@ enum CallReaction {
362
368
  kAllow,
363
369
  kWarn,
364
370
  kFail,
365
- kDefault = kWarn // By default, warn about uninteresting calls.
366
371
  };
367
372
 
368
373
  } // namespace internal
@@ -690,7 +695,7 @@ GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
690
695
  class GTEST_API_ ExpectationBase {
691
696
  public:
692
697
  // source_text is the EXPECT_CALL(...) source that created this Expectation.
693
- ExpectationBase(const char* file, int line, const string& source_text);
698
+ ExpectationBase(const char* file, int line, const std::string& source_text);
694
699
 
695
700
  virtual ~ExpectationBase();
696
701
 
@@ -738,12 +743,14 @@ class GTEST_API_ ExpectationBase {
738
743
  virtual Expectation GetHandle() = 0;
739
744
 
740
745
  // Asserts that the EXPECT_CALL() statement has the given property.
741
- void AssertSpecProperty(bool property, const string& failure_message) const {
746
+ void AssertSpecProperty(bool property,
747
+ const std::string& failure_message) const {
742
748
  Assert(property, file_, line_, failure_message);
743
749
  }
744
750
 
745
751
  // Expects that the EXPECT_CALL() statement has the given property.
746
- void ExpectSpecProperty(bool property, const string& failure_message) const {
752
+ void ExpectSpecProperty(bool property,
753
+ const std::string& failure_message) const {
747
754
  Expect(property, file_, line_, failure_message);
748
755
  }
749
756
 
@@ -845,7 +852,7 @@ class GTEST_API_ ExpectationBase {
845
852
  // an EXPECT_CALL() statement finishes.
846
853
  const char* file_; // The file that contains the expectation.
847
854
  int line_; // The line number of the expectation.
848
- const string source_text_; // The EXPECT_CALL(...) source text.
855
+ const std::string source_text_; // The EXPECT_CALL(...) source text.
849
856
  // True iff the cardinality is specified explicitly.
850
857
  bool cardinality_specified_;
851
858
  Cardinality cardinality_; // The cardinality of the expectation.
@@ -880,8 +887,8 @@ class TypedExpectation : public ExpectationBase {
880
887
  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
881
888
  typedef typename Function<F>::Result Result;
882
889
 
883
- TypedExpectation(FunctionMockerBase<F>* owner,
884
- const char* a_file, int a_line, const string& a_source_text,
890
+ TypedExpectation(FunctionMockerBase<F>* owner, const char* a_file, int a_line,
891
+ const std::string& a_source_text,
885
892
  const ArgumentMatcherTuple& m)
886
893
  : ExpectationBase(a_file, a_line, a_source_text),
887
894
  owner_(owner),
@@ -1240,7 +1247,7 @@ class TypedExpectation : public ExpectationBase {
1240
1247
  // Logs a message including file and line number information.
1241
1248
  GTEST_API_ void LogWithLocation(testing::internal::LogSeverity severity,
1242
1249
  const char* file, int line,
1243
- const string& message);
1250
+ const std::string& message);
1244
1251
 
1245
1252
  template <typename F>
1246
1253
  class MockSpec {
@@ -1251,15 +1258,16 @@ class MockSpec {
1251
1258
 
1252
1259
  // Constructs a MockSpec object, given the function mocker object
1253
1260
  // that the spec is associated with.
1254
- explicit MockSpec(internal::FunctionMockerBase<F>* function_mocker)
1255
- : function_mocker_(function_mocker) {}
1261
+ MockSpec(internal::FunctionMockerBase<F>* function_mocker,
1262
+ const ArgumentMatcherTuple& matchers)
1263
+ : function_mocker_(function_mocker), matchers_(matchers) {}
1256
1264
 
1257
1265
  // Adds a new default action spec to the function mocker and returns
1258
1266
  // the newly created spec.
1259
1267
  internal::OnCallSpec<F>& InternalDefaultActionSetAt(
1260
1268
  const char* file, int line, const char* obj, const char* call) {
1261
1269
  LogWithLocation(internal::kInfo, file, line,
1262
- string("ON_CALL(") + obj + ", " + call + ") invoked");
1270
+ std::string("ON_CALL(") + obj + ", " + call + ") invoked");
1263
1271
  return function_mocker_->AddNewOnCallSpec(file, line, matchers_);
1264
1272
  }
1265
1273
 
@@ -1267,20 +1275,24 @@ class MockSpec {
1267
1275
  // the newly created spec.
1268
1276
  internal::TypedExpectation<F>& InternalExpectedAt(
1269
1277
  const char* file, int line, const char* obj, const char* call) {
1270
- const string source_text(string("EXPECT_CALL(") + obj + ", " + call + ")");
1278
+ const std::string source_text(std::string("EXPECT_CALL(") + obj + ", " +
1279
+ call + ")");
1271
1280
  LogWithLocation(internal::kInfo, file, line, source_text + " invoked");
1272
1281
  return function_mocker_->AddNewExpectation(
1273
1282
  file, line, source_text, matchers_);
1274
1283
  }
1275
1284
 
1285
+ // This operator overload is used to swallow the superfluous parameter list
1286
+ // introduced by the ON/EXPECT_CALL macros. See the macro comments for more
1287
+ // explanation.
1288
+ MockSpec<F>& operator()(const internal::WithoutMatchers&, void* const) {
1289
+ return *this;
1290
+ }
1291
+
1276
1292
  private:
1277
1293
  template <typename Function>
1278
1294
  friend class internal::FunctionMocker;
1279
1295
 
1280
- void SetMatchers(const ArgumentMatcherTuple& matchers) {
1281
- matchers_ = matchers;
1282
- }
1283
-
1284
1296
  // The function mocker that owns this spec.
1285
1297
  internal::FunctionMockerBase<F>* const function_mocker_;
1286
1298
  // The argument matchers specified in the spec.
@@ -1388,19 +1400,20 @@ class ActionResultHolder : public UntypedActionResultHolderBase {
1388
1400
  template <typename F>
1389
1401
  static ActionResultHolder* PerformDefaultAction(
1390
1402
  const FunctionMockerBase<F>* func_mocker,
1391
- const typename Function<F>::ArgumentTuple& args,
1392
- const string& call_description) {
1393
- return new ActionResultHolder(Wrapper(
1394
- func_mocker->PerformDefaultAction(args, call_description)));
1403
+ typename RvalueRef<typename Function<F>::ArgumentTuple>::type args,
1404
+ const std::string& call_description) {
1405
+ return new ActionResultHolder(Wrapper(func_mocker->PerformDefaultAction(
1406
+ internal::move(args), call_description)));
1395
1407
  }
1396
1408
 
1397
1409
  // Performs the given action and returns the result in a new-ed
1398
1410
  // ActionResultHolder.
1399
1411
  template <typename F>
1400
- static ActionResultHolder*
1401
- PerformAction(const Action<F>& action,
1402
- const typename Function<F>::ArgumentTuple& args) {
1403
- return new ActionResultHolder(Wrapper(action.Perform(args)));
1412
+ static ActionResultHolder* PerformAction(
1413
+ const Action<F>& action,
1414
+ typename RvalueRef<typename Function<F>::ArgumentTuple>::type args) {
1415
+ return new ActionResultHolder(
1416
+ Wrapper(action.Perform(internal::move(args))));
1404
1417
  }
1405
1418
 
1406
1419
  private:
@@ -1428,9 +1441,9 @@ class ActionResultHolder<void> : public UntypedActionResultHolderBase {
1428
1441
  template <typename F>
1429
1442
  static ActionResultHolder* PerformDefaultAction(
1430
1443
  const FunctionMockerBase<F>* func_mocker,
1431
- const typename Function<F>::ArgumentTuple& args,
1432
- const string& call_description) {
1433
- func_mocker->PerformDefaultAction(args, call_description);
1444
+ typename RvalueRef<typename Function<F>::ArgumentTuple>::type args,
1445
+ const std::string& call_description) {
1446
+ func_mocker->PerformDefaultAction(internal::move(args), call_description);
1434
1447
  return new ActionResultHolder;
1435
1448
  }
1436
1449
 
@@ -1439,8 +1452,8 @@ class ActionResultHolder<void> : public UntypedActionResultHolderBase {
1439
1452
  template <typename F>
1440
1453
  static ActionResultHolder* PerformAction(
1441
1454
  const Action<F>& action,
1442
- const typename Function<F>::ArgumentTuple& args) {
1443
- action.Perform(args);
1455
+ typename RvalueRef<typename Function<F>::ArgumentTuple>::type args) {
1456
+ action.Perform(internal::move(args));
1444
1457
  return new ActionResultHolder;
1445
1458
  }
1446
1459
 
@@ -1459,7 +1472,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1459
1472
  typedef typename Function<F>::ArgumentTuple ArgumentTuple;
1460
1473
  typedef typename Function<F>::ArgumentMatcherTuple ArgumentMatcherTuple;
1461
1474
 
1462
- FunctionMockerBase() : current_spec_(this) {}
1475
+ FunctionMockerBase() {}
1463
1476
 
1464
1477
  // The destructor verifies that all expectations on this mock
1465
1478
  // function have been satisfied. If not, it will report Google Test
@@ -1495,14 +1508,16 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1495
1508
  // mutable state of this object, and thus can be called concurrently
1496
1509
  // without locking.
1497
1510
  // L = *
1498
- Result PerformDefaultAction(const ArgumentTuple& args,
1499
- const string& call_description) const {
1511
+ Result PerformDefaultAction(
1512
+ typename RvalueRef<typename Function<F>::ArgumentTuple>::type args,
1513
+ const std::string& call_description) const {
1500
1514
  const OnCallSpec<F>* const spec =
1501
1515
  this->FindOnCallSpec(args);
1502
1516
  if (spec != NULL) {
1503
- return spec->GetAction().Perform(args);
1517
+ return spec->GetAction().Perform(internal::move(args));
1504
1518
  }
1505
- const string message = call_description +
1519
+ const std::string message =
1520
+ call_description +
1506
1521
  "\n The mock function has no default action "
1507
1522
  "set, and its return type has no default value set.";
1508
1523
  #if GTEST_HAS_EXCEPTIONS
@@ -1521,11 +1536,11 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1521
1536
  // action fails. The caller is responsible for deleting the result.
1522
1537
  // L = *
1523
1538
  virtual UntypedActionResultHolderBase* UntypedPerformDefaultAction(
1524
- const void* untyped_args, // must point to an ArgumentTuple
1525
- const string& call_description) const {
1526
- const ArgumentTuple& args =
1527
- *static_cast<const ArgumentTuple*>(untyped_args);
1528
- return ResultHolder::PerformDefaultAction(this, args, call_description);
1539
+ void* untyped_args, // must point to an ArgumentTuple
1540
+ const std::string& call_description) const {
1541
+ ArgumentTuple* args = static_cast<ArgumentTuple*>(untyped_args);
1542
+ return ResultHolder::PerformDefaultAction(this, internal::move(*args),
1543
+ call_description);
1529
1544
  }
1530
1545
 
1531
1546
  // Performs the given action with the given arguments and returns
@@ -1533,13 +1548,12 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1533
1548
  // result.
1534
1549
  // L = *
1535
1550
  virtual UntypedActionResultHolderBase* UntypedPerformAction(
1536
- const void* untyped_action, const void* untyped_args) const {
1551
+ const void* untyped_action, void* untyped_args) const {
1537
1552
  // Make a copy of the action before performing it, in case the
1538
1553
  // action deletes the mock object (and thus deletes itself).
1539
1554
  const Action<F> action = *static_cast<const Action<F>*>(untyped_action);
1540
- const ArgumentTuple& args =
1541
- *static_cast<const ArgumentTuple*>(untyped_args);
1542
- return ResultHolder::PerformAction(action, args);
1555
+ ArgumentTuple* args = static_cast<ArgumentTuple*>(untyped_args);
1556
+ return ResultHolder::PerformAction(action, internal::move(*args));
1543
1557
  }
1544
1558
 
1545
1559
  // Implements UntypedFunctionMockerBase::ClearDefaultActionsLocked():
@@ -1579,10 +1593,14 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1579
1593
  // Returns the result of invoking this mock function with the given
1580
1594
  // arguments. This function can be safely called from multiple
1581
1595
  // threads concurrently.
1582
- Result InvokeWith(const ArgumentTuple& args)
1583
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1596
+ Result InvokeWith(
1597
+ typename RvalueRef<typename Function<F>::ArgumentTuple>::type args)
1598
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1599
+ // const_cast is required since in C++98 we still pass ArgumentTuple around
1600
+ // by const& instead of rvalue reference.
1601
+ void* untyped_args = const_cast<void*>(static_cast<const void*>(&args));
1584
1602
  scoped_ptr<ResultHolder> holder(
1585
- DownCast_<ResultHolder*>(this->UntypedInvokeWith(&args)));
1603
+ DownCast_<ResultHolder*>(this->UntypedInvokeWith(untyped_args)));
1586
1604
  return holder->Unwrap();
1587
1605
  }
1588
1606
 
@@ -1598,16 +1616,16 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1598
1616
  }
1599
1617
 
1600
1618
  // Adds and returns an expectation spec for this mock function.
1601
- TypedExpectation<F>& AddNewExpectation(
1602
- const char* file,
1603
- int line,
1604
- const string& source_text,
1605
- const ArgumentMatcherTuple& m)
1606
- GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1619
+ TypedExpectation<F>& AddNewExpectation(const char* file, int line,
1620
+ const std::string& source_text,
1621
+ const ArgumentMatcherTuple& m)
1622
+ GTEST_LOCK_EXCLUDED_(g_gmock_mutex) {
1607
1623
  Mock::RegisterUseByOnCallOrExpectCall(MockObject(), file, line);
1608
1624
  TypedExpectation<F>* const expectation =
1609
1625
  new TypedExpectation<F>(this, file, line, source_text, m);
1610
1626
  const linked_ptr<ExpectationBase> untyped_expectation(expectation);
1627
+ // See the definition of untyped_expectations_ for why access to
1628
+ // it is unprotected here.
1611
1629
  untyped_expectations_.push_back(untyped_expectation);
1612
1630
 
1613
1631
  // Adds this expectation into the implicit sequence if there is one.
@@ -1619,10 +1637,6 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1619
1637
  return *expectation;
1620
1638
  }
1621
1639
 
1622
- // The current spec (either default action spec or expectation spec)
1623
- // being described on this function mocker.
1624
- MockSpec<F>& current_spec() { return current_spec_; }
1625
-
1626
1640
  private:
1627
1641
  template <typename Func> friend class TypedExpectation;
1628
1642
 
@@ -1715,6 +1729,8 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1715
1729
  const ArgumentTuple& args) const
1716
1730
  GTEST_EXCLUSIVE_LOCK_REQUIRED_(g_gmock_mutex) {
1717
1731
  g_gmock_mutex.AssertHeld();
1732
+ // See the definition of untyped_expectations_ for why access to
1733
+ // it is unprotected here.
1718
1734
  for (typename UntypedExpectations::const_reverse_iterator it =
1719
1735
  untyped_expectations_.rbegin();
1720
1736
  it != untyped_expectations_.rend(); ++it) {
@@ -1765,14 +1781,10 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1765
1781
  }
1766
1782
  }
1767
1783
 
1768
- // The current spec (either default action spec or expectation spec)
1769
- // being described on this function mocker.
1770
- MockSpec<F> current_spec_;
1771
-
1772
1784
  // There is no generally useful and implementable semantics of
1773
1785
  // copying a mock object, so copying a mock is usually a user error.
1774
1786
  // Thus we disallow copying function mockers. If the user really
1775
- // wants to copy a mock object, he should implement his own copy
1787
+ // wants to copy a mock object, they should implement their own copy
1776
1788
  // operation, for example:
1777
1789
  //
1778
1790
  // class MockFoo : public Foo {
@@ -1796,7 +1808,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
1796
1808
 
1797
1809
  // Reports an uninteresting call (whose description is in msg) in the
1798
1810
  // manner specified by 'reaction'.
1799
- void ReportUninterestingCall(CallReaction reaction, const string& msg);
1811
+ void ReportUninterestingCall(CallReaction reaction, const std::string& msg);
1800
1812
 
1801
1813
  } // namespace internal
1802
1814
 
@@ -1831,17 +1843,76 @@ inline Expectation::Expectation(internal::ExpectationBase& exp) // NOLINT
1831
1843
 
1832
1844
  } // namespace testing
1833
1845
 
1834
- // A separate macro is required to avoid compile errors when the name
1835
- // of the method used in call is a result of macro expansion.
1836
- // See CompilesWithMethodNameExpandedFromMacro tests in
1837
- // internal/gmock-spec-builders_test.cc for more details.
1838
- #define GMOCK_ON_CALL_IMPL_(obj, call) \
1839
- ((obj).gmock_##call).InternalDefaultActionSetAt(__FILE__, __LINE__, \
1840
- #obj, #call)
1841
- #define ON_CALL(obj, call) GMOCK_ON_CALL_IMPL_(obj, call)
1842
-
1843
- #define GMOCK_EXPECT_CALL_IMPL_(obj, call) \
1844
- ((obj).gmock_##call).InternalExpectedAt(__FILE__, __LINE__, #obj, #call)
1845
- #define EXPECT_CALL(obj, call) GMOCK_EXPECT_CALL_IMPL_(obj, call)
1846
+ // Implementation for ON_CALL and EXPECT_CALL macros. A separate macro is
1847
+ // required to avoid compile errors when the name of the method used in call is
1848
+ // a result of macro expansion. See CompilesWithMethodNameExpandedFromMacro
1849
+ // tests in internal/gmock-spec-builders_test.cc for more details.
1850
+ //
1851
+ // This macro supports statements both with and without parameter matchers. If
1852
+ // the parameter list is omitted, gMock will accept any parameters, which allows
1853
+ // tests to be written that don't need to encode the number of method
1854
+ // parameter. This technique may only be used for non-overloaded methods.
1855
+ //
1856
+ // // These are the same:
1857
+ // ON_CALL(mock, NoArgsMethod()).WillByDefault();
1858
+ // ON_CALL(mock, NoArgsMethod).WillByDefault(…);
1859
+ //
1860
+ // // As are these:
1861
+ // ON_CALL(mock, TwoArgsMethod(_, _)).WillByDefault(…);
1862
+ // ON_CALL(mock, TwoArgsMethod).WillByDefault(…);
1863
+ //
1864
+ // // Can also specify args if you want, of course:
1865
+ // ON_CALL(mock, TwoArgsMethod(_, 45)).WillByDefault(…);
1866
+ //
1867
+ // // Overloads work as long as you specify parameters:
1868
+ // ON_CALL(mock, OverloadedMethod(_)).WillByDefault(…);
1869
+ // ON_CALL(mock, OverloadedMethod(_, _)).WillByDefault(…);
1870
+ //
1871
+ // // Oops! Which overload did you want?
1872
+ // ON_CALL(mock, OverloadedMethod).WillByDefault(…);
1873
+ // => ERROR: call to member function 'gmock_OverloadedMethod' is ambiguous
1874
+ //
1875
+ // How this works: The mock class uses two overloads of the gmock_Method
1876
+ // expectation setter method plus an operator() overload on the MockSpec object.
1877
+ // In the matcher list form, the macro expands to:
1878
+ //
1879
+ // // This statement:
1880
+ // ON_CALL(mock, TwoArgsMethod(_, 45))…
1881
+ //
1882
+ // // …expands to:
1883
+ // mock.gmock_TwoArgsMethod(_, 45)(WithoutMatchers(), nullptr)…
1884
+ // |-------------v---------------||------------v-------------|
1885
+ // invokes first overload swallowed by operator()
1886
+ //
1887
+ // // …which is essentially:
1888
+ // mock.gmock_TwoArgsMethod(_, 45)…
1889
+ //
1890
+ // Whereas the form without a matcher list:
1891
+ //
1892
+ // // This statement:
1893
+ // ON_CALL(mock, TwoArgsMethod)…
1894
+ //
1895
+ // // …expands to:
1896
+ // mock.gmock_TwoArgsMethod(WithoutMatchers(), nullptr)…
1897
+ // |-----------------------v--------------------------|
1898
+ // invokes second overload
1899
+ //
1900
+ // // …which is essentially:
1901
+ // mock.gmock_TwoArgsMethod(_, _)…
1902
+ //
1903
+ // The WithoutMatchers() argument is used to disambiguate overloads and to
1904
+ // block the caller from accidentally invoking the second overload directly. The
1905
+ // second argument is an internal type derived from the method signature. The
1906
+ // failure to disambiguate two overloads of this method in the ON_CALL statement
1907
+ // is how we block callers from setting expectations on overloaded methods.
1908
+ #define GMOCK_ON_CALL_IMPL_(mock_expr, Setter, call) \
1909
+ ((mock_expr).gmock_##call)(::testing::internal::GetWithoutMatchers(), NULL) \
1910
+ .Setter(__FILE__, __LINE__, #mock_expr, #call)
1911
+
1912
+ #define ON_CALL(obj, call) \
1913
+ GMOCK_ON_CALL_IMPL_(obj, InternalDefaultActionSetAt, call)
1914
+
1915
+ #define EXPECT_CALL(obj, call) \
1916
+ GMOCK_ON_CALL_IMPL_(obj, InternalExpectedAt, call)
1846
1917
 
1847
1918
  #endif // GMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_