rj_schema 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Rakefile +4 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/CMakeLists.txt +16 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/README.md +141 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CHANGES +126 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CMakeLists.txt +202 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/CONTRIBUTORS +40 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/LICENSE +28 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/Makefile.am +224 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/README.md +333 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/configure.ac +146 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CheatSheet.md +562 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/CookBook.md +3675 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DesignDoc.md +280 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/DevGuide.md +132 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/Documentation.md +12 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/ForDummies.md +439 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/FrequentlyAskedQuestions.md +628 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/KnownIssues.md +19 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CheatSheet.md +525 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/CookBook.md +3250 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/Documentation.md +11 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/ForDummies.md +439 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_5/FrequentlyAskedQuestions.md +624 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CheatSheet.md +534 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/CookBook.md +3342 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/Documentation.md +12 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/ForDummies.md +439 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_6/FrequentlyAskedQuestions.md +628 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CheatSheet.md +556 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/CookBook.md +3432 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/Documentation.md +12 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/ForDummies.md +439 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/docs/v1_7/FrequentlyAskedQuestions.md +628 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-actions.h +1205 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-cardinalities.h +147 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h +2377 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-actions.h.pump +794 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h +1095 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +291 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h +2179 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-matchers.h.pump +672 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h +397 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-generated-nice-strict.h.pump +161 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-matchers.h +4399 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-actions.h +246 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-more-matchers.h +58 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock-spec-builders.h +1847 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/gmock.h +94 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +8 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +10 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-matchers.h +39 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/custom/gmock-port.h +46 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h +279 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h.pump +136 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-internal-utils.h +511 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/include/gmock/internal/gmock-port.h +91 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/make/Makefile +101 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln +32 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj +191 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops +15 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj +187 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj +201 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln +32 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj +82 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props +19 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj +88 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj +101 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.sln +32 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock.vcxproj +84 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_config.props +19 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_main.vcxproj +90 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/msvc/2015/gmock_test.vcxproj +103 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/fuse_gmock_files.py +240 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/LICENSE +203 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README +35 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/README.cppclean +115 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/__init__.py +0 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/ast.py +1733 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class.py +227 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/gmock_class_test.py +448 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/keywords.py +59 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/tokenize.py +287 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/cpp/utils.py +41 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/generator/gmock_gen.py +31 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock-config.in +303 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/gmock_doctor.py +640 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload.py +1387 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/scripts/upload_gmock.py +78 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-all.cc +47 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-cardinalities.cc +156 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-internal-utils.cc +174 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-matchers.cc +498 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock-spec-builders.cc +823 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock.cc +183 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/src/gmock_main.cc +54 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-actions_test.cc +1411 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-cardinalities_test.cc +428 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-actions_test.cc +1228 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-function-mockers_test.cc +622 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc +127 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-matchers_test.cc +1286 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-internal-utils_test.cc +699 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-matchers_test.cc +5648 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-more-actions_test.cc +708 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-nice-strict_test.cc +424 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-port_test.cc +43 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock-spec-builders_test.cc +2644 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_all_test.cc +51 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_ex_test.cc +81 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test.py +108 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_leak_test_.cc +100 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link2_test.cc +40 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.cc +40 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_link_test.h +669 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test.py +180 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_.cc +291 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_output_test_golden.txt +310 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_stress_test.cc +322 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test.cc +220 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googlemock/test/gmock_test_utils.py +112 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CHANGES +157 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CMakeLists.txt +286 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/CONTRIBUTORS +37 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/LICENSE +28 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/Makefile.am +310 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/README.md +280 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/cmake/internal_utils.cmake +242 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj +138 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj +54 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc +38 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc +40 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj +82 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj +88 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/configure.ac +68 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/AdvancedGuide.md +2182 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/DevGuide.md +126 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Documentation.md +14 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/FAQ.md +1087 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Primer.md +502 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/PumpManual.md +177 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/Samples.md +14 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_AdvancedGuide.md +2096 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Documentation.md +12 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_FAQ.md +886 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_Primer.md +497 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_PumpManual.md +177 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_5_XcodeGuide.md +93 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_AdvancedGuide.md +2178 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Documentation.md +14 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_FAQ.md +1038 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Primer.md +501 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_PumpManual.md +177 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_Samples.md +14 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_6_XcodeGuide.md +93 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_AdvancedGuide.md +2181 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Documentation.md +14 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_FAQ.md +1082 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Primer.md +501 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_PumpManual.md +177 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_Samples.md +14 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/V1_7_XcodeGuide.md +93 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/docs/XcodeGuide.md +93 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-death-test.h +294 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-message.h +250 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h +1444 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-param-test.h.pump +510 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-printers.h +993 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-spi.h +232 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-test-part.h +179 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest-typed-test.h +263 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h +2236 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_pred_impl.h +358 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest_prod.h +58 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/custom/gtest.h +41 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-filepath.h +206 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h +1238 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-param-util.h +731 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h +2554 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-string.h +167 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/acx_pthread.m4 +363 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/m4/gtest.m4 +74 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/make/Makefile +82 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln +45 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj +126 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln +45 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj +126 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj +129 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj +129 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj +164 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj +164 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj +147 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj +147 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/prime_tables.h +123 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.cc +68 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1.h +43 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample10_unittest.cc +144 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample1_unittest.cc +153 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.cc +56 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2.h +85 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample2_unittest.cc +109 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3-inl.h +172 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample3_unittest.cc +151 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.cc +46 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4.h +53 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample4_unittest.cc +45 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample5_unittest.cc +199 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample6_unittest.cc +224 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample7_unittest.cc +130 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample8_unittest.cc +173 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/samples/sample9_unittest.cc +160 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/common.py +83 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/fuse_gtest_files.py +253 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gen_gtest_pred_impl.py +730 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/gtest-config.in +274 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/pump.py +855 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/release_docs.py +158 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/test/Makefile +59 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload.py +1387 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/scripts/upload_gtest.py +78 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-all.cc +48 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-death-test.cc +1342 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-filepath.cc +387 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-internal-inl.h +1183 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-port.cc +1259 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-printers.cc +373 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-test-part.cc +110 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest-typed-test.cc +118 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest.cc +5388 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/src/gtest_main.cc +38 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_ex_test.cc +93 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-death-test_test.cc +1427 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-filepath_test.cc +662 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-linked_ptr_test.cc +154 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-listener_test.cc +311 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-message_test.cc +159 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-options_test.cc +215 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test2_test.cc +65 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.cc +1055 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-param-test_test.h +57 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-port_test.cc +1304 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-printers_test.cc +1635 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-test-part_test.cc +208 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-tuple_test.cc +320 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test2_test.cc +45 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.cc +380 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-typed-test_test.h +66 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest-unittest-api_test.cc +341 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_all_test.cc +47 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest.py +212 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_break_on_failure_unittest_.cc +88 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test.py +237 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_catch_exceptions_test_.cc +311 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test.py +130 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_color_test_.cc +71 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test.py +117 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_env_var_test_.cc +126 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_environment_test.cc +192 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest.py +636 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_filter_unittest_.cc +140 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test.py +172 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_help_test_.cc +46 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest.py +207 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_list_tests_unittest_.cc +157 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_main_unittest.cc +45 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_no_test_unittest.cc +56 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test.py +340 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_.cc +1062 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_output_test_golden_lin.txt +743 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_premature_exit_test.cc +127 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_prod_test.cc +57 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_repeat_test.cc +253 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test.py +325 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_shuffle_test_.cc +103 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_sole_header_test.cc +57 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_stress_test.cc +256 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_test_utils.py +320 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_ex_test.cc +92 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test.py +171 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_throw_on_failure_test_.cc +72 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test.py +70 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_uninitialized_test_.cc +43 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_unittest.cc +7706 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile1_test_.cc +49 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfile2_test_.cc +49 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_outfiles_test.py +132 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest.py +308 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_output_unittest_.cc +181 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/gtest_xml_test_utils.py +194 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.cc +36 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/test/production.h +55 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/DebugProject.xcconfig +30 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/FrameworkTarget.xcconfig +17 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/General.xcconfig +41 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/ReleaseProject.xcconfig +32 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/StaticLibraryTarget.xcconfig +18 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Config/TestTarget.xcconfig +8 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Resources/Info.plist +30 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/Info.plist +28 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj +457 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/runtests.sh +62 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.cc +63 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget.h +59 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Samples/FrameworkSample/widget_test.cc +68 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/runtests.sh +65 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/Scripts/versiongenerate.py +100 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/googletest/xcode/gtest.xcodeproj/project.pbxproj +1135 -0
- data/ext/rj_schema/rapidjson/thirdparty/gtest/travis.sh +15 -0
- data/ext/rj_schema/rj_schema.cpp +64 -41
- data/lib/rj_schema.rb +1 -1
- metadata +378 -5
@@ -0,0 +1,534 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
# Defining a Mock Class #
|
4
|
+
|
5
|
+
## Mocking a Normal Class ##
|
6
|
+
|
7
|
+
Given
|
8
|
+
```
|
9
|
+
class Foo {
|
10
|
+
...
|
11
|
+
virtual ~Foo();
|
12
|
+
virtual int GetSize() const = 0;
|
13
|
+
virtual string Describe(const char* name) = 0;
|
14
|
+
virtual string Describe(int type) = 0;
|
15
|
+
virtual bool Process(Bar elem, int count) = 0;
|
16
|
+
};
|
17
|
+
```
|
18
|
+
(note that `~Foo()` **must** be virtual) we can define its mock as
|
19
|
+
```
|
20
|
+
#include "gmock/gmock.h"
|
21
|
+
|
22
|
+
class MockFoo : public Foo {
|
23
|
+
MOCK_CONST_METHOD0(GetSize, int());
|
24
|
+
MOCK_METHOD1(Describe, string(const char* name));
|
25
|
+
MOCK_METHOD1(Describe, string(int type));
|
26
|
+
MOCK_METHOD2(Process, bool(Bar elem, int count));
|
27
|
+
};
|
28
|
+
```
|
29
|
+
|
30
|
+
To create a "nice" mock object which ignores all uninteresting calls,
|
31
|
+
or a "strict" mock object, which treats them as failures:
|
32
|
+
```
|
33
|
+
NiceMock<MockFoo> nice_foo; // The type is a subclass of MockFoo.
|
34
|
+
StrictMock<MockFoo> strict_foo; // The type is a subclass of MockFoo.
|
35
|
+
```
|
36
|
+
|
37
|
+
## Mocking a Class Template ##
|
38
|
+
|
39
|
+
To mock
|
40
|
+
```
|
41
|
+
template <typename Elem>
|
42
|
+
class StackInterface {
|
43
|
+
public:
|
44
|
+
...
|
45
|
+
virtual ~StackInterface();
|
46
|
+
virtual int GetSize() const = 0;
|
47
|
+
virtual void Push(const Elem& x) = 0;
|
48
|
+
};
|
49
|
+
```
|
50
|
+
(note that `~StackInterface()` **must** be virtual) just append `_T` to the `MOCK_*` macros:
|
51
|
+
```
|
52
|
+
template <typename Elem>
|
53
|
+
class MockStack : public StackInterface<Elem> {
|
54
|
+
public:
|
55
|
+
...
|
56
|
+
MOCK_CONST_METHOD0_T(GetSize, int());
|
57
|
+
MOCK_METHOD1_T(Push, void(const Elem& x));
|
58
|
+
};
|
59
|
+
```
|
60
|
+
|
61
|
+
## Specifying Calling Conventions for Mock Functions ##
|
62
|
+
|
63
|
+
If your mock function doesn't use the default calling convention, you
|
64
|
+
can specify it by appending `_WITH_CALLTYPE` to any of the macros
|
65
|
+
described in the previous two sections and supplying the calling
|
66
|
+
convention as the first argument to the macro. For example,
|
67
|
+
```
|
68
|
+
MOCK_METHOD_1_WITH_CALLTYPE(STDMETHODCALLTYPE, Foo, bool(int n));
|
69
|
+
MOCK_CONST_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, Bar, int(double x, double y));
|
70
|
+
```
|
71
|
+
where `STDMETHODCALLTYPE` is defined by `<objbase.h>` on Windows.
|
72
|
+
|
73
|
+
# Using Mocks in Tests #
|
74
|
+
|
75
|
+
The typical flow is:
|
76
|
+
1. Import the Google Mock names you need to use. All Google Mock names are in the `testing` namespace unless they are macros or otherwise noted.
|
77
|
+
1. Create the mock objects.
|
78
|
+
1. Optionally, set the default actions of the mock objects.
|
79
|
+
1. Set your expectations on the mock objects (How will they be called? What wil they do?).
|
80
|
+
1. Exercise code that uses the mock objects; if necessary, check the result using [Google Test](http://code.google.com/p/googletest/) assertions.
|
81
|
+
1. When a mock objects is destructed, Google Mock automatically verifies that all expectations on it have been satisfied.
|
82
|
+
|
83
|
+
Here is an example:
|
84
|
+
```
|
85
|
+
using ::testing::Return; // #1
|
86
|
+
|
87
|
+
TEST(BarTest, DoesThis) {
|
88
|
+
MockFoo foo; // #2
|
89
|
+
|
90
|
+
ON_CALL(foo, GetSize()) // #3
|
91
|
+
.WillByDefault(Return(1));
|
92
|
+
// ... other default actions ...
|
93
|
+
|
94
|
+
EXPECT_CALL(foo, Describe(5)) // #4
|
95
|
+
.Times(3)
|
96
|
+
.WillRepeatedly(Return("Category 5"));
|
97
|
+
// ... other expectations ...
|
98
|
+
|
99
|
+
EXPECT_EQ("good", MyProductionFunction(&foo)); // #5
|
100
|
+
} // #6
|
101
|
+
```
|
102
|
+
|
103
|
+
# Setting Default Actions #
|
104
|
+
|
105
|
+
Google Mock has a **built-in default action** for any function that
|
106
|
+
returns `void`, `bool`, a numeric value, or a pointer.
|
107
|
+
|
108
|
+
To customize the default action for functions with return type `T` globally:
|
109
|
+
```
|
110
|
+
using ::testing::DefaultValue;
|
111
|
+
|
112
|
+
DefaultValue<T>::Set(value); // Sets the default value to be returned.
|
113
|
+
// ... use the mocks ...
|
114
|
+
DefaultValue<T>::Clear(); // Resets the default value.
|
115
|
+
```
|
116
|
+
|
117
|
+
To customize the default action for a particular method, use `ON_CALL()`:
|
118
|
+
```
|
119
|
+
ON_CALL(mock_object, method(matchers))
|
120
|
+
.With(multi_argument_matcher) ?
|
121
|
+
.WillByDefault(action);
|
122
|
+
```
|
123
|
+
|
124
|
+
# Setting Expectations #
|
125
|
+
|
126
|
+
`EXPECT_CALL()` sets **expectations** on a mock method (How will it be
|
127
|
+
called? What will it do?):
|
128
|
+
```
|
129
|
+
EXPECT_CALL(mock_object, method(matchers))
|
130
|
+
.With(multi_argument_matcher) ?
|
131
|
+
.Times(cardinality) ?
|
132
|
+
.InSequence(sequences) *
|
133
|
+
.After(expectations) *
|
134
|
+
.WillOnce(action) *
|
135
|
+
.WillRepeatedly(action) ?
|
136
|
+
.RetiresOnSaturation(); ?
|
137
|
+
```
|
138
|
+
|
139
|
+
If `Times()` is omitted, the cardinality is assumed to be:
|
140
|
+
|
141
|
+
* `Times(1)` when there is neither `WillOnce()` nor `WillRepeatedly()`;
|
142
|
+
* `Times(n)` when there are `n WillOnce()`s but no `WillRepeatedly()`, where `n` >= 1; or
|
143
|
+
* `Times(AtLeast(n))` when there are `n WillOnce()`s and a `WillRepeatedly()`, where `n` >= 0.
|
144
|
+
|
145
|
+
A method with no `EXPECT_CALL()` is free to be invoked _any number of times_, and the default action will be taken each time.
|
146
|
+
|
147
|
+
# Matchers #
|
148
|
+
|
149
|
+
A **matcher** matches a _single_ argument. You can use it inside
|
150
|
+
`ON_CALL()` or `EXPECT_CALL()`, or use it to validate a value
|
151
|
+
directly:
|
152
|
+
|
153
|
+
| `EXPECT_THAT(value, matcher)` | Asserts that `value` matches `matcher`. |
|
154
|
+
|:------------------------------|:----------------------------------------|
|
155
|
+
| `ASSERT_THAT(value, matcher)` | The same as `EXPECT_THAT(value, matcher)`, except that it generates a **fatal** failure. |
|
156
|
+
|
157
|
+
Built-in matchers (where `argument` is the function argument) are
|
158
|
+
divided into several categories:
|
159
|
+
|
160
|
+
## Wildcard ##
|
161
|
+
|`_`|`argument` can be any value of the correct type.|
|
162
|
+
|:--|:-----------------------------------------------|
|
163
|
+
|`A<type>()` or `An<type>()`|`argument` can be any value of type `type`. |
|
164
|
+
|
165
|
+
## Generic Comparison ##
|
166
|
+
|
167
|
+
|`Eq(value)` or `value`|`argument == value`|
|
168
|
+
|:---------------------|:------------------|
|
169
|
+
|`Ge(value)` |`argument >= value`|
|
170
|
+
|`Gt(value)` |`argument > value` |
|
171
|
+
|`Le(value)` |`argument <= value`|
|
172
|
+
|`Lt(value)` |`argument < value` |
|
173
|
+
|`Ne(value)` |`argument != value`|
|
174
|
+
|`IsNull()` |`argument` is a `NULL` pointer (raw or smart).|
|
175
|
+
|`NotNull()` |`argument` is a non-null pointer (raw or smart).|
|
176
|
+
|`Ref(variable)` |`argument` is a reference to `variable`.|
|
177
|
+
|`TypedEq<type>(value)`|`argument` has type `type` and is equal to `value`. You may need to use this instead of `Eq(value)` when the mock function is overloaded.|
|
178
|
+
|
179
|
+
Except `Ref()`, these matchers make a _copy_ of `value` in case it's
|
180
|
+
modified or destructed later. If the compiler complains that `value`
|
181
|
+
doesn't have a public copy constructor, try wrap it in `ByRef()`,
|
182
|
+
e.g. `Eq(ByRef(non_copyable_value))`. If you do that, make sure
|
183
|
+
`non_copyable_value` is not changed afterwards, or the meaning of your
|
184
|
+
matcher will be changed.
|
185
|
+
|
186
|
+
## Floating-Point Matchers ##
|
187
|
+
|
188
|
+
|`DoubleEq(a_double)`|`argument` is a `double` value approximately equal to `a_double`, treating two NaNs as unequal.|
|
189
|
+
|:-------------------|:----------------------------------------------------------------------------------------------|
|
190
|
+
|`FloatEq(a_float)` |`argument` is a `float` value approximately equal to `a_float`, treating two NaNs as unequal. |
|
191
|
+
|`NanSensitiveDoubleEq(a_double)`|`argument` is a `double` value approximately equal to `a_double`, treating two NaNs as equal. |
|
192
|
+
|`NanSensitiveFloatEq(a_float)`|`argument` is a `float` value approximately equal to `a_float`, treating two NaNs as equal. |
|
193
|
+
|
194
|
+
These matchers use ULP-based comparison (the same as used in
|
195
|
+
[Google Test](http://code.google.com/p/googletest/)). They
|
196
|
+
automatically pick a reasonable error bound based on the absolute
|
197
|
+
value of the expected value. `DoubleEq()` and `FloatEq()` conform to
|
198
|
+
the IEEE standard, which requires comparing two NaNs for equality to
|
199
|
+
return false. The `NanSensitive*` version instead treats two NaNs as
|
200
|
+
equal, which is often what a user wants.
|
201
|
+
|
202
|
+
## String Matchers ##
|
203
|
+
|
204
|
+
The `argument` can be either a C string or a C++ string object:
|
205
|
+
|
206
|
+
|`ContainsRegex(string)`|`argument` matches the given regular expression.|
|
207
|
+
|:----------------------|:-----------------------------------------------|
|
208
|
+
|`EndsWith(suffix)` |`argument` ends with string `suffix`. |
|
209
|
+
|`HasSubstr(string)` |`argument` contains `string` as a sub-string. |
|
210
|
+
|`MatchesRegex(string)` |`argument` matches the given regular expression with the match starting at the first character and ending at the last character.|
|
211
|
+
|`StartsWith(prefix)` |`argument` starts with string `prefix`. |
|
212
|
+
|`StrCaseEq(string)` |`argument` is equal to `string`, ignoring case. |
|
213
|
+
|`StrCaseNe(string)` |`argument` is not equal to `string`, ignoring case.|
|
214
|
+
|`StrEq(string)` |`argument` is equal to `string`. |
|
215
|
+
|`StrNe(string)` |`argument` is not equal to `string`. |
|
216
|
+
|
217
|
+
`ContainsRegex()` and `MatchesRegex()` use the regular expression
|
218
|
+
syntax defined
|
219
|
+
[here](http://code.google.com/p/googletest/wiki/V1_6_AdvancedGuide#Regular_Expression_Syntax).
|
220
|
+
`StrCaseEq()`, `StrCaseNe()`, `StrEq()`, and `StrNe()` work for wide
|
221
|
+
strings as well.
|
222
|
+
|
223
|
+
## Container Matchers ##
|
224
|
+
|
225
|
+
Most STL-style containers support `==`, so you can use
|
226
|
+
`Eq(expected_container)` or simply `expected_container` to match a
|
227
|
+
container exactly. If you want to write the elements in-line,
|
228
|
+
match them more flexibly, or get more informative messages, you can use:
|
229
|
+
|
230
|
+
| `Contains(e)` | `argument` contains an element that matches `e`, which can be either a value or a matcher. |
|
231
|
+
|:--------------|:-------------------------------------------------------------------------------------------|
|
232
|
+
| `Each(e)` | `argument` is a container where _every_ element matches `e`, which can be either a value or a matcher. |
|
233
|
+
| `ElementsAre(e0, e1, ..., en)` | `argument` has `n + 1` elements, where the i-th element matches `ei`, which can be a value or a matcher. 0 to 10 arguments are allowed. |
|
234
|
+
| `ElementsAreArray(array)` or `ElementsAreArray(array, count)` | The same as `ElementsAre()` except that the expected element values/matchers come from a C-style array. |
|
235
|
+
| `ContainerEq(container)` | The same as `Eq(container)` except that the failure message also includes which elements are in one container but not the other. |
|
236
|
+
| `Pointwise(m, container)` | `argument` contains the same number of elements as in `container`, and for all i, (the i-th element in `argument`, the i-th element in `container`) match `m`, which is a matcher on 2-tuples. E.g. `Pointwise(Le(), upper_bounds)` verifies that each element in `argument` doesn't exceed the corresponding element in `upper_bounds`. |
|
237
|
+
|
238
|
+
These matchers can also match:
|
239
|
+
|
240
|
+
1. a native array passed by reference (e.g. in `Foo(const int (&a)[5])`), and
|
241
|
+
1. an array passed as a pointer and a count (e.g. in `Bar(const T* buffer, int len)` -- see [Multi-argument Matchers](#Multiargument_Matchers.md)).
|
242
|
+
|
243
|
+
where the array may be multi-dimensional (i.e. its elements can be arrays).
|
244
|
+
|
245
|
+
## Member Matchers ##
|
246
|
+
|
247
|
+
|`Field(&class::field, m)`|`argument.field` (or `argument->field` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_.|
|
248
|
+
|:------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------|
|
249
|
+
|`Key(e)` |`argument.first` matches `e`, which can be either a value or a matcher. E.g. `Contains(Key(Le(5)))` can verify that a `map` contains a key `<= 5`.|
|
250
|
+
|`Pair(m1, m2)` |`argument` is an `std::pair` whose `first` field matches `m1` and `second` field matches `m2`. |
|
251
|
+
|`Property(&class::property, m)`|`argument.property()` (or `argument->property()` when `argument` is a plain pointer) matches matcher `m`, where `argument` is an object of type _class_.|
|
252
|
+
|
253
|
+
## Matching the Result of a Function or Functor ##
|
254
|
+
|
255
|
+
|`ResultOf(f, m)`|`f(argument)` matches matcher `m`, where `f` is a function or functor.|
|
256
|
+
|:---------------|:---------------------------------------------------------------------|
|
257
|
+
|
258
|
+
## Pointer Matchers ##
|
259
|
+
|
260
|
+
|`Pointee(m)`|`argument` (either a smart pointer or a raw pointer) points to a value that matches matcher `m`.|
|
261
|
+
|:-----------|:-----------------------------------------------------------------------------------------------|
|
262
|
+
|
263
|
+
## Multiargument Matchers ##
|
264
|
+
|
265
|
+
Technically, all matchers match a _single_ value. A "multi-argument"
|
266
|
+
matcher is just one that matches a _tuple_. The following matchers can
|
267
|
+
be used to match a tuple `(x, y)`:
|
268
|
+
|
269
|
+
|`Eq()`|`x == y`|
|
270
|
+
|:-----|:-------|
|
271
|
+
|`Ge()`|`x >= y`|
|
272
|
+
|`Gt()`|`x > y` |
|
273
|
+
|`Le()`|`x <= y`|
|
274
|
+
|`Lt()`|`x < y` |
|
275
|
+
|`Ne()`|`x != y`|
|
276
|
+
|
277
|
+
You can use the following selectors to pick a subset of the arguments
|
278
|
+
(or reorder them) to participate in the matching:
|
279
|
+
|
280
|
+
|`AllArgs(m)`|Equivalent to `m`. Useful as syntactic sugar in `.With(AllArgs(m))`.|
|
281
|
+
|:-----------|:-------------------------------------------------------------------|
|
282
|
+
|`Args<N1, N2, ..., Nk>(m)`|The tuple of the `k` selected (using 0-based indices) arguments matches `m`, e.g. `Args<1, 2>(Eq())`.|
|
283
|
+
|
284
|
+
## Composite Matchers ##
|
285
|
+
|
286
|
+
You can make a matcher from one or more other matchers:
|
287
|
+
|
288
|
+
|`AllOf(m1, m2, ..., mn)`|`argument` matches all of the matchers `m1` to `mn`.|
|
289
|
+
|:-----------------------|:---------------------------------------------------|
|
290
|
+
|`AnyOf(m1, m2, ..., mn)`|`argument` matches at least one of the matchers `m1` to `mn`.|
|
291
|
+
|`Not(m)` |`argument` doesn't match matcher `m`. |
|
292
|
+
|
293
|
+
## Adapters for Matchers ##
|
294
|
+
|
295
|
+
|`MatcherCast<T>(m)`|casts matcher `m` to type `Matcher<T>`.|
|
296
|
+
|:------------------|:--------------------------------------|
|
297
|
+
|`SafeMatcherCast<T>(m)`| [safely casts](http://code.google.com/p/googlemock/wiki/V1_6_CookBook#Casting_Matchers) matcher `m` to type `Matcher<T>`. |
|
298
|
+
|`Truly(predicate)` |`predicate(argument)` returns something considered by C++ to be true, where `predicate` is a function or functor.|
|
299
|
+
|
300
|
+
## Matchers as Predicates ##
|
301
|
+
|
302
|
+
|`Matches(m)(value)`|evaluates to `true` if `value` matches `m`. You can use `Matches(m)` alone as a unary functor.|
|
303
|
+
|:------------------|:---------------------------------------------------------------------------------------------|
|
304
|
+
|`ExplainMatchResult(m, value, result_listener)`|evaluates to `true` if `value` matches `m`, explaining the result to `result_listener`. |
|
305
|
+
|`Value(value, m)` |evaluates to `true` if `value` matches `m`. |
|
306
|
+
|
307
|
+
## Defining Matchers ##
|
308
|
+
|
309
|
+
| `MATCHER(IsEven, "") { return (arg % 2) == 0; }` | Defines a matcher `IsEven()` to match an even number. |
|
310
|
+
|:-------------------------------------------------|:------------------------------------------------------|
|
311
|
+
| `MATCHER_P(IsDivisibleBy, n, "") { *result_listener << "where the remainder is " << (arg % n); return (arg % n) == 0; }` | Defines a macher `IsDivisibleBy(n)` to match a number divisible by `n`. |
|
312
|
+
| `MATCHER_P2(IsBetween, a, b, std::string(negation ? "isn't" : "is") + " between " + PrintToString(a) + " and " + PrintToString(b)) { return a <= arg && arg <= b; }` | Defines a matcher `IsBetween(a, b)` to match a value in the range [`a`, `b`]. |
|
313
|
+
|
314
|
+
**Notes:**
|
315
|
+
|
316
|
+
1. The `MATCHER*` macros cannot be used inside a function or class.
|
317
|
+
1. The matcher body must be _purely functional_ (i.e. it cannot have any side effect, and the result must not depend on anything other than the value being matched and the matcher parameters).
|
318
|
+
1. You can use `PrintToString(x)` to convert a value `x` of any type to a string.
|
319
|
+
|
320
|
+
## Matchers as Test Assertions ##
|
321
|
+
|
322
|
+
|`ASSERT_THAT(expression, m)`|Generates a [fatal failure](http://code.google.com/p/googletest/wiki/V1_6_Primer#Assertions) if the value of `expression` doesn't match matcher `m`.|
|
323
|
+
|:---------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------|
|
324
|
+
|`EXPECT_THAT(expression, m)`|Generates a non-fatal failure if the value of `expression` doesn't match matcher `m`. |
|
325
|
+
|
326
|
+
# Actions #
|
327
|
+
|
328
|
+
**Actions** specify what a mock function should do when invoked.
|
329
|
+
|
330
|
+
## Returning a Value ##
|
331
|
+
|
332
|
+
|`Return()`|Return from a `void` mock function.|
|
333
|
+
|:---------|:----------------------------------|
|
334
|
+
|`Return(value)`|Return `value`. If the type of `value` is different to the mock function's return type, `value` is converted to the latter type <i>at the time the expectation is set</i>, not when the action is executed.|
|
335
|
+
|`ReturnArg<N>()`|Return the `N`-th (0-based) argument.|
|
336
|
+
|`ReturnNew<T>(a1, ..., ak)`|Return `new T(a1, ..., ak)`; a different object is created each time.|
|
337
|
+
|`ReturnNull()`|Return a null pointer. |
|
338
|
+
|`ReturnPointee(ptr)`|Return the value pointed to by `ptr`.|
|
339
|
+
|`ReturnRef(variable)`|Return a reference to `variable`. |
|
340
|
+
|`ReturnRefOfCopy(value)`|Return a reference to a copy of `value`; the copy lives as long as the action.|
|
341
|
+
|
342
|
+
## Side Effects ##
|
343
|
+
|
344
|
+
|`Assign(&variable, value)`|Assign `value` to variable.|
|
345
|
+
|:-------------------------|:--------------------------|
|
346
|
+
| `DeleteArg<N>()` | Delete the `N`-th (0-based) argument, which must be a pointer. |
|
347
|
+
| `SaveArg<N>(pointer)` | Save the `N`-th (0-based) argument to `*pointer`. |
|
348
|
+
| `SaveArgPointee<N>(pointer)` | Save the value pointed to by the `N`-th (0-based) argument to `*pointer`. |
|
349
|
+
| `SetArgReferee<N>(value)` | Assign value to the variable referenced by the `N`-th (0-based) argument. |
|
350
|
+
|`SetArgPointee<N>(value)` |Assign `value` to the variable pointed by the `N`-th (0-based) argument.|
|
351
|
+
|`SetArgumentPointee<N>(value)`|Same as `SetArgPointee<N>(value)`. Deprecated. Will be removed in v1.7.0.|
|
352
|
+
|`SetArrayArgument<N>(first, last)`|Copies the elements in source range [`first`, `last`) to the array pointed to by the `N`-th (0-based) argument, which can be either a pointer or an iterator. The action does not take ownership of the elements in the source range.|
|
353
|
+
|`SetErrnoAndReturn(error, value)`|Set `errno` to `error` and return `value`.|
|
354
|
+
|`Throw(exception)` |Throws the given exception, which can be any copyable value. Available since v1.1.0.|
|
355
|
+
|
356
|
+
## Using a Function or a Functor as an Action ##
|
357
|
+
|
358
|
+
|`Invoke(f)`|Invoke `f` with the arguments passed to the mock function, where `f` can be a global/static function or a functor.|
|
359
|
+
|:----------|:-----------------------------------------------------------------------------------------------------------------|
|
360
|
+
|`Invoke(object_pointer, &class::method)`|Invoke the {method on the object with the arguments passed to the mock function. |
|
361
|
+
|`InvokeWithoutArgs(f)`|Invoke `f`, which can be a global/static function or a functor. `f` must take no arguments. |
|
362
|
+
|`InvokeWithoutArgs(object_pointer, &class::method)`|Invoke the method on the object, which takes no arguments. |
|
363
|
+
|`InvokeArgument<N>(arg1, arg2, ..., argk)`|Invoke the mock function's `N`-th (0-based) argument, which must be a function or a functor, with the `k` arguments.|
|
364
|
+
|
365
|
+
The return value of the invoked function is used as the return value
|
366
|
+
of the action.
|
367
|
+
|
368
|
+
When defining a function or functor to be used with `Invoke*()`, you can declare any unused parameters as `Unused`:
|
369
|
+
```
|
370
|
+
double Distance(Unused, double x, double y) { return sqrt(x*x + y*y); }
|
371
|
+
...
|
372
|
+
EXPECT_CALL(mock, Foo("Hi", _, _)).WillOnce(Invoke(Distance));
|
373
|
+
```
|
374
|
+
|
375
|
+
In `InvokeArgument<N>(...)`, if an argument needs to be passed by reference, wrap it inside `ByRef()`. For example,
|
376
|
+
```
|
377
|
+
InvokeArgument<2>(5, string("Hi"), ByRef(foo))
|
378
|
+
```
|
379
|
+
calls the mock function's #2 argument, passing to it `5` and `string("Hi")` by value, and `foo` by reference.
|
380
|
+
|
381
|
+
## Default Action ##
|
382
|
+
|
383
|
+
|`DoDefault()`|Do the default action (specified by `ON_CALL()` or the built-in one).|
|
384
|
+
|:------------|:--------------------------------------------------------------------|
|
385
|
+
|
386
|
+
**Note:** due to technical reasons, `DoDefault()` cannot be used inside a composite action - trying to do so will result in a run-time error.
|
387
|
+
|
388
|
+
## Composite Actions ##
|
389
|
+
|
390
|
+
|`DoAll(a1, a2, ..., an)`|Do all actions `a1` to `an` and return the result of `an` in each invocation. The first `n - 1` sub-actions must return void. |
|
391
|
+
|:-----------------------|:-----------------------------------------------------------------------------------------------------------------------------|
|
392
|
+
|`IgnoreResult(a)` |Perform action `a` and ignore its result. `a` must not return void. |
|
393
|
+
|`WithArg<N>(a)` |Pass the `N`-th (0-based) argument of the mock function to action `a` and perform it. |
|
394
|
+
|`WithArgs<N1, N2, ..., Nk>(a)`|Pass the selected (0-based) arguments of the mock function to action `a` and perform it. |
|
395
|
+
|`WithoutArgs(a)` |Perform action `a` without any arguments. |
|
396
|
+
|
397
|
+
## Defining Actions ##
|
398
|
+
|
399
|
+
| `ACTION(Sum) { return arg0 + arg1; }` | Defines an action `Sum()` to return the sum of the mock function's argument #0 and #1. |
|
400
|
+
|:--------------------------------------|:---------------------------------------------------------------------------------------|
|
401
|
+
| `ACTION_P(Plus, n) { return arg0 + n; }` | Defines an action `Plus(n)` to return the sum of the mock function's argument #0 and `n`. |
|
402
|
+
| `ACTION_Pk(Foo, p1, ..., pk) { statements; }` | Defines a parameterized action `Foo(p1, ..., pk)` to execute the given `statements`. |
|
403
|
+
|
404
|
+
The `ACTION*` macros cannot be used inside a function or class.
|
405
|
+
|
406
|
+
# Cardinalities #
|
407
|
+
|
408
|
+
These are used in `Times()` to specify how many times a mock function will be called:
|
409
|
+
|
410
|
+
|`AnyNumber()`|The function can be called any number of times.|
|
411
|
+
|:------------|:----------------------------------------------|
|
412
|
+
|`AtLeast(n)` |The call is expected at least `n` times. |
|
413
|
+
|`AtMost(n)` |The call is expected at most `n` times. |
|
414
|
+
|`Between(m, n)`|The call is expected between `m` and `n` (inclusive) times.|
|
415
|
+
|`Exactly(n) or n`|The call is expected exactly `n` times. In particular, the call should never happen when `n` is 0.|
|
416
|
+
|
417
|
+
# Expectation Order #
|
418
|
+
|
419
|
+
By default, the expectations can be matched in _any_ order. If some
|
420
|
+
or all expectations must be matched in a given order, there are two
|
421
|
+
ways to specify it. They can be used either independently or
|
422
|
+
together.
|
423
|
+
|
424
|
+
## The After Clause ##
|
425
|
+
|
426
|
+
```
|
427
|
+
using ::testing::Expectation;
|
428
|
+
...
|
429
|
+
Expectation init_x = EXPECT_CALL(foo, InitX());
|
430
|
+
Expectation init_y = EXPECT_CALL(foo, InitY());
|
431
|
+
EXPECT_CALL(foo, Bar())
|
432
|
+
.After(init_x, init_y);
|
433
|
+
```
|
434
|
+
says that `Bar()` can be called only after both `InitX()` and
|
435
|
+
`InitY()` have been called.
|
436
|
+
|
437
|
+
If you don't know how many pre-requisites an expectation has when you
|
438
|
+
write it, you can use an `ExpectationSet` to collect them:
|
439
|
+
|
440
|
+
```
|
441
|
+
using ::testing::ExpectationSet;
|
442
|
+
...
|
443
|
+
ExpectationSet all_inits;
|
444
|
+
for (int i = 0; i < element_count; i++) {
|
445
|
+
all_inits += EXPECT_CALL(foo, InitElement(i));
|
446
|
+
}
|
447
|
+
EXPECT_CALL(foo, Bar())
|
448
|
+
.After(all_inits);
|
449
|
+
```
|
450
|
+
says that `Bar()` can be called only after all elements have been
|
451
|
+
initialized (but we don't care about which elements get initialized
|
452
|
+
before the others).
|
453
|
+
|
454
|
+
Modifying an `ExpectationSet` after using it in an `.After()` doesn't
|
455
|
+
affect the meaning of the `.After()`.
|
456
|
+
|
457
|
+
## Sequences ##
|
458
|
+
|
459
|
+
When you have a long chain of sequential expectations, it's easier to
|
460
|
+
specify the order using **sequences**, which don't require you to given
|
461
|
+
each expectation in the chain a different name. <i>All expected<br>
|
462
|
+
calls</i> in the same sequence must occur in the order they are
|
463
|
+
specified.
|
464
|
+
|
465
|
+
```
|
466
|
+
using ::testing::Sequence;
|
467
|
+
Sequence s1, s2;
|
468
|
+
...
|
469
|
+
EXPECT_CALL(foo, Reset())
|
470
|
+
.InSequence(s1, s2)
|
471
|
+
.WillOnce(Return(true));
|
472
|
+
EXPECT_CALL(foo, GetSize())
|
473
|
+
.InSequence(s1)
|
474
|
+
.WillOnce(Return(1));
|
475
|
+
EXPECT_CALL(foo, Describe(A<const char*>()))
|
476
|
+
.InSequence(s2)
|
477
|
+
.WillOnce(Return("dummy"));
|
478
|
+
```
|
479
|
+
says that `Reset()` must be called before _both_ `GetSize()` _and_
|
480
|
+
`Describe()`, and the latter two can occur in any order.
|
481
|
+
|
482
|
+
To put many expectations in a sequence conveniently:
|
483
|
+
```
|
484
|
+
using ::testing::InSequence;
|
485
|
+
{
|
486
|
+
InSequence dummy;
|
487
|
+
|
488
|
+
EXPECT_CALL(...)...;
|
489
|
+
EXPECT_CALL(...)...;
|
490
|
+
...
|
491
|
+
EXPECT_CALL(...)...;
|
492
|
+
}
|
493
|
+
```
|
494
|
+
says that all expected calls in the scope of `dummy` must occur in
|
495
|
+
strict order. The name `dummy` is irrelevant.)
|
496
|
+
|
497
|
+
# Verifying and Resetting a Mock #
|
498
|
+
|
499
|
+
Google Mock will verify the expectations on a mock object when it is destructed, or you can do it earlier:
|
500
|
+
```
|
501
|
+
using ::testing::Mock;
|
502
|
+
...
|
503
|
+
// Verifies and removes the expectations on mock_obj;
|
504
|
+
// returns true iff successful.
|
505
|
+
Mock::VerifyAndClearExpectations(&mock_obj);
|
506
|
+
...
|
507
|
+
// Verifies and removes the expectations on mock_obj;
|
508
|
+
// also removes the default actions set by ON_CALL();
|
509
|
+
// returns true iff successful.
|
510
|
+
Mock::VerifyAndClear(&mock_obj);
|
511
|
+
```
|
512
|
+
|
513
|
+
You can also tell Google Mock that a mock object can be leaked and doesn't
|
514
|
+
need to be verified:
|
515
|
+
```
|
516
|
+
Mock::AllowLeak(&mock_obj);
|
517
|
+
```
|
518
|
+
|
519
|
+
# Mock Classes #
|
520
|
+
|
521
|
+
Google Mock defines a convenient mock class template
|
522
|
+
```
|
523
|
+
class MockFunction<R(A1, ..., An)> {
|
524
|
+
public:
|
525
|
+
MOCK_METHODn(Call, R(A1, ..., An));
|
526
|
+
};
|
527
|
+
```
|
528
|
+
See this [recipe](http://code.google.com/p/googlemock/wiki/V1_6_CookBook#Using_Check_Points) for one application of it.
|
529
|
+
|
530
|
+
# Flags #
|
531
|
+
|
532
|
+
| `--gmock_catch_leaked_mocks=0` | Don't report leaked mock objects as failures. |
|
533
|
+
|:-------------------------------|:----------------------------------------------|
|
534
|
+
| `--gmock_verbose=LEVEL` | Sets the default verbosity level (`info`, `warning`, or `error`) of Google Mock messages. |
|