Merge lp:~renatofilho/sync-monitor/disable-sync-for-canonical into lp:sync-monitor

Proposed by Renato Araujo Oliveira Filho
Status: Rejected
Rejected by: Renato Araujo Oliveira Filho
Proposed branch: lp:~renatofilho/sync-monitor/disable-sync-for-canonical
Merge into: lp:sync-monitor
Diff against target: 68184 lines (+98/-67193)
161 files modified
3rd_party/CMakeLists.txt (+0/-1)
3rd_party/gmock/CMakeLists.txt (+0/-171)
3rd_party/gmock/gtest/CHANGES (+0/-153)
3rd_party/gmock/gtest/CMakeLists.txt (+0/-250)
3rd_party/gmock/gtest/CONTRIBUTORS (+0/-37)
3rd_party/gmock/gtest/Makefile.am (+0/-305)
3rd_party/gmock/gtest/README (+0/-435)
3rd_party/gmock/gtest/cmake/internal_utils.cmake (+0/-227)
3rd_party/gmock/gtest/codegear/gtest_all.cc (+0/-38)
3rd_party/gmock/gtest/codegear/gtest_link.cc (+0/-40)
3rd_party/gmock/gtest/configure.ac (+0/-68)
3rd_party/gmock/gtest/include/gtest/gtest-death-test.h (+0/-294)
3rd_party/gmock/gtest/include/gtest/gtest-message.h (+0/-250)
3rd_party/gmock/gtest/include/gtest/gtest-param-test.h (+0/-1421)
3rd_party/gmock/gtest/include/gtest/gtest-param-test.h.pump (+0/-487)
3rd_party/gmock/gtest/include/gtest/gtest-printers.h (+0/-855)
3rd_party/gmock/gtest/include/gtest/gtest-spi.h (+0/-232)
3rd_party/gmock/gtest/include/gtest/gtest-test-part.h (+0/-179)
3rd_party/gmock/gtest/include/gtest/gtest-typed-test.h (+0/-259)
3rd_party/gmock/gtest/include/gtest/gtest.h (+0/-2291)
3rd_party/gmock/gtest/include/gtest/gtest_pred_impl.h (+0/-358)
3rd_party/gmock/gtest/include/gtest/gtest_prod.h (+0/-58)
3rd_party/gmock/gtest/include/gtest/internal/gtest-death-test-internal.h (+0/-319)
3rd_party/gmock/gtest/include/gtest/internal/gtest-filepath.h (+0/-206)
3rd_party/gmock/gtest/include/gtest/internal/gtest-internal.h (+0/-1147)
3rd_party/gmock/gtest/include/gtest/internal/gtest-linked_ptr.h (+0/-233)
3rd_party/gmock/gtest/include/gtest/internal/gtest-param-util-generated.h (+0/-5143)
3rd_party/gmock/gtest/include/gtest/internal/gtest-param-util-generated.h.pump (+0/-301)
3rd_party/gmock/gtest/include/gtest/internal/gtest-param-util.h (+0/-619)
3rd_party/gmock/gtest/include/gtest/internal/gtest-port.h (+0/-1947)
3rd_party/gmock/gtest/include/gtest/internal/gtest-string.h (+0/-167)
3rd_party/gmock/gtest/include/gtest/internal/gtest-tuple.h (+0/-1012)
3rd_party/gmock/gtest/include/gtest/internal/gtest-tuple.h.pump (+0/-339)
3rd_party/gmock/gtest/include/gtest/internal/gtest-type-util.h (+0/-3331)
3rd_party/gmock/gtest/include/gtest/internal/gtest-type-util.h.pump (+0/-297)
3rd_party/gmock/gtest/m4/acx_pthread.m4 (+0/-363)
3rd_party/gmock/gtest/m4/gtest.m4 (+0/-74)
3rd_party/gmock/gtest/make/Makefile (+0/-82)
3rd_party/gmock/gtest/samples/prime_tables.h (+0/-123)
3rd_party/gmock/gtest/samples/sample1.cc (+0/-68)
3rd_party/gmock/gtest/samples/sample1.h (+0/-43)
3rd_party/gmock/gtest/samples/sample10_unittest.cc (+0/-144)
3rd_party/gmock/gtest/samples/sample1_unittest.cc (+0/-153)
3rd_party/gmock/gtest/samples/sample2.cc (+0/-56)
3rd_party/gmock/gtest/samples/sample2.h (+0/-85)
3rd_party/gmock/gtest/samples/sample2_unittest.cc (+0/-109)
3rd_party/gmock/gtest/samples/sample3-inl.h (+0/-172)
3rd_party/gmock/gtest/samples/sample3_unittest.cc (+0/-151)
3rd_party/gmock/gtest/samples/sample4.cc (+0/-46)
3rd_party/gmock/gtest/samples/sample4.h (+0/-53)
3rd_party/gmock/gtest/samples/sample4_unittest.cc (+0/-45)
3rd_party/gmock/gtest/samples/sample5_unittest.cc (+0/-199)
3rd_party/gmock/gtest/samples/sample6_unittest.cc (+0/-224)
3rd_party/gmock/gtest/samples/sample7_unittest.cc (+0/-130)
3rd_party/gmock/gtest/samples/sample8_unittest.cc (+0/-173)
3rd_party/gmock/gtest/samples/sample9_unittest.cc (+0/-160)
3rd_party/gmock/gtest/scripts/fuse_gtest_files.py (+0/-250)
3rd_party/gmock/gtest/scripts/gen_gtest_pred_impl.py (+0/-730)
3rd_party/gmock/gtest/scripts/gtest-config.in (+0/-274)
3rd_party/gmock/gtest/scripts/pump.py (+0/-855)
3rd_party/gmock/gtest/scripts/test/Makefile (+0/-59)
3rd_party/gmock/gtest/scripts/upload.py (+0/-1387)
3rd_party/gmock/gtest/scripts/upload_gtest.py (+0/-78)
3rd_party/gmock/gtest/src/gtest-all.cc (+0/-48)
3rd_party/gmock/gtest/src/gtest-death-test.cc (+0/-1344)
3rd_party/gmock/gtest/src/gtest-filepath.cc (+0/-382)
3rd_party/gmock/gtest/src/gtest-internal-inl.h (+0/-1218)
3rd_party/gmock/gtest/src/gtest-port.cc (+0/-805)
3rd_party/gmock/gtest/src/gtest-printers.cc (+0/-363)
3rd_party/gmock/gtest/src/gtest-test-part.cc (+0/-110)
3rd_party/gmock/gtest/src/gtest-typed-test.cc (+0/-110)
3rd_party/gmock/gtest/src/gtest.cc (+0/-4961)
3rd_party/gmock/gtest/src/gtest_main.cc (+0/-38)
3rd_party/gmock/gtest/test/gtest-death-test_ex_test.cc (+0/-93)
3rd_party/gmock/gtest/test/gtest-death-test_test.cc (+0/-1368)
3rd_party/gmock/gtest/test/gtest-filepath_test.cc (+0/-680)
3rd_party/gmock/gtest/test/gtest-linked_ptr_test.cc (+0/-154)
3rd_party/gmock/gtest/test/gtest-listener_test.cc (+0/-310)
3rd_party/gmock/gtest/test/gtest-message_test.cc (+0/-159)
3rd_party/gmock/gtest/test/gtest-options_test.cc (+0/-215)
3rd_party/gmock/gtest/test/gtest-param-test2_test.cc (+0/-65)
3rd_party/gmock/gtest/test/gtest-param-test_test.cc (+0/-904)
3rd_party/gmock/gtest/test/gtest-param-test_test.h (+0/-57)
3rd_party/gmock/gtest/test/gtest-port_test.cc (+0/-1253)
3rd_party/gmock/gtest/test/gtest-printers_test.cc (+0/-1566)
3rd_party/gmock/gtest/test/gtest-test-part_test.cc (+0/-208)
3rd_party/gmock/gtest/test/gtest-tuple_test.cc (+0/-320)
3rd_party/gmock/gtest/test/gtest-typed-test2_test.cc (+0/-45)
3rd_party/gmock/gtest/test/gtest-typed-test_test.cc (+0/-360)
3rd_party/gmock/gtest/test/gtest-typed-test_test.h (+0/-66)
3rd_party/gmock/gtest/test/gtest-unittest-api_test.cc (+0/-341)
3rd_party/gmock/gtest/test/gtest_all_test.cc (+0/-47)
3rd_party/gmock/gtest/test/gtest_break_on_failure_unittest.py (+0/-218)
3rd_party/gmock/gtest/test/gtest_break_on_failure_unittest_.cc (+0/-88)
3rd_party/gmock/gtest/test/gtest_catch_exceptions_test.py (+0/-223)
3rd_party/gmock/gtest/test/gtest_catch_exceptions_test_.cc (+0/-311)
3rd_party/gmock/gtest/test/gtest_color_test.py (+0/-130)
3rd_party/gmock/gtest/test/gtest_color_test_.cc (+0/-71)
3rd_party/gmock/gtest/test/gtest_env_var_test.py (+0/-103)
3rd_party/gmock/gtest/test/gtest_env_var_test_.cc (+0/-126)
3rd_party/gmock/gtest/test/gtest_environment_test.cc (+0/-192)
3rd_party/gmock/gtest/test/gtest_filter_unittest.py (+0/-633)
3rd_party/gmock/gtest/test/gtest_filter_unittest_.cc (+0/-140)
3rd_party/gmock/gtest/test/gtest_help_test.py (+0/-172)
3rd_party/gmock/gtest/test/gtest_help_test_.cc (+0/-46)
3rd_party/gmock/gtest/test/gtest_list_tests_unittest.py (+0/-207)
3rd_party/gmock/gtest/test/gtest_list_tests_unittest_.cc (+0/-157)
3rd_party/gmock/gtest/test/gtest_main_unittest.cc (+0/-45)
3rd_party/gmock/gtest/test/gtest_no_test_unittest.cc (+0/-56)
3rd_party/gmock/gtest/test/gtest_output_test.py (+0/-335)
3rd_party/gmock/gtest/test/gtest_output_test_.cc (+0/-1034)
3rd_party/gmock/gtest/test/gtest_output_test_golden_lin.txt (+0/-720)
3rd_party/gmock/gtest/test/gtest_pred_impl_unittest.cc (+0/-2427)
3rd_party/gmock/gtest/test/gtest_prod_test.cc (+0/-57)
3rd_party/gmock/gtest/test/gtest_repeat_test.cc (+0/-253)
3rd_party/gmock/gtest/test/gtest_shuffle_test.py (+0/-325)
3rd_party/gmock/gtest/test/gtest_shuffle_test_.cc (+0/-103)
3rd_party/gmock/gtest/test/gtest_sole_header_test.cc (+0/-57)
3rd_party/gmock/gtest/test/gtest_stress_test.cc (+0/-256)
3rd_party/gmock/gtest/test/gtest_test_utils.py (+0/-305)
3rd_party/gmock/gtest/test/gtest_throw_on_failure_ex_test.cc (+0/-92)
3rd_party/gmock/gtest/test/gtest_throw_on_failure_test.py (+0/-171)
3rd_party/gmock/gtest/test/gtest_throw_on_failure_test_.cc (+0/-72)
3rd_party/gmock/gtest/test/gtest_uninitialized_test.py (+0/-70)
3rd_party/gmock/gtest/test/gtest_uninitialized_test_.cc (+0/-43)
3rd_party/gmock/gtest/test/gtest_unittest.cc (+0/-7415)
3rd_party/gmock/gtest/test/gtest_xml_outfile1_test_.cc (+0/-49)
3rd_party/gmock/gtest/test/gtest_xml_outfile2_test_.cc (+0/-49)
3rd_party/gmock/gtest/test/gtest_xml_outfiles_test.py (+0/-132)
3rd_party/gmock/gtest/test/gtest_xml_output_unittest.py (+0/-307)
3rd_party/gmock/gtest/test/gtest_xml_output_unittest_.cc (+0/-181)
3rd_party/gmock/gtest/test/gtest_xml_test_utils.py (+0/-194)
3rd_party/gmock/gtest/test/production.cc (+0/-36)
3rd_party/gmock/gtest/test/production.h (+0/-55)
3rd_party/gmock/gtest/xcode/Config/DebugProject.xcconfig (+0/-30)
3rd_party/gmock/gtest/xcode/Config/FrameworkTarget.xcconfig (+0/-17)
3rd_party/gmock/gtest/xcode/Config/General.xcconfig (+0/-41)
3rd_party/gmock/gtest/xcode/Config/ReleaseProject.xcconfig (+0/-32)
3rd_party/gmock/gtest/xcode/Config/StaticLibraryTarget.xcconfig (+0/-18)
3rd_party/gmock/gtest/xcode/Config/TestTarget.xcconfig (+0/-8)
3rd_party/gmock/gtest/xcode/Resources/Info.plist (+0/-30)
3rd_party/gmock/gtest/xcode/Samples/FrameworkSample/Info.plist (+0/-28)
3rd_party/gmock/gtest/xcode/Samples/FrameworkSample/runtests.sh (+0/-62)
3rd_party/gmock/gtest/xcode/Samples/FrameworkSample/widget.cc (+0/-63)
3rd_party/gmock/gtest/xcode/Samples/FrameworkSample/widget.h (+0/-59)
3rd_party/gmock/gtest/xcode/Samples/FrameworkSample/widget_test.cc (+0/-68)
3rd_party/gmock/gtest/xcode/Scripts/runtests.sh (+0/-65)
3rd_party/gmock/gtest/xcode/Scripts/versiongenerate.py (+0/-100)
3rd_party/gmock/src/gmock-all.cc (+0/-47)
3rd_party/gmock/src/gmock-cardinalities.cc (+0/-156)
3rd_party/gmock/src/gmock-internal-utils.cc (+0/-174)
3rd_party/gmock/src/gmock-matchers.cc (+0/-137)
3rd_party/gmock/src/gmock-spec-builders.cc (+0/-813)
3rd_party/gmock/src/gmock.cc (+0/-182)
3rd_party/gmock/src/gmock_main.cc (+0/-54)
CMakeLists.txt (+6/-1)
cmake/FindGtest.cmake (+68/-0)
src/sync-account.cpp (+5/-1)
src/sync-daemon.cpp (+9/-3)
src/sync-daemon.h (+1/-0)
tests/unittest/CMakeLists.txt (+9/-2)
To merge this branch: bzr merge lp:~renatofilho/sync-monitor/disable-sync-for-canonical
Reviewer Review Type Date Requested Status
Charles Kerr (community) Approve
system-apps-ci-bot continuous-integration Approve
Review via email: mp+320933@code.launchpad.net

Commit message

Does not sync canonical accounts due bug #1628040.

Description of the change

Does not sync canonical accounts due bug #1628040.

To post a comment you must log in.
Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

FAILED: Continuous integration, rev:100
https://jenkins.canonical.com/system-apps/job/lp-sync-monitor-ci/1/
Executed test runs:
    FAILURE: https://jenkins.canonical.com/system-apps/job/build/2354/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/2354
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2172
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2172/artifact/output/*zip*/output.zip
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=zesty/2172/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2172
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2172/artifact/output/*zip*/output.zip
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=zesty/2172/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/2172
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/2172/artifact/output/*zip*/output.zip
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=zesty/2172/console

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-sync-monitor-ci/1/rebuild

review: Needs Fixing (continuous-integration)
101. By Renato Araujo Oliveira Filho

Use gmock from system intead of keep a copy internally.

102. By Renato Araujo Oliveira Filho

Add more debug messages.

Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :
review: Needs Fixing (continuous-integration)
103. By Renato Araujo Oliveira Filho

Add missing files.

Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

PASSED: Continuous integration, rev:103
https://jenkins.canonical.com/system-apps/job/lp-sync-monitor-ci/3/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build/2356
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/2356
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2174
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2174/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=zesty/2174
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=zesty/2174/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2174
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2174/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=zesty/2174
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=zesty/2174/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/2174
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/2174/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=zesty/2174
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=zesty/2174/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-sync-monitor-ci/3/rebuild

review: Approve (continuous-integration)
104. By Renato Araujo Oliveira Filho

Only syncs calendars owned by the user.

Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

PASSED: Continuous integration, rev:104
https://jenkins.canonical.com/system-apps/job/lp-sync-monitor-ci/4/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build/2357
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/2357
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2175
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=zesty/2175
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=zesty/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2175
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=zesty/2175
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=zesty/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/2175
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/2175/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=zesty/2175
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=zesty/2175/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-sync-monitor-ci/4/rebuild

review: Approve (continuous-integration)
Revision history for this message
Charles Kerr (charlesk) wrote :

The gmock removal should have gone in a separate branch, IMO. This makes it harder to see the actual ~20 line patch

As to the actual patch... I'm a little worried that we carve out this special case, this patch looks like it cures the symptom rather than the underlying sync bug.

Still, as long as this is understood to be a temporary workaround for the inbox spam, and that this will be cleaned up when the sync bug is fixed, I'm OK with a temporary.

review: Approve
Revision history for this message
Renato Araujo Oliveira Filho (renatofilho) wrote :

Unmerged revisions

104. By Renato Araujo Oliveira Filho

Only syncs calendars owned by the user.

103. By Renato Araujo Oliveira Filho

Add missing files.

102. By Renato Araujo Oliveira Filho

Add more debug messages.

101. By Renato Araujo Oliveira Filho

Use gmock from system intead of keep a copy internally.

100. By Renato Araujo Oliveira Filho

Does not sync canonical accounts due bug #1628040.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '3rd_party/CMakeLists.txt'
2--- 3rd_party/CMakeLists.txt 2014-04-07 19:51:32 +0000
3+++ 3rd_party/CMakeLists.txt 2017-03-27 13:27:39 +0000
4@@ -1,2 +1,1 @@
5 add_subdirectory(syncevolution-qt)
6-add_subdirectory(gmock)
7
8=== removed directory '3rd_party/gmock'
9=== removed file '3rd_party/gmock/CMakeLists.txt'
10--- 3rd_party/gmock/CMakeLists.txt 2014-04-07 19:53:07 +0000
11+++ 3rd_party/gmock/CMakeLists.txt 1970-01-01 00:00:00 +0000
12@@ -1,171 +0,0 @@
13-########################################################################
14-# CMake build script for Google Mock.
15-#
16-# To run the tests for Google Mock itself on Linux, use 'make test' or
17-# ctest. You can select which tests to run using 'ctest -R regex'.
18-# For more options, run 'ctest --help'.
19-
20-# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
21-# make it prominent in the GUI.
22-option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
23-
24-option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
25-
26-# A directory to find Google Test sources.
27-if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
28- set(gtest_dir gtest)
29-else()
30- set(gtest_dir ../gtest)
31-endif()
32-
33-# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
34-include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL)
35-
36-if (COMMAND pre_project_set_up_hermetic_build)
37- # Google Test also calls hermetic setup functions from add_subdirectory,
38- # although its changes will not affect things at the current scope.
39- pre_project_set_up_hermetic_build()
40-endif()
41-
42-########################################################################
43-#
44-# Project-wide settings
45-
46-# Name of the project.
47-#
48-# CMake files in this project can refer to the root source directory
49-# as ${gmock_SOURCE_DIR} and to the root binary directory as
50-# ${gmock_BINARY_DIR}.
51-# Language "C" is required for find_package(Threads).
52-project(gmock CXX C)
53-cmake_minimum_required(VERSION 2.6.2)
54-
55-if (COMMAND set_up_hermetic_build)
56- set_up_hermetic_build()
57-endif()
58-
59-# Instructs CMake to process Google Test's CMakeLists.txt and add its
60-# targets to the current scope. We are placing Google Test's binary
61-# directory in a subdirectory of our own as VC compilation may break
62-# if they are the same (the default).
63-add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/gtest")
64-
65-# Although Google Test's CMakeLists.txt calls this function, the
66-# changes there don't affect the current scope. Therefore we have to
67-# call it again here.
68-config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake
69-
70-# Adds Google Mock's and Google Test's header directories to the search path.
71-include_directories("${gmock_SOURCE_DIR}/include"
72- "${gmock_SOURCE_DIR}"
73- "${gtest_SOURCE_DIR}/include"
74- # This directory is needed to build directly from Google
75- # Test sources.
76- "${gtest_SOURCE_DIR}")
77-
78-########################################################################
79-#
80-# Defines the gmock & gmock_main libraries. User tests should link
81-# with one of them.
82-
83-# Google Mock libraries. We build them using more strict warnings than what
84-# are used for other targets, to ensure that Google Mock can be compiled by
85-# a user aggressive about warnings.
86-cxx_library(gmock
87- "${cxx_strict}"
88- "${gtest_dir}/src/gtest-all.cc"
89- src/gmock-all.cc)
90-
91-cxx_library(gmock_main
92- "${cxx_strict}"
93- "${gtest_dir}/src/gtest-all.cc"
94- src/gmock-all.cc
95- src/gmock_main.cc)
96-
97-########################################################################
98-#
99-# Google Mock's own tests.
100-#
101-# You can skip this section if you aren't interested in testing
102-# Google Mock itself.
103-#
104-# The tests are not built by default. To build them, set the
105-# gmock_build_tests option to ON. You can do it by running ccmake
106-# or specifying the -Dgmock_build_tests=ON flag when running cmake.
107-
108-if (gmock_build_tests)
109- # This must be set in the root directory for the tests to be run by
110- # 'make test' or ctest.
111- enable_testing()
112-
113- ############################################################
114- # C++ tests built with standard compiler flags.
115-
116- cxx_test(gmock-actions_test gmock_main)
117- cxx_test(gmock-cardinalities_test gmock_main)
118- cxx_test(gmock_ex_test gmock_main)
119- cxx_test(gmock-generated-actions_test gmock_main)
120- cxx_test(gmock-generated-function-mockers_test gmock_main)
121- cxx_test(gmock-generated-internal-utils_test gmock_main)
122- cxx_test(gmock-generated-matchers_test gmock_main)
123- cxx_test(gmock-internal-utils_test gmock_main)
124- cxx_test(gmock-matchers_test gmock_main)
125- cxx_test(gmock-more-actions_test gmock_main)
126- cxx_test(gmock-nice-strict_test gmock_main)
127- cxx_test(gmock-port_test gmock_main)
128- cxx_test(gmock-spec-builders_test gmock_main)
129- cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc)
130- cxx_test(gmock_test gmock_main)
131-
132- if (CMAKE_USE_PTHREADS_INIT)
133- cxx_test(gmock_stress_test gmock)
134- endif()
135-
136- # gmock_all_test is commented to save time building and running tests.
137- # Uncomment if necessary.
138- # cxx_test(gmock_all_test gmock_main)
139-
140- ############################################################
141- # C++ tests built with non-standard compiler flags.
142-
143- cxx_library(gmock_main_no_exception "${cxx_no_exception}"
144- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
145-
146- cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
147- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
148-
149- cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
150- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
151-
152- cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
153- gmock_main_no_exception test/gmock-more-actions_test.cc)
154-
155- cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}"
156- gmock_main_no_rtti test/gmock-spec-builders_test.cc)
157-
158- cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
159- gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
160-
161- cxx_shared_library(shared_gmock_main "${cxx_default}"
162- "${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
163-
164- # Tests that a binary can be built with Google Mock as a shared library. On
165- # some system configurations, it may not possible to run the binary without
166- # knowing more details about the system configurations. We do not try to run
167- # this binary. To get a more robust shared library coverage, configure with
168- # -DBUILD_SHARED_LIBS=ON.
169- cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}"
170- shared_gmock_main test/gmock-spec-builders_test.cc)
171- set_target_properties(shared_gmock_test_
172- PROPERTIES
173- COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
174-
175- ############################################################
176- # Python tests.
177-
178- cxx_executable(gmock_leak_test_ test gmock_main)
179- py_test(gmock_leak_test)
180-
181- cxx_executable(gmock_output_test_ test gmock)
182- py_test(gmock_output_test)
183-endif()
184
185=== removed directory '3rd_party/gmock/gtest'
186=== removed file '3rd_party/gmock/gtest/CHANGES'
187--- 3rd_party/gmock/gtest/CHANGES 2014-04-07 19:53:07 +0000
188+++ 3rd_party/gmock/gtest/CHANGES 1970-01-01 00:00:00 +0000
189@@ -1,153 +0,0 @@
190-Changes for 1.7.0:
191-
192-* New feature: death tests are supported on OpenBSD and in iOS
193- simulator now.
194-* New feature: Test::RecordProperty() can now be used outside of the
195- lifespan of a test method, in which case it will be attributed to
196- the current test case or the test program in the XML report.
197-* New feature (potentially breaking): --gtest_list_tests now prints
198- the type parameters and value parameters for each test.
199-* Improvement: char pointers and char arrays are now escaped properly
200- in failure messages.
201-* Improvement: failure summary in XML reports now includes file and
202- line information.
203-* Improvement: the <testsuites> XML element now has a timestamp attribute.
204-* Improvement: When --gtest_filter is specified, XML report now doesn't
205- contain information about tests that are filtered out.
206-* Fixed the bug where long --gtest_filter flag values are truncated in
207- death tests.
208-* Potentially breaking change: RUN_ALL_TESTS() is now implemented as a
209- function instead of a macro in order to work better with Clang.
210-* Compatibility fixes with C++ 11 and various platforms.
211-* Bug/warning fixes.
212-
213-Changes for 1.6.0:
214-
215-* New feature: ADD_FAILURE_AT() for reporting a test failure at the
216- given source location -- useful for writing testing utilities.
217-* New feature: the universal value printer is moved from Google Mock
218- to Google Test.
219-* New feature: type parameters and value parameters are reported in
220- the XML report now.
221-* A gtest_disable_pthreads CMake option.
222-* Colored output works in GNU Screen sessions now.
223-* Parameters of value-parameterized tests are now printed in the
224- textual output.
225-* Failures from ad hoc test assertions run before RUN_ALL_TESTS() are
226- now correctly reported.
227-* Arguments of ASSERT_XY and EXPECT_XY no longer need to support << to
228- ostream.
229-* More complete handling of exceptions.
230-* GTEST_ASSERT_XY can be used instead of ASSERT_XY in case the latter
231- name is already used by another library.
232-* --gtest_catch_exceptions is now true by default, allowing a test
233- program to continue after an exception is thrown.
234-* Value-parameterized test fixtures can now derive from Test and
235- WithParamInterface<T> separately, easing conversion of legacy tests.
236-* Death test messages are clearly marked to make them more
237- distinguishable from other messages.
238-* Compatibility fixes for Android, Google Native Client, MinGW, HP UX,
239- PowerPC, Lucid autotools, libCStd, Sun C++, Borland C++ Builder (Code Gear),
240- IBM XL C++ (Visual Age C++), and C++0x.
241-* Bug fixes and implementation clean-ups.
242-* Potentially incompatible changes: disables the harmful 'make install'
243- command in autotools.
244-
245-Changes for 1.5.0:
246-
247- * New feature: assertions can be safely called in multiple threads
248- where the pthreads library is available.
249- * New feature: predicates used inside EXPECT_TRUE() and friends
250- can now generate custom failure messages.
251- * New feature: Google Test can now be compiled as a DLL.
252- * New feature: fused source files are included.
253- * New feature: prints help when encountering unrecognized Google Test flags.
254- * Experimental feature: CMake build script (requires CMake 2.6.4+).
255- * Experimental feature: the Pump script for meta programming.
256- * double values streamed to an assertion are printed with enough precision
257- to differentiate any two different values.
258- * Google Test now works on Solaris and AIX.
259- * Build and test script improvements.
260- * Bug fixes and implementation clean-ups.
261-
262- Potentially breaking changes:
263-
264- * Stopped supporting VC++ 7.1 with exceptions disabled.
265- * Dropped support for 'make install'.
266-
267-Changes for 1.4.0:
268-
269- * New feature: the event listener API
270- * New feature: test shuffling
271- * New feature: the XML report format is closer to junitreport and can
272- be parsed by Hudson now.
273- * New feature: when a test runs under Visual Studio, its failures are
274- integrated in the IDE.
275- * New feature: /MD(d) versions of VC++ projects.
276- * New feature: elapsed time for the tests is printed by default.
277- * New feature: comes with a TR1 tuple implementation such that Boost
278- is no longer needed for Combine().
279- * New feature: EXPECT_DEATH_IF_SUPPORTED macro and friends.
280- * New feature: the Xcode project can now produce static gtest
281- libraries in addition to a framework.
282- * Compatibility fixes for Solaris, Cygwin, minGW, Windows Mobile,
283- Symbian, gcc, and C++Builder.
284- * Bug fixes and implementation clean-ups.
285-
286-Changes for 1.3.0:
287-
288- * New feature: death tests on Windows, Cygwin, and Mac.
289- * New feature: ability to use Google Test assertions in other testing
290- frameworks.
291- * New feature: ability to run disabled test via
292- --gtest_also_run_disabled_tests.
293- * New feature: the --help flag for printing the usage.
294- * New feature: access to Google Test flag values in user code.
295- * New feature: a script that packs Google Test into one .h and one
296- .cc file for easy deployment.
297- * New feature: support for distributing test functions to multiple
298- machines (requires support from the test runner).
299- * Bug fixes and implementation clean-ups.
300-
301-Changes for 1.2.1:
302-
303- * Compatibility fixes for Linux IA-64 and IBM z/OS.
304- * Added support for using Boost and other TR1 implementations.
305- * Changes to the build scripts to support upcoming release of Google C++
306- Mocking Framework.
307- * Added Makefile to the distribution package.
308- * Improved build instructions in README.
309-
310-Changes for 1.2.0:
311-
312- * New feature: value-parameterized tests.
313- * New feature: the ASSERT/EXPECT_(NON)FATAL_FAILURE(_ON_ALL_THREADS)
314- macros.
315- * Changed the XML report format to match JUnit/Ant's.
316- * Added tests to the Xcode project.
317- * Added scons/SConscript for building with SCons.
318- * Added src/gtest-all.cc for building Google Test from a single file.
319- * Fixed compatibility with Solaris and z/OS.
320- * Enabled running Python tests on systems with python 2.3 installed,
321- e.g. Mac OS X 10.4.
322- * Bug fixes.
323-
324-Changes for 1.1.0:
325-
326- * New feature: type-parameterized tests.
327- * New feature: exception assertions.
328- * New feature: printing elapsed time of tests.
329- * Improved the robustness of death tests.
330- * Added an Xcode project and samples.
331- * Adjusted the output format on Windows to be understandable by Visual Studio.
332- * Minor bug fixes.
333-
334-Changes for 1.0.1:
335-
336- * Added project files for Visual Studio 7.1.
337- * Fixed issues with compiling on Mac OS X.
338- * Fixed issues with compiling on Cygwin.
339-
340-Changes for 1.0.0:
341-
342- * Initial Open Source release of Google Test
343
344=== removed file '3rd_party/gmock/gtest/CMakeLists.txt'
345--- 3rd_party/gmock/gtest/CMakeLists.txt 2014-04-07 19:53:07 +0000
346+++ 3rd_party/gmock/gtest/CMakeLists.txt 1970-01-01 00:00:00 +0000
347@@ -1,250 +0,0 @@
348-########################################################################
349-# CMake build script for Google Test.
350-#
351-# To run the tests for Google Test itself on Linux, use 'make test' or
352-# ctest. You can select which tests to run using 'ctest -R regex'.
353-# For more options, run 'ctest --help'.
354-
355-# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
356-# make it prominent in the GUI.
357-option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
358-
359-# When other libraries are using a shared version of runtime libraries,
360-# Google Test also has to use one.
361-option(
362- gtest_force_shared_crt
363- "Use shared (DLL) run-time lib even when Google Test is built as static lib."
364- OFF)
365-
366-option(gtest_build_tests "Build all of gtest's own tests." OFF)
367-
368-option(gtest_build_samples "Build gtest's sample programs." OFF)
369-
370-option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF)
371-
372-# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
373-include(cmake/hermetic_build.cmake OPTIONAL)
374-
375-if (COMMAND pre_project_set_up_hermetic_build)
376- pre_project_set_up_hermetic_build()
377-endif()
378-
379-########################################################################
380-#
381-# Project-wide settings
382-
383-# Name of the project.
384-#
385-# CMake files in this project can refer to the root source directory
386-# as ${gtest_SOURCE_DIR} and to the root binary directory as
387-# ${gtest_BINARY_DIR}.
388-# Language "C" is required for find_package(Threads).
389-project(gtest CXX C)
390-cmake_minimum_required(VERSION 2.6.2)
391-
392-if (COMMAND set_up_hermetic_build)
393- set_up_hermetic_build()
394-endif()
395-
396-# Define helper functions and macros used by Google Test.
397-include(cmake/internal_utils.cmake)
398-
399-config_compiler_and_linker() # Defined in internal_utils.cmake.
400-
401-# Where Google Test's .h files can be found.
402-include_directories(
403- ${gtest_SOURCE_DIR}/include
404- ${gtest_SOURCE_DIR})
405-
406-# Where Google Test's libraries can be found.
407-link_directories(${gtest_BINARY_DIR}/src)
408-
409-########################################################################
410-#
411-# Defines the gtest & gtest_main libraries. User tests should link
412-# with one of them.
413-
414-# Google Test libraries. We build them using more strict warnings than what
415-# are used for other targets, to ensure that gtest can be compiled by a user
416-# aggressive about warnings.
417-cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
418-cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
419-target_link_libraries(gtest_main gtest)
420-
421-########################################################################
422-#
423-# Samples on how to link user tests with gtest or gtest_main.
424-#
425-# They are not built by default. To build them, set the
426-# gtest_build_samples option to ON. You can do it by running ccmake
427-# or specifying the -Dbuild_gtest_samples=ON flag when running cmake.
428-
429-if (gtest_build_samples)
430- cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc)
431- cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc)
432- cxx_executable(sample3_unittest samples gtest_main)
433- cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc)
434- cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc)
435- cxx_executable(sample6_unittest samples gtest_main)
436- cxx_executable(sample7_unittest samples gtest_main)
437- cxx_executable(sample8_unittest samples gtest_main)
438- cxx_executable(sample9_unittest samples gtest)
439- cxx_executable(sample10_unittest samples gtest)
440-endif()
441-
442-########################################################################
443-#
444-# Google Test's own tests.
445-#
446-# You can skip this section if you aren't interested in testing
447-# Google Test itself.
448-#
449-# The tests are not built by default. To build them, set the
450-# gtest_build_tests option to ON. You can do it by running ccmake
451-# or specifying the -Dgtest_build_tests=ON flag when running cmake.
452-
453-if (gtest_build_tests)
454- # This must be set in the root directory for the tests to be run by
455- # 'make test' or ctest.
456- enable_testing()
457-
458- ############################################################
459- # C++ tests built with standard compiler flags.
460-
461- cxx_test(gtest-death-test_test gtest_main)
462- cxx_test(gtest_environment_test gtest)
463- cxx_test(gtest-filepath_test gtest_main)
464- cxx_test(gtest-linked_ptr_test gtest_main)
465- cxx_test(gtest-listener_test gtest_main)
466- cxx_test(gtest_main_unittest gtest_main)
467- cxx_test(gtest-message_test gtest_main)
468- cxx_test(gtest_no_test_unittest gtest)
469- cxx_test(gtest-options_test gtest_main)
470- cxx_test(gtest-param-test_test gtest
471- test/gtest-param-test2_test.cc)
472- cxx_test(gtest-port_test gtest_main)
473- cxx_test(gtest_pred_impl_unittest gtest_main)
474- cxx_test(gtest-printers_test gtest_main)
475- cxx_test(gtest_prod_test gtest_main
476- test/production.cc)
477- cxx_test(gtest_repeat_test gtest)
478- cxx_test(gtest_sole_header_test gtest_main)
479- cxx_test(gtest_stress_test gtest)
480- cxx_test(gtest-test-part_test gtest_main)
481- cxx_test(gtest_throw_on_failure_ex_test gtest)
482- cxx_test(gtest-typed-test_test gtest_main
483- test/gtest-typed-test2_test.cc)
484- cxx_test(gtest_unittest gtest_main)
485- cxx_test(gtest-unittest-api_test gtest)
486-
487- ############################################################
488- # C++ tests built with non-standard compiler flags.
489-
490- # MSVC 7.1 does not support STL with exceptions disabled.
491- if (NOT MSVC OR MSVC_VERSION GREATER 1310)
492- cxx_library(gtest_no_exception "${cxx_no_exception}"
493- src/gtest-all.cc)
494- cxx_library(gtest_main_no_exception "${cxx_no_exception}"
495- src/gtest-all.cc src/gtest_main.cc)
496- endif()
497- cxx_library(gtest_main_no_rtti "${cxx_no_rtti}"
498- src/gtest-all.cc src/gtest_main.cc)
499-
500- cxx_test_with_flags(gtest-death-test_ex_nocatch_test
501- "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0"
502- gtest test/gtest-death-test_ex_test.cc)
503- cxx_test_with_flags(gtest-death-test_ex_catch_test
504- "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1"
505- gtest test/gtest-death-test_ex_test.cc)
506-
507- cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}"
508- gtest_main_no_rtti test/gtest_unittest.cc)
509-
510- cxx_shared_library(gtest_dll "${cxx_default}"
511- src/gtest-all.cc src/gtest_main.cc)
512-
513- cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}"
514- gtest_dll test/gtest_all_test.cc)
515- set_target_properties(gtest_dll_test_
516- PROPERTIES
517- COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
518-
519- if (NOT MSVC OR NOT MSVC_VERSION EQUAL 1600)
520- # The C++ Standard specifies tuple_element<int, class>.
521- # Yet MSVC 10's <utility> declares tuple_element<size_t, class>.
522- # That declaration conflicts with our own standard-conforming
523- # tuple implementation. Therefore using our own tuple with
524- # MSVC 10 doesn't compile.
525- cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
526- src/gtest-all.cc src/gtest_main.cc)
527-
528- cxx_test_with_flags(gtest-tuple_test "${cxx_use_own_tuple}"
529- gtest_main_use_own_tuple test/gtest-tuple_test.cc)
530-
531- cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}"
532- gtest_main_use_own_tuple
533- test/gtest-param-test_test.cc test/gtest-param-test2_test.cc)
534- endif()
535-
536- ############################################################
537- # Python tests.
538-
539- cxx_executable(gtest_break_on_failure_unittest_ test gtest)
540- py_test(gtest_break_on_failure_unittest)
541-
542- # MSVC 7.1 does not support STL with exceptions disabled.
543- if (NOT MSVC OR MSVC_VERSION GREATER 1310)
544- cxx_executable_with_flags(
545- gtest_catch_exceptions_no_ex_test_
546- "${cxx_no_exception}"
547- gtest_main_no_exception
548- test/gtest_catch_exceptions_test_.cc)
549- endif()
550-
551- cxx_executable_with_flags(
552- gtest_catch_exceptions_ex_test_
553- "${cxx_exception}"
554- gtest_main
555- test/gtest_catch_exceptions_test_.cc)
556- py_test(gtest_catch_exceptions_test)
557-
558- cxx_executable(gtest_color_test_ test gtest)
559- py_test(gtest_color_test)
560-
561- cxx_executable(gtest_env_var_test_ test gtest)
562- py_test(gtest_env_var_test)
563-
564- cxx_executable(gtest_filter_unittest_ test gtest)
565- py_test(gtest_filter_unittest)
566-
567- cxx_executable(gtest_help_test_ test gtest_main)
568- py_test(gtest_help_test)
569-
570- cxx_executable(gtest_list_tests_unittest_ test gtest)
571- py_test(gtest_list_tests_unittest)
572-
573- cxx_executable(gtest_output_test_ test gtest)
574- py_test(gtest_output_test)
575-
576- cxx_executable(gtest_shuffle_test_ test gtest)
577- py_test(gtest_shuffle_test)
578-
579- # MSVC 7.1 does not support STL with exceptions disabled.
580- if (NOT MSVC OR MSVC_VERSION GREATER 1310)
581- cxx_executable(gtest_throw_on_failure_test_ test gtest_no_exception)
582- set_target_properties(gtest_throw_on_failure_test_
583- PROPERTIES
584- COMPILE_FLAGS "${cxx_no_exception}")
585- py_test(gtest_throw_on_failure_test)
586- endif()
587-
588- cxx_executable(gtest_uninitialized_test_ test gtest)
589- py_test(gtest_uninitialized_test)
590-
591- cxx_executable(gtest_xml_outfile1_test_ test gtest_main)
592- cxx_executable(gtest_xml_outfile2_test_ test gtest_main)
593- py_test(gtest_xml_outfiles_test)
594-
595- cxx_executable(gtest_xml_output_unittest_ test gtest)
596- py_test(gtest_xml_output_unittest)
597-endif()
598
599=== removed file '3rd_party/gmock/gtest/CONTRIBUTORS'
600--- 3rd_party/gmock/gtest/CONTRIBUTORS 2014-04-07 19:53:07 +0000
601+++ 3rd_party/gmock/gtest/CONTRIBUTORS 1970-01-01 00:00:00 +0000
602@@ -1,37 +0,0 @@
603-# This file contains a list of people who've made non-trivial
604-# contribution to the Google C++ Testing Framework project. People
605-# who commit code to the project are encouraged to add their names
606-# here. Please keep the list sorted by first names.
607-
608-Ajay Joshi <jaj@google.com>
609-Balázs Dán <balazs.dan@gmail.com>
610-Bharat Mediratta <bharat@menalto.com>
611-Chandler Carruth <chandlerc@google.com>
612-Chris Prince <cprince@google.com>
613-Chris Taylor <taylorc@google.com>
614-Dan Egnor <egnor@google.com>
615-Eric Roman <eroman@chromium.org>
616-Hady Zalek <hady.zalek@gmail.com>
617-Jeffrey Yasskin <jyasskin@google.com>
618-Jói Sigurðsson <joi@google.com>
619-Keir Mierle <mierle@gmail.com>
620-Keith Ray <keith.ray@gmail.com>
621-Kenton Varda <kenton@google.com>
622-Manuel Klimek <klimek@google.com>
623-Markus Heule <markus.heule@gmail.com>
624-Mika Raento <mikie@iki.fi>
625-Miklós Fazekas <mfazekas@szemafor.com>
626-Pasi Valminen <pasi.valminen@gmail.com>
627-Patrick Hanna <phanna@google.com>
628-Patrick Riley <pfr@google.com>
629-Peter Kaminski <piotrk@google.com>
630-Preston Jackson <preston.a.jackson@gmail.com>
631-Rainer Klaffenboeck <rainer.klaffenboeck@dynatrace.com>
632-Russ Cox <rsc@google.com>
633-Russ Rufer <russ@pentad.com>
634-Sean Mcafee <eefacm@gmail.com>
635-Sigurður Ásgeirsson <siggi@google.com>
636-Tracy Bialik <tracy@pentad.com>
637-Vadim Berman <vadimb@google.com>
638-Vlad Losev <vladl@google.com>
639-Zhanyong Wan <wan@google.com>
640
641=== removed file '3rd_party/gmock/gtest/Makefile.am'
642--- 3rd_party/gmock/gtest/Makefile.am 2014-04-07 19:53:07 +0000
643+++ 3rd_party/gmock/gtest/Makefile.am 1970-01-01 00:00:00 +0000
644@@ -1,305 +0,0 @@
645-# Automake file
646-
647-ACLOCAL_AMFLAGS = -I m4
648-
649-# Nonstandard package files for distribution
650-EXTRA_DIST = \
651- CHANGES \
652- CONTRIBUTORS \
653- LICENSE \
654- include/gtest/gtest-param-test.h.pump \
655- include/gtest/internal/gtest-param-util-generated.h.pump \
656- include/gtest/internal/gtest-tuple.h.pump \
657- include/gtest/internal/gtest-type-util.h.pump \
658- make/Makefile \
659- scripts/fuse_gtest_files.py \
660- scripts/gen_gtest_pred_impl.py \
661- scripts/pump.py \
662- scripts/test/Makefile
663-
664-# gtest source files that we don't compile directly. They are
665-# #included by gtest-all.cc.
666-GTEST_SRC = \
667- src/gtest-death-test.cc \
668- src/gtest-filepath.cc \
669- src/gtest-internal-inl.h \
670- src/gtest-port.cc \
671- src/gtest-printers.cc \
672- src/gtest-test-part.cc \
673- src/gtest-typed-test.cc \
674- src/gtest.cc
675-
676-EXTRA_DIST += $(GTEST_SRC)
677-
678-# Sample files that we don't compile.
679-EXTRA_DIST += \
680- samples/prime_tables.h \
681- samples/sample2_unittest.cc \
682- samples/sample3_unittest.cc \
683- samples/sample4_unittest.cc \
684- samples/sample5_unittest.cc \
685- samples/sample6_unittest.cc \
686- samples/sample7_unittest.cc \
687- samples/sample8_unittest.cc \
688- samples/sample9_unittest.cc
689-
690-# C++ test files that we don't compile directly.
691-EXTRA_DIST += \
692- test/gtest-death-test_ex_test.cc \
693- test/gtest-death-test_test.cc \
694- test/gtest-filepath_test.cc \
695- test/gtest-linked_ptr_test.cc \
696- test/gtest-listener_test.cc \
697- test/gtest-message_test.cc \
698- test/gtest-options_test.cc \
699- test/gtest-param-test2_test.cc \
700- test/gtest-param-test2_test.cc \
701- test/gtest-param-test_test.cc \
702- test/gtest-param-test_test.cc \
703- test/gtest-param-test_test.h \
704- test/gtest-port_test.cc \
705- test/gtest-printers_test.cc \
706- test/gtest-test-part_test.cc \
707- test/gtest-tuple_test.cc \
708- test/gtest-typed-test2_test.cc \
709- test/gtest-typed-test_test.cc \
710- test/gtest-typed-test_test.h \
711- test/gtest-unittest-api_test.cc \
712- test/gtest_break_on_failure_unittest_.cc \
713- test/gtest_catch_exceptions_test_.cc \
714- test/gtest_color_test_.cc \
715- test/gtest_env_var_test_.cc \
716- test/gtest_environment_test.cc \
717- test/gtest_filter_unittest_.cc \
718- test/gtest_help_test_.cc \
719- test/gtest_list_tests_unittest_.cc \
720- test/gtest_main_unittest.cc \
721- test/gtest_no_test_unittest.cc \
722- test/gtest_output_test_.cc \
723- test/gtest_pred_impl_unittest.cc \
724- test/gtest_prod_test.cc \
725- test/gtest_repeat_test.cc \
726- test/gtest_shuffle_test_.cc \
727- test/gtest_sole_header_test.cc \
728- test/gtest_stress_test.cc \
729- test/gtest_throw_on_failure_ex_test.cc \
730- test/gtest_throw_on_failure_test_.cc \
731- test/gtest_uninitialized_test_.cc \
732- test/gtest_unittest.cc \
733- test/gtest_unittest.cc \
734- test/gtest_xml_outfile1_test_.cc \
735- test/gtest_xml_outfile2_test_.cc \
736- test/gtest_xml_output_unittest_.cc \
737- test/production.cc \
738- test/production.h
739-
740-# Python tests that we don't run.
741-EXTRA_DIST += \
742- test/gtest_break_on_failure_unittest.py \
743- test/gtest_catch_exceptions_test.py \
744- test/gtest_color_test.py \
745- test/gtest_env_var_test.py \
746- test/gtest_filter_unittest.py \
747- test/gtest_help_test.py \
748- test/gtest_list_tests_unittest.py \
749- test/gtest_output_test.py \
750- test/gtest_output_test_golden_lin.txt \
751- test/gtest_shuffle_test.py \
752- test/gtest_test_utils.py \
753- test/gtest_throw_on_failure_test.py \
754- test/gtest_uninitialized_test.py \
755- test/gtest_xml_outfiles_test.py \
756- test/gtest_xml_output_unittest.py \
757- test/gtest_xml_test_utils.py
758-
759-# CMake script
760-EXTRA_DIST += \
761- CMakeLists.txt \
762- cmake/internal_utils.cmake
763-
764-# MSVC project files
765-EXTRA_DIST += \
766- msvc/gtest-md.sln \
767- msvc/gtest-md.vcproj \
768- msvc/gtest.sln \
769- msvc/gtest.vcproj \
770- msvc/gtest_main-md.vcproj \
771- msvc/gtest_main.vcproj \
772- msvc/gtest_prod_test-md.vcproj \
773- msvc/gtest_prod_test.vcproj \
774- msvc/gtest_unittest-md.vcproj \
775- msvc/gtest_unittest.vcproj
776-
777-# xcode project files
778-EXTRA_DIST += \
779- xcode/Config/DebugProject.xcconfig \
780- xcode/Config/FrameworkTarget.xcconfig \
781- xcode/Config/General.xcconfig \
782- xcode/Config/ReleaseProject.xcconfig \
783- xcode/Config/StaticLibraryTarget.xcconfig \
784- xcode/Config/TestTarget.xcconfig \
785- xcode/Resources/Info.plist \
786- xcode/Scripts/runtests.sh \
787- xcode/Scripts/versiongenerate.py \
788- xcode/gtest.xcodeproj/project.pbxproj
789-
790-# xcode sample files
791-EXTRA_DIST += \
792- xcode/Samples/FrameworkSample/Info.plist \
793- xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \
794- xcode/Samples/FrameworkSample/runtests.sh \
795- xcode/Samples/FrameworkSample/widget.cc \
796- xcode/Samples/FrameworkSample/widget.h \
797- xcode/Samples/FrameworkSample/widget_test.cc
798-
799-# C++Builder project files
800-EXTRA_DIST += \
801- codegear/gtest.cbproj \
802- codegear/gtest.groupproj \
803- codegear/gtest_all.cc \
804- codegear/gtest_link.cc \
805- codegear/gtest_main.cbproj \
806- codegear/gtest_unittest.cbproj
807-
808-# Distribute and install M4 macro
809-m4datadir = $(datadir)/aclocal
810-m4data_DATA = m4/gtest.m4
811-EXTRA_DIST += $(m4data_DATA)
812-
813-# We define the global AM_CPPFLAGS as everything we compile includes from these
814-# directories.
815-AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include
816-
817-# Modifies compiler and linker flags for pthreads compatibility.
818-if HAVE_PTHREADS
819- AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1
820- AM_LIBS = @PTHREAD_LIBS@
821-else
822- AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0
823-endif
824-
825-# Build rules for libraries.
826-lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la
827-
828-lib_libgtest_la_SOURCES = src/gtest-all.cc
829-
830-pkginclude_HEADERS = \
831- include/gtest/gtest-death-test.h \
832- include/gtest/gtest-message.h \
833- include/gtest/gtest-param-test.h \
834- include/gtest/gtest-printers.h \
835- include/gtest/gtest-spi.h \
836- include/gtest/gtest-test-part.h \
837- include/gtest/gtest-typed-test.h \
838- include/gtest/gtest.h \
839- include/gtest/gtest_pred_impl.h \
840- include/gtest/gtest_prod.h
841-
842-pkginclude_internaldir = $(pkgincludedir)/internal
843-pkginclude_internal_HEADERS = \
844- include/gtest/internal/gtest-death-test-internal.h \
845- include/gtest/internal/gtest-filepath.h \
846- include/gtest/internal/gtest-internal.h \
847- include/gtest/internal/gtest-linked_ptr.h \
848- include/gtest/internal/gtest-param-util-generated.h \
849- include/gtest/internal/gtest-param-util.h \
850- include/gtest/internal/gtest-port.h \
851- include/gtest/internal/gtest-string.h \
852- include/gtest/internal/gtest-tuple.h \
853- include/gtest/internal/gtest-type-util.h
854-
855-lib_libgtest_main_la_SOURCES = src/gtest_main.cc
856-lib_libgtest_main_la_LIBADD = lib/libgtest.la
857-
858-# Bulid rules for samples and tests. Automake's naming for some of
859-# these variables isn't terribly obvious, so this is a brief
860-# reference:
861-#
862-# TESTS -- Programs run automatically by "make check"
863-# check_PROGRAMS -- Programs built by "make check" but not necessarily run
864-
865-noinst_LTLIBRARIES = samples/libsamples.la
866-
867-samples_libsamples_la_SOURCES = \
868- samples/sample1.cc \
869- samples/sample1.h \
870- samples/sample2.cc \
871- samples/sample2.h \
872- samples/sample3-inl.h \
873- samples/sample4.cc \
874- samples/sample4.h
875-
876-TESTS=
877-TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \
878- GTEST_BUILD_DIR="$(top_builddir)/test"
879-check_PROGRAMS=
880-
881-# A simple sample on using gtest.
882-TESTS += samples/sample1_unittest
883-check_PROGRAMS += samples/sample1_unittest
884-samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc
885-samples_sample1_unittest_LDADD = lib/libgtest_main.la \
886- lib/libgtest.la \
887- samples/libsamples.la
888-
889-# Another sample. It also verifies that libgtest works.
890-TESTS += samples/sample10_unittest
891-check_PROGRAMS += samples/sample10_unittest
892-samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc
893-samples_sample10_unittest_LDADD = lib/libgtest.la
894-
895-# This tests most constructs of gtest and verifies that libgtest_main
896-# and libgtest work.
897-TESTS += test/gtest_all_test
898-check_PROGRAMS += test/gtest_all_test
899-test_gtest_all_test_SOURCES = test/gtest_all_test.cc
900-test_gtest_all_test_LDADD = lib/libgtest_main.la \
901- lib/libgtest.la
902-
903-# Tests that fused gtest files compile and work.
904-FUSED_GTEST_SRC = \
905- fused-src/gtest/gtest-all.cc \
906- fused-src/gtest/gtest.h \
907- fused-src/gtest/gtest_main.cc
908-
909-if HAVE_PYTHON
910-TESTS += test/fused_gtest_test
911-check_PROGRAMS += test/fused_gtest_test
912-test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \
913- samples/sample1.cc samples/sample1_unittest.cc
914-test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src"
915-
916-# Build rules for putting fused Google Test files into the distribution
917-# package. The user can also create those files by manually running
918-# scripts/fuse_gtest_files.py.
919-$(test_fused_gtest_test_SOURCES): fused-gtest
920-
921-fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
922- $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \
923- scripts/fuse_gtest_files.py
924- mkdir -p "$(srcdir)/fused-src"
925- chmod -R u+w "$(srcdir)/fused-src"
926- rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc"
927- rm -f "$(srcdir)/fused-src/gtest/gtest.h"
928- "$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src"
929- cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/"
930-
931-maintainer-clean-local:
932- rm -rf "$(srcdir)/fused-src"
933-endif
934-
935-# Death tests may produce core dumps in the build directory. In case
936-# this happens, clean them to keep distcleancheck happy.
937-CLEANFILES = core
938-
939-# Disables 'make install' as installing a compiled version of Google
940-# Test can lead to undefined behavior due to violation of the
941-# One-Definition Rule.
942-
943-install-exec-local:
944- echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
945- false
946-
947-install-data-local:
948- echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
949- false
950
951=== removed file '3rd_party/gmock/gtest/README'
952--- 3rd_party/gmock/gtest/README 2014-04-07 19:53:07 +0000
953+++ 3rd_party/gmock/gtest/README 1970-01-01 00:00:00 +0000
954@@ -1,435 +0,0 @@
955-Google C++ Testing Framework
956-============================
957-
958-http://code.google.com/p/googletest/
959-
960-Overview
961---------
962-
963-Google's framework for writing C++ tests on a variety of platforms
964-(Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Based on the
965-xUnit architecture. Supports automatic test discovery, a rich set of
966-assertions, user-defined assertions, death tests, fatal and non-fatal
967-failures, various options for running the tests, and XML test report
968-generation.
969-
970-Please see the project page above for more information as well as the
971-mailing list for questions, discussions, and development. There is
972-also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please
973-join us!
974-
975-Requirements for End Users
976---------------------------
977-
978-Google Test is designed to have fairly minimal requirements to build
979-and use with your projects, but there are some. Currently, we support
980-Linux, Windows, Mac OS X, and Cygwin. We will also make our best
981-effort to support other platforms (e.g. Solaris, AIX, and z/OS).
982-However, since core members of the Google Test project have no access
983-to these platforms, Google Test may have outstanding issues there. If
984-you notice any problems on your platform, please notify
985-googletestframework@googlegroups.com. Patches for fixing them are
986-even more welcome!
987-
988-### Linux Requirements ###
989-
990-These are the base requirements to build and use Google Test from a source
991-package (as described below):
992- * GNU-compatible Make or gmake
993- * POSIX-standard shell
994- * POSIX(-2) Regular Expressions (regex.h)
995- * A C++98-standard-compliant compiler
996-
997-### Windows Requirements ###
998-
999- * Microsoft Visual C++ 7.1 or newer
1000-
1001-### Cygwin Requirements ###
1002-
1003- * Cygwin 1.5.25-14 or newer
1004-
1005-### Mac OS X Requirements ###
1006-
1007- * Mac OS X 10.4 Tiger or newer
1008- * Developer Tools Installed
1009-
1010-Also, you'll need CMake 2.6.4 or higher if you want to build the
1011-samples using the provided CMake script, regardless of the platform.
1012-
1013-Requirements for Contributors
1014------------------------------
1015-
1016-We welcome patches. If you plan to contribute a patch, you need to
1017-build Google Test and its own tests from an SVN checkout (described
1018-below), which has further requirements:
1019-
1020- * Python version 2.3 or newer (for running some of the tests and
1021- re-generating certain source files from templates)
1022- * CMake 2.6.4 or newer
1023-
1024-Getting the Source
1025-------------------
1026-
1027-There are two primary ways of getting Google Test's source code: you
1028-can download a stable source release in your preferred archive format,
1029-or directly check out the source from our Subversion (SVN) repositary.
1030-The SVN checkout requires a few extra steps and some extra software
1031-packages on your system, but lets you track the latest development and
1032-make patches much more easily, so we highly encourage it.
1033-
1034-### Source Package ###
1035-
1036-Google Test is released in versioned source packages which can be
1037-downloaded from the download page [1]. Several different archive
1038-formats are provided, but the only difference is the tools used to
1039-manipulate them, and the size of the resulting file. Download
1040-whichever you are most comfortable with.
1041-
1042- [1] http://code.google.com/p/googletest/downloads/list
1043-
1044-Once the package is downloaded, expand it using whichever tools you
1045-prefer for that type. This will result in a new directory with the
1046-name "gtest-X.Y.Z" which contains all of the source code. Here are
1047-some examples on Linux:
1048-
1049- tar -xvzf gtest-X.Y.Z.tar.gz
1050- tar -xvjf gtest-X.Y.Z.tar.bz2
1051- unzip gtest-X.Y.Z.zip
1052-
1053-### SVN Checkout ###
1054-
1055-To check out the main branch (also known as the "trunk") of Google
1056-Test, run the following Subversion command:
1057-
1058- svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
1059-
1060-Setting up the Build
1061---------------------
1062-
1063-To build Google Test and your tests that use it, you need to tell your
1064-build system where to find its headers and source files. The exact
1065-way to do it depends on which build system you use, and is usually
1066-straightforward.
1067-
1068-### Generic Build Instructions ###
1069-
1070-Suppose you put Google Test in directory ${GTEST_DIR}. To build it,
1071-create a library build target (or a project as called by Visual Studio
1072-and Xcode) to compile
1073-
1074- ${GTEST_DIR}/src/gtest-all.cc
1075-
1076-with ${GTEST_DIR}/include in the system header search path and ${GTEST_DIR}
1077-in the normal header search path. Assuming a Linux-like system and gcc,
1078-something like the following will do:
1079-
1080- g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
1081- -pthread -c ${GTEST_DIR}/src/gtest-all.cc
1082- ar -rv libgtest.a gtest-all.o
1083-
1084-(We need -pthread as Google Test uses threads.)
1085-
1086-Next, you should compile your test source file with
1087-${GTEST_DIR}/include in the system header search path, and link it
1088-with gtest and any other necessary libraries:
1089-
1090- g++ -isystem ${GTEST_DIR}/include -pthread path/to/your_test.cc libgtest.a \
1091- -o your_test
1092-
1093-As an example, the make/ directory contains a Makefile that you can
1094-use to build Google Test on systems where GNU make is available
1095-(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google
1096-Test's own tests. Instead, it just builds the Google Test library and
1097-a sample test. You can use it as a starting point for your own build
1098-script.
1099-
1100-If the default settings are correct for your environment, the
1101-following commands should succeed:
1102-
1103- cd ${GTEST_DIR}/make
1104- make
1105- ./sample1_unittest
1106-
1107-If you see errors, try to tweak the contents of make/Makefile to make
1108-them go away. There are instructions in make/Makefile on how to do
1109-it.
1110-
1111-### Using CMake ###
1112-
1113-Google Test comes with a CMake build script (CMakeLists.txt) that can
1114-be used on a wide range of platforms ("C" stands for cross-platofrm.).
1115-If you don't have CMake installed already, you can download it for
1116-free from http://www.cmake.org/.
1117-
1118-CMake works by generating native makefiles or build projects that can
1119-be used in the compiler environment of your choice. The typical
1120-workflow starts with:
1121-
1122- mkdir mybuild # Create a directory to hold the build output.
1123- cd mybuild
1124- cmake ${GTEST_DIR} # Generate native build scripts.
1125-
1126-If you want to build Google Test's samples, you should replace the
1127-last command with
1128-
1129- cmake -Dgtest_build_samples=ON ${GTEST_DIR}
1130-
1131-If you are on a *nix system, you should now see a Makefile in the
1132-current directory. Just type 'make' to build gtest.
1133-
1134-If you use Windows and have Vistual Studio installed, a gtest.sln file
1135-and several .vcproj files will be created. You can then build them
1136-using Visual Studio.
1137-
1138-On Mac OS X with Xcode installed, a .xcodeproj file will be generated.
1139-
1140-### Legacy Build Scripts ###
1141-
1142-Before settling on CMake, we have been providing hand-maintained build
1143-projects/scripts for Visual Studio, Xcode, and Autotools. While we
1144-continue to provide them for convenience, they are not actively
1145-maintained any more. We highly recommend that you follow the
1146-instructions in the previous two sections to integrate Google Test
1147-with your existing build system.
1148-
1149-If you still need to use the legacy build scripts, here's how:
1150-
1151-The msvc\ folder contains two solutions with Visual C++ projects.
1152-Open the gtest.sln or gtest-md.sln file using Visual Studio, and you
1153-are ready to build Google Test the same way you build any Visual
1154-Studio project. Files that have names ending with -md use DLL
1155-versions of Microsoft runtime libraries (the /MD or the /MDd compiler
1156-option). Files without that suffix use static versions of the runtime
1157-libraries (the /MT or the /MTd option). Please note that one must use
1158-the same option to compile both gtest and the test code. If you use
1159-Visual Studio 2005 or above, we recommend the -md version as /MD is
1160-the default for new projects in these versions of Visual Studio.
1161-
1162-On Mac OS X, open the gtest.xcodeproj in the xcode/ folder using
1163-Xcode. Build the "gtest" target. The universal binary framework will
1164-end up in your selected build directory (selected in the Xcode
1165-"Preferences..." -> "Building" pane and defaults to xcode/build).
1166-Alternatively, at the command line, enter:
1167-
1168- xcodebuild
1169-
1170-This will build the "Release" configuration of gtest.framework in your
1171-default build location. See the "xcodebuild" man page for more
1172-information about building different configurations and building in
1173-different locations.
1174-
1175-If you wish to use the Google Test Xcode project with Xcode 4.x and
1176-above, you need to either:
1177- * update the SDK configuration options in xcode/Config/General.xconfig.
1178- Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If
1179- you choose this route you lose the ability to target earlier versions
1180- of MacOS X.
1181- * Install an SDK for an earlier version. This doesn't appear to be
1182- supported by Apple, but has been reported to work
1183- (http://stackoverflow.com/questions/5378518).
1184-
1185-Tweaking Google Test
1186---------------------
1187-
1188-Google Test can be used in diverse environments. The default
1189-configuration may not work (or may not work well) out of the box in
1190-some environments. However, you can easily tweak Google Test by
1191-defining control macros on the compiler command line. Generally,
1192-these macros are named like GTEST_XYZ and you define them to either 1
1193-or 0 to enable or disable a certain feature.
1194-
1195-We list the most frequently used macros below. For a complete list,
1196-see file include/gtest/internal/gtest-port.h.
1197-
1198-### Choosing a TR1 Tuple Library ###
1199-
1200-Some Google Test features require the C++ Technical Report 1 (TR1)
1201-tuple library, which is not yet available with all compilers. The
1202-good news is that Google Test implements a subset of TR1 tuple that's
1203-enough for its own need, and will automatically use this when the
1204-compiler doesn't provide TR1 tuple.
1205-
1206-Usually you don't need to care about which tuple library Google Test
1207-uses. However, if your project already uses TR1 tuple, you need to
1208-tell Google Test to use the same TR1 tuple library the rest of your
1209-project uses, or the two tuple implementations will clash. To do
1210-that, add
1211-
1212- -DGTEST_USE_OWN_TR1_TUPLE=0
1213-
1214-to the compiler flags while compiling Google Test and your tests. If
1215-you want to force Google Test to use its own tuple library, just add
1216-
1217- -DGTEST_USE_OWN_TR1_TUPLE=1
1218-
1219-to the compiler flags instead.
1220-
1221-If you don't want Google Test to use tuple at all, add
1222-
1223- -DGTEST_HAS_TR1_TUPLE=0
1224-
1225-and all features using tuple will be disabled.
1226-
1227-### Multi-threaded Tests ###
1228-
1229-Google Test is thread-safe where the pthread library is available.
1230-After #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE
1231-macro to see whether this is the case (yes if the macro is #defined to
1232-1, no if it's undefined.).
1233-
1234-If Google Test doesn't correctly detect whether pthread is available
1235-in your environment, you can force it with
1236-
1237- -DGTEST_HAS_PTHREAD=1
1238-
1239-or
1240-
1241- -DGTEST_HAS_PTHREAD=0
1242-
1243-When Google Test uses pthread, you may need to add flags to your
1244-compiler and/or linker to select the pthread library, or you'll get
1245-link errors. If you use the CMake script or the deprecated Autotools
1246-script, this is taken care of for you. If you use your own build
1247-script, you'll need to read your compiler and linker's manual to
1248-figure out what flags to add.
1249-
1250-### As a Shared Library (DLL) ###
1251-
1252-Google Test is compact, so most users can build and link it as a
1253-static library for the simplicity. You can choose to use Google Test
1254-as a shared library (known as a DLL on Windows) if you prefer.
1255-
1256-To compile *gtest* as a shared library, add
1257-
1258- -DGTEST_CREATE_SHARED_LIBRARY=1
1259-
1260-to the compiler flags. You'll also need to tell the linker to produce
1261-a shared library instead - consult your linker's manual for how to do
1262-it.
1263-
1264-To compile your *tests* that use the gtest shared library, add
1265-
1266- -DGTEST_LINKED_AS_SHARED_LIBRARY=1
1267-
1268-to the compiler flags.
1269-
1270-Note: while the above steps aren't technically necessary today when
1271-using some compilers (e.g. GCC), they may become necessary in the
1272-future, if we decide to improve the speed of loading the library (see
1273-http://gcc.gnu.org/wiki/Visibility for details). Therefore you are
1274-recommended to always add the above flags when using Google Test as a
1275-shared library. Otherwise a future release of Google Test may break
1276-your build script.
1277-
1278-### Avoiding Macro Name Clashes ###
1279-
1280-In C++, macros don't obey namespaces. Therefore two libraries that
1281-both define a macro of the same name will clash if you #include both
1282-definitions. In case a Google Test macro clashes with another
1283-library, you can force Google Test to rename its macro to avoid the
1284-conflict.
1285-
1286-Specifically, if both Google Test and some other code define macro
1287-FOO, you can add
1288-
1289- -DGTEST_DONT_DEFINE_FOO=1
1290-
1291-to the compiler flags to tell Google Test to change the macro's name
1292-from FOO to GTEST_FOO. Currently FOO can be FAIL, SUCCEED, or TEST.
1293-For example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write
1294-
1295- GTEST_TEST(SomeTest, DoesThis) { ... }
1296-
1297-instead of
1298-
1299- TEST(SomeTest, DoesThis) { ... }
1300-
1301-in order to define a test.
1302-
1303-Upgrating from an Earlier Version
1304----------------------------------
1305-
1306-We strive to keep Google Test releases backward compatible.
1307-Sometimes, though, we have to make some breaking changes for the
1308-users' long-term benefits. This section describes what you'll need to
1309-do if you are upgrading from an earlier version of Google Test.
1310-
1311-### Upgrading from 1.3.0 or Earlier ###
1312-
1313-You may need to explicitly enable or disable Google Test's own TR1
1314-tuple library. See the instructions in section "Choosing a TR1 Tuple
1315-Library".
1316-
1317-### Upgrading from 1.4.0 or Earlier ###
1318-
1319-The Autotools build script (configure + make) is no longer officially
1320-supportted. You are encouraged to migrate to your own build system or
1321-use CMake. If you still need to use Autotools, you can find
1322-instructions in the README file from Google Test 1.4.0.
1323-
1324-On platforms where the pthread library is available, Google Test uses
1325-it in order to be thread-safe. See the "Multi-threaded Tests" section
1326-for what this means to your build script.
1327-
1328-If you use Microsoft Visual C++ 7.1 with exceptions disabled, Google
1329-Test will no longer compile. This should affect very few people, as a
1330-large portion of STL (including <string>) doesn't compile in this mode
1331-anyway. We decided to stop supporting it in order to greatly simplify
1332-Google Test's implementation.
1333-
1334-Developing Google Test
1335-----------------------
1336-
1337-This section discusses how to make your own changes to Google Test.
1338-
1339-### Testing Google Test Itself ###
1340-
1341-To make sure your changes work as intended and don't break existing
1342-functionality, you'll want to compile and run Google Test's own tests.
1343-For that you can use CMake:
1344-
1345- mkdir mybuild
1346- cd mybuild
1347- cmake -Dgtest_build_tests=ON ${GTEST_DIR}
1348-
1349-Make sure you have Python installed, as some of Google Test's tests
1350-are written in Python. If the cmake command complains about not being
1351-able to find Python ("Could NOT find PythonInterp (missing:
1352-PYTHON_EXECUTABLE)"), try telling it explicitly where your Python
1353-executable can be found:
1354-
1355- cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR}
1356-
1357-Next, you can build Google Test and all of its own tests. On *nix,
1358-this is usually done by 'make'. To run the tests, do
1359-
1360- make test
1361-
1362-All tests should pass.
1363-
1364-### Regenerating Source Files ###
1365-
1366-Some of Google Test's source files are generated from templates (not
1367-in the C++ sense) using a script. A template file is named FOO.pump,
1368-where FOO is the name of the file it will generate. For example, the
1369-file include/gtest/internal/gtest-type-util.h.pump is used to generate
1370-gtest-type-util.h in the same directory.
1371-
1372-Normally you don't need to worry about regenerating the source files,
1373-unless you need to modify them. In that case, you should modify the
1374-corresponding .pump files instead and run the pump.py Python script to
1375-regenerate them. You can find pump.py in the scripts/ directory.
1376-Read the Pump manual [2] for how to use it.
1377-
1378- [2] http://code.google.com/p/googletest/wiki/PumpManual
1379-
1380-### Contributing a Patch ###
1381-
1382-We welcome patches. Please read the Google Test developer's guide [3]
1383-for how you can contribute. In particular, make sure you have signed
1384-the Contributor License Agreement, or we won't be able to accept the
1385-patch.
1386-
1387- [3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide
1388-
1389-Happy testing!
1390
1391=== removed directory '3rd_party/gmock/gtest/build-aux'
1392=== removed file '3rd_party/gmock/gtest/build-aux/.keep'
1393=== removed directory '3rd_party/gmock/gtest/cmake'
1394=== removed file '3rd_party/gmock/gtest/cmake/internal_utils.cmake'
1395--- 3rd_party/gmock/gtest/cmake/internal_utils.cmake 2014-04-07 19:53:07 +0000
1396+++ 3rd_party/gmock/gtest/cmake/internal_utils.cmake 1970-01-01 00:00:00 +0000
1397@@ -1,227 +0,0 @@
1398-# Defines functions and macros useful for building Google Test and
1399-# Google Mock.
1400-#
1401-# Note:
1402-#
1403-# - This file will be run twice when building Google Mock (once via
1404-# Google Test's CMakeLists.txt, and once via Google Mock's).
1405-# Therefore it shouldn't have any side effects other than defining
1406-# the functions and macros.
1407-#
1408-# - The functions/macros defined in this file may depend on Google
1409-# Test and Google Mock's option() definitions, and thus must be
1410-# called *after* the options have been defined.
1411-
1412-# Tweaks CMake's default compiler/linker settings to suit Google Test's needs.
1413-#
1414-# This must be a macro(), as inside a function string() can only
1415-# update variables in the function scope.
1416-macro(fix_default_compiler_settings_)
1417- if (MSVC)
1418- # For MSVC, CMake sets certain flags to defaults we want to override.
1419- # This replacement code is taken from sample in the CMake Wiki at
1420- # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace.
1421- foreach (flag_var
1422- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
1423- CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
1424- if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt)
1425- # When Google Test is built as a shared library, it should also use
1426- # shared runtime libraries. Otherwise, it may end up with multiple
1427- # copies of runtime library data in different modules, resulting in
1428- # hard-to-find crashes. When it is built as a static library, it is
1429- # preferable to use CRT as static libraries, as we don't have to rely
1430- # on CRT DLLs being available. CMake always defaults to using shared
1431- # CRT libraries, so we override that default here.
1432- string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")
1433- endif()
1434-
1435- # We prefer more strict warning checking for building Google Test.
1436- # Replaces /W3 with /W4 in defaults.
1437- string(REPLACE "/W3" "-W4" ${flag_var} "${${flag_var}}")
1438- endforeach()
1439- endif()
1440-endmacro()
1441-
1442-# Defines the compiler/linker flags used to build Google Test and
1443-# Google Mock. You can tweak these definitions to suit your need. A
1444-# variable's value is empty before it's explicitly assigned to.
1445-macro(config_compiler_and_linker)
1446- if (NOT gtest_disable_pthreads)
1447- # Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT.
1448- find_package(Threads)
1449- endif()
1450-
1451- fix_default_compiler_settings_()
1452- if (MSVC)
1453- # Newlines inside flags variables break CMake's NMake generator.
1454- # TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds.
1455- set(cxx_base_flags "-GS -W4 -WX -wd4127 -wd4251 -wd4275 -nologo -J -Zi")
1456- if (MSVC_VERSION LESS 1400)
1457- # Suppress spurious warnings MSVC 7.1 sometimes issues.
1458- # Forcing value to bool.
1459- set(cxx_base_flags "${cxx_base_flags} -wd4800")
1460- # Copy constructor and assignment operator could not be generated.
1461- set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512")
1462- # Compatibility warnings not applicable to Google Test.
1463- # Resolved overload was found by argument-dependent lookup.
1464- set(cxx_base_flags "${cxx_base_flags} -wd4675")
1465- endif()
1466- set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
1467- set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
1468- set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
1469- set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0")
1470- set(cxx_no_rtti_flags "-GR-")
1471- elseif (CMAKE_COMPILER_IS_GNUCXX)
1472- set(cxx_base_flags "-Wall -Wshadow")
1473- set(cxx_exception_flags "-fexceptions")
1474- set(cxx_no_exception_flags "-fno-exceptions")
1475- # Until version 4.3.2, GCC doesn't define a macro to indicate
1476- # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI
1477- # explicitly.
1478- set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0")
1479- set(cxx_strict_flags
1480- "-Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
1481- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
1482- set(cxx_exception_flags "-features=except")
1483- # Sun Pro doesn't provide macros to indicate whether exceptions and
1484- # RTTI are enabled, so we define GTEST_HAS_* explicitly.
1485- set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0")
1486- set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0")
1487- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR
1488- CMAKE_CXX_COMPILER_ID STREQUAL "XL")
1489- # CMake 2.8 changes Visual Age's compiler ID to "XL".
1490- set(cxx_exception_flags "-qeh")
1491- set(cxx_no_exception_flags "-qnoeh")
1492- # Until version 9.0, Visual Age doesn't define a macro to indicate
1493- # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI
1494- # explicitly.
1495- set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0")
1496- elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP")
1497- set(cxx_base_flags "-AA -mt")
1498- set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1")
1499- set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0")
1500- # RTTI can not be disabled in HP aCC compiler.
1501- set(cxx_no_rtti_flags "")
1502- endif()
1503-
1504- if (CMAKE_USE_PTHREADS_INIT) # The pthreads library is available and allowed.
1505- set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=1")
1506- else()
1507- set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=0")
1508- endif()
1509-
1510- # For building gtest's own tests and samples.
1511- set(cxx_exception "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_exception_flags}")
1512- set(cxx_no_exception
1513- "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}")
1514- set(cxx_default "${cxx_exception}")
1515- set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}")
1516- set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1")
1517-
1518- # For building the gtest libraries.
1519- set(cxx_strict "${cxx_default} ${cxx_strict_flags}")
1520-endmacro()
1521-
1522-# Defines the gtest & gtest_main libraries. User tests should link
1523-# with one of them.
1524-function(cxx_library_with_type name type cxx_flags)
1525- # type can be either STATIC or SHARED to denote a static or shared library.
1526- # ARGN refers to additional arguments after 'cxx_flags'.
1527- add_library(${name} ${type} ${ARGN})
1528- set_target_properties(${name}
1529- PROPERTIES
1530- COMPILE_FLAGS "${cxx_flags}")
1531- if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED")
1532- set_target_properties(${name}
1533- PROPERTIES
1534- COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1")
1535- endif()
1536- if (CMAKE_USE_PTHREADS_INIT)
1537- target_link_libraries(${name} ${CMAKE_THREAD_LIBS_INIT})
1538- endif()
1539-endfunction()
1540-
1541-########################################################################
1542-#
1543-# Helper functions for creating build targets.
1544-
1545-function(cxx_shared_library name cxx_flags)
1546- cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN})
1547-endfunction()
1548-
1549-function(cxx_library name cxx_flags)
1550- cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN})
1551-endfunction()
1552-
1553-# cxx_executable_with_flags(name cxx_flags libs srcs...)
1554-#
1555-# creates a named C++ executable that depends on the given libraries and
1556-# is built from the given source files with the given compiler flags.
1557-function(cxx_executable_with_flags name cxx_flags libs)
1558- add_executable(${name} ${ARGN})
1559- if (cxx_flags)
1560- set_target_properties(${name}
1561- PROPERTIES
1562- COMPILE_FLAGS "${cxx_flags}")
1563- endif()
1564- if (BUILD_SHARED_LIBS)
1565- set_target_properties(${name}
1566- PROPERTIES
1567- COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
1568- endif()
1569- # To support mixing linking in static and dynamic libraries, link each
1570- # library in with an extra call to target_link_libraries.
1571- foreach (lib "${libs}")
1572- target_link_libraries(${name} ${lib})
1573- endforeach()
1574-endfunction()
1575-
1576-# cxx_executable(name dir lib srcs...)
1577-#
1578-# creates a named target that depends on the given libs and is built
1579-# from the given source files. dir/name.cc is implicitly included in
1580-# the source file list.
1581-function(cxx_executable name dir libs)
1582- cxx_executable_with_flags(
1583- ${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN})
1584-endfunction()
1585-
1586-# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
1587-find_package(PythonInterp)
1588-
1589-# cxx_test_with_flags(name cxx_flags libs srcs...)
1590-#
1591-# creates a named C++ test that depends on the given libs and is built
1592-# from the given source files with the given compiler flags.
1593-function(cxx_test_with_flags name cxx_flags libs)
1594- cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN})
1595- add_test(${name} ${name})
1596-endfunction()
1597-
1598-# cxx_test(name libs srcs...)
1599-#
1600-# creates a named test target that depends on the given libs and is
1601-# built from the given source files. Unlike cxx_test_with_flags,
1602-# test/name.cc is already implicitly included in the source file list.
1603-function(cxx_test name libs)
1604- cxx_test_with_flags("${name}" "${cxx_default}" "${libs}"
1605- "test/${name}.cc" ${ARGN})
1606-endfunction()
1607-
1608-# py_test(name)
1609-#
1610-# creates a Python test with the given name whose main module is in
1611-# test/name.py. It does nothing if Python is not installed.
1612-function(py_test name)
1613- # We are not supporting Python tests on Linux yet as they consider
1614- # all Linux environments to be google3 and try to use google3 features.
1615- if (PYTHONINTERP_FOUND)
1616- # ${CMAKE_BINARY_DIR} is known at configuration time, so we can
1617- # directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known
1618- # only at ctest runtime (by calling ctest -c <Configuration>), so
1619- # we have to escape $ to delay variable substitution here.
1620- add_test(${name}
1621- ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
1622- --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE})
1623- endif()
1624-endfunction()
1625
1626=== removed directory '3rd_party/gmock/gtest/codegear'
1627=== removed file '3rd_party/gmock/gtest/codegear/gtest_all.cc'
1628--- 3rd_party/gmock/gtest/codegear/gtest_all.cc 2014-04-07 19:53:07 +0000
1629+++ 3rd_party/gmock/gtest/codegear/gtest_all.cc 1970-01-01 00:00:00 +0000
1630@@ -1,38 +0,0 @@
1631-// Copyright 2009, Google Inc.
1632-// All rights reserved.
1633-//
1634-// Redistribution and use in source and binary forms, with or without
1635-// modification, are permitted provided that the following conditions are
1636-// met:
1637-//
1638-// * Redistributions of source code must retain the above copyright
1639-// notice, this list of conditions and the following disclaimer.
1640-// * Redistributions in binary form must reproduce the above
1641-// copyright notice, this list of conditions and the following disclaimer
1642-// in the documentation and/or other materials provided with the
1643-// distribution.
1644-// * Neither the name of Google Inc. nor the names of its
1645-// contributors may be used to endorse or promote products derived from
1646-// this software without specific prior written permission.
1647-//
1648-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1649-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1650-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1651-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1652-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1653-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1654-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1655-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1656-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1657-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1658-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1659-//
1660-// Author: Josh Kelley (joshkel@gmail.com)
1661-//
1662-// Google C++ Testing Framework (Google Test)
1663-//
1664-// C++Builder's IDE cannot build a static library from files with hyphens
1665-// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 .
1666-// This file serves as a workaround.
1667-
1668-#include "src/gtest-all.cc"
1669
1670=== removed file '3rd_party/gmock/gtest/codegear/gtest_link.cc'
1671--- 3rd_party/gmock/gtest/codegear/gtest_link.cc 2014-04-07 19:53:07 +0000
1672+++ 3rd_party/gmock/gtest/codegear/gtest_link.cc 1970-01-01 00:00:00 +0000
1673@@ -1,40 +0,0 @@
1674-// Copyright 2009, Google Inc.
1675-// All rights reserved.
1676-//
1677-// Redistribution and use in source and binary forms, with or without
1678-// modification, are permitted provided that the following conditions are
1679-// met:
1680-//
1681-// * Redistributions of source code must retain the above copyright
1682-// notice, this list of conditions and the following disclaimer.
1683-// * Redistributions in binary form must reproduce the above
1684-// copyright notice, this list of conditions and the following disclaimer
1685-// in the documentation and/or other materials provided with the
1686-// distribution.
1687-// * Neither the name of Google Inc. nor the names of its
1688-// contributors may be used to endorse or promote products derived from
1689-// this software without specific prior written permission.
1690-//
1691-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1692-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1693-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1694-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1695-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1696-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1697-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1698-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1699-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1700-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1701-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1702-//
1703-// Author: Josh Kelley (joshkel@gmail.com)
1704-//
1705-// Google C++ Testing Framework (Google Test)
1706-//
1707-// Links gtest.lib and gtest_main.lib into the current project in C++Builder.
1708-// This means that these libraries can't be renamed, but it's the only way to
1709-// ensure that Debug versus Release test builds are linked against the
1710-// appropriate Debug or Release build of the libraries.
1711-
1712-#pragma link "gtest.lib"
1713-#pragma link "gtest_main.lib"
1714
1715=== removed file '3rd_party/gmock/gtest/configure.ac'
1716--- 3rd_party/gmock/gtest/configure.ac 2014-04-07 19:53:07 +0000
1717+++ 3rd_party/gmock/gtest/configure.ac 1970-01-01 00:00:00 +0000
1718@@ -1,68 +0,0 @@
1719-m4_include(m4/acx_pthread.m4)
1720-
1721-# At this point, the Xcode project assumes the version string will be three
1722-# integers separated by periods and surrounded by square brackets (e.g.
1723-# "[1.0.1]"). It also asumes that there won't be any closing parenthesis
1724-# between "AC_INIT(" and the closing ")" including comments and strings.
1725-AC_INIT([Google C++ Testing Framework],
1726- [1.7.0],
1727- [googletestframework@googlegroups.com],
1728- [gtest])
1729-
1730-# Provide various options to initialize the Autoconf and configure processes.
1731-AC_PREREQ([2.59])
1732-AC_CONFIG_SRCDIR([./LICENSE])
1733-AC_CONFIG_MACRO_DIR([m4])
1734-AC_CONFIG_AUX_DIR([build-aux])
1735-AC_CONFIG_HEADERS([build-aux/config.h])
1736-AC_CONFIG_FILES([Makefile])
1737-AC_CONFIG_FILES([scripts/gtest-config], [chmod +x scripts/gtest-config])
1738-
1739-# Initialize Automake with various options. We require at least v1.9, prevent
1740-# pedantic complaints about package files, and enable various distribution
1741-# targets.
1742-AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects])
1743-
1744-# Check for programs used in building Google Test.
1745-AC_PROG_CC
1746-AC_PROG_CXX
1747-AC_LANG([C++])
1748-AC_PROG_LIBTOOL
1749-
1750-# TODO(chandlerc@google.com): Currently we aren't running the Python tests
1751-# against the interpreter detected by AM_PATH_PYTHON, and so we condition
1752-# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's
1753-# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env"
1754-# hashbang.
1755-PYTHON= # We *do not* allow the user to specify a python interpreter
1756-AC_PATH_PROG([PYTHON],[python],[:])
1757-AS_IF([test "$PYTHON" != ":"],
1758- [AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])])
1759-AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"])
1760-
1761-# Configure pthreads.
1762-AC_ARG_WITH([pthreads],
1763- [AS_HELP_STRING([--with-pthreads],
1764- [use pthreads (default is yes)])],
1765- [with_pthreads=$withval],
1766- [with_pthreads=check])
1767-
1768-have_pthreads=no
1769-AS_IF([test "x$with_pthreads" != "xno"],
1770- [ACX_PTHREAD(
1771- [],
1772- [AS_IF([test "x$with_pthreads" != "xcheck"],
1773- [AC_MSG_FAILURE(
1774- [--with-pthreads was specified, but unable to be used])])])
1775- have_pthreads="$acx_pthread_ok"])
1776-AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" = "xyes"])
1777-AC_SUBST(PTHREAD_CFLAGS)
1778-AC_SUBST(PTHREAD_LIBS)
1779-
1780-# TODO(chandlerc@google.com) Check for the necessary system headers.
1781-
1782-# TODO(chandlerc@google.com) Check the types, structures, and other compiler
1783-# and architecture characteristics.
1784-
1785-# Output the generated files. No further autoconf macros may be used.
1786-AC_OUTPUT
1787
1788=== removed directory '3rd_party/gmock/gtest/include'
1789=== removed directory '3rd_party/gmock/gtest/include/gtest'
1790=== removed file '3rd_party/gmock/gtest/include/gtest/gtest-death-test.h'
1791--- 3rd_party/gmock/gtest/include/gtest/gtest-death-test.h 2014-04-07 19:53:07 +0000
1792+++ 3rd_party/gmock/gtest/include/gtest/gtest-death-test.h 1970-01-01 00:00:00 +0000
1793@@ -1,294 +0,0 @@
1794-// Copyright 2005, Google Inc.
1795-// All rights reserved.
1796-//
1797-// Redistribution and use in source and binary forms, with or without
1798-// modification, are permitted provided that the following conditions are
1799-// met:
1800-//
1801-// * Redistributions of source code must retain the above copyright
1802-// notice, this list of conditions and the following disclaimer.
1803-// * Redistributions in binary form must reproduce the above
1804-// copyright notice, this list of conditions and the following disclaimer
1805-// in the documentation and/or other materials provided with the
1806-// distribution.
1807-// * Neither the name of Google Inc. nor the names of its
1808-// contributors may be used to endorse or promote products derived from
1809-// this software without specific prior written permission.
1810-//
1811-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1812-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1813-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1814-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1815-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1816-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1817-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1818-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1819-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1820-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1821-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1822-//
1823-// Author: wan@google.com (Zhanyong Wan)
1824-//
1825-// The Google C++ Testing Framework (Google Test)
1826-//
1827-// This header file defines the public API for death tests. It is
1828-// #included by gtest.h so a user doesn't need to include this
1829-// directly.
1830-
1831-#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
1832-#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
1833-
1834-#include "gtest/internal/gtest-death-test-internal.h"
1835-
1836-namespace testing {
1837-
1838-// This flag controls the style of death tests. Valid values are "threadsafe",
1839-// meaning that the death test child process will re-execute the test binary
1840-// from the start, running only a single death test, or "fast",
1841-// meaning that the child process will execute the test logic immediately
1842-// after forking.
1843-GTEST_DECLARE_string_(death_test_style);
1844-
1845-#if GTEST_HAS_DEATH_TEST
1846-
1847-namespace internal {
1848-
1849-// Returns a Boolean value indicating whether the caller is currently
1850-// executing in the context of the death test child process. Tools such as
1851-// Valgrind heap checkers may need this to modify their behavior in death
1852-// tests. IMPORTANT: This is an internal utility. Using it may break the
1853-// implementation of death tests. User code MUST NOT use it.
1854-GTEST_API_ bool InDeathTestChild();
1855-
1856-} // namespace internal
1857-
1858-// The following macros are useful for writing death tests.
1859-
1860-// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
1861-// executed:
1862-//
1863-// 1. It generates a warning if there is more than one active
1864-// thread. This is because it's safe to fork() or clone() only
1865-// when there is a single thread.
1866-//
1867-// 2. The parent process clone()s a sub-process and runs the death
1868-// test in it; the sub-process exits with code 0 at the end of the
1869-// death test, if it hasn't exited already.
1870-//
1871-// 3. The parent process waits for the sub-process to terminate.
1872-//
1873-// 4. The parent process checks the exit code and error message of
1874-// the sub-process.
1875-//
1876-// Examples:
1877-//
1878-// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
1879-// for (int i = 0; i < 5; i++) {
1880-// EXPECT_DEATH(server.ProcessRequest(i),
1881-// "Invalid request .* in ProcessRequest()")
1882-// << "Failed to die on request " << i;
1883-// }
1884-//
1885-// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
1886-//
1887-// bool KilledBySIGHUP(int exit_code) {
1888-// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
1889-// }
1890-//
1891-// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
1892-//
1893-// On the regular expressions used in death tests:
1894-//
1895-// On POSIX-compliant systems (*nix), we use the <regex.h> library,
1896-// which uses the POSIX extended regex syntax.
1897-//
1898-// On other platforms (e.g. Windows), we only support a simple regex
1899-// syntax implemented as part of Google Test. This limited
1900-// implementation should be enough most of the time when writing
1901-// death tests; though it lacks many features you can find in PCRE
1902-// or POSIX extended regex syntax. For example, we don't support
1903-// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
1904-// repetition count ("x{5,7}"), among others.
1905-//
1906-// Below is the syntax that we do support. We chose it to be a
1907-// subset of both PCRE and POSIX extended regex, so it's easy to
1908-// learn wherever you come from. In the following: 'A' denotes a
1909-// literal character, period (.), or a single \\ escape sequence;
1910-// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
1911-// natural numbers.
1912-//
1913-// c matches any literal character c
1914-// \\d matches any decimal digit
1915-// \\D matches any character that's not a decimal digit
1916-// \\f matches \f
1917-// \\n matches \n
1918-// \\r matches \r
1919-// \\s matches any ASCII whitespace, including \n
1920-// \\S matches any character that's not a whitespace
1921-// \\t matches \t
1922-// \\v matches \v
1923-// \\w matches any letter, _, or decimal digit
1924-// \\W matches any character that \\w doesn't match
1925-// \\c matches any literal character c, which must be a punctuation
1926-// . matches any single character except \n
1927-// A? matches 0 or 1 occurrences of A
1928-// A* matches 0 or many occurrences of A
1929-// A+ matches 1 or many occurrences of A
1930-// ^ matches the beginning of a string (not that of each line)
1931-// $ matches the end of a string (not that of each line)
1932-// xy matches x followed by y
1933-//
1934-// If you accidentally use PCRE or POSIX extended regex features
1935-// not implemented by us, you will get a run-time failure. In that
1936-// case, please try to rewrite your regular expression within the
1937-// above syntax.
1938-//
1939-// This implementation is *not* meant to be as highly tuned or robust
1940-// as a compiled regex library, but should perform well enough for a
1941-// death test, which already incurs significant overhead by launching
1942-// a child process.
1943-//
1944-// Known caveats:
1945-//
1946-// A "threadsafe" style death test obtains the path to the test
1947-// program from argv[0] and re-executes it in the sub-process. For
1948-// simplicity, the current implementation doesn't search the PATH
1949-// when launching the sub-process. This means that the user must
1950-// invoke the test program via a path that contains at least one
1951-// path separator (e.g. path/to/foo_test and
1952-// /absolute/path/to/bar_test are fine, but foo_test is not). This
1953-// is rarely a problem as people usually don't put the test binary
1954-// directory in PATH.
1955-//
1956-// TODO(wan@google.com): make thread-safe death tests search the PATH.
1957-
1958-// Asserts that a given statement causes the program to exit, with an
1959-// integer exit status that satisfies predicate, and emitting error output
1960-// that matches regex.
1961-# define ASSERT_EXIT(statement, predicate, regex) \
1962- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
1963-
1964-// Like ASSERT_EXIT, but continues on to successive tests in the
1965-// test case, if any:
1966-# define EXPECT_EXIT(statement, predicate, regex) \
1967- GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
1968-
1969-// Asserts that a given statement causes the program to exit, either by
1970-// explicitly exiting with a nonzero exit code or being killed by a
1971-// signal, and emitting error output that matches regex.
1972-# define ASSERT_DEATH(statement, regex) \
1973- ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
1974-
1975-// Like ASSERT_DEATH, but continues on to successive tests in the
1976-// test case, if any:
1977-# define EXPECT_DEATH(statement, regex) \
1978- EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
1979-
1980-// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
1981-
1982-// Tests that an exit code describes a normal exit with a given exit code.
1983-class GTEST_API_ ExitedWithCode {
1984- public:
1985- explicit ExitedWithCode(int exit_code);
1986- bool operator()(int exit_status) const;
1987- private:
1988- // No implementation - assignment is unsupported.
1989- void operator=(const ExitedWithCode& other);
1990-
1991- const int exit_code_;
1992-};
1993-
1994-# if !GTEST_OS_WINDOWS
1995-// Tests that an exit code describes an exit due to termination by a
1996-// given signal.
1997-class GTEST_API_ KilledBySignal {
1998- public:
1999- explicit KilledBySignal(int signum);
2000- bool operator()(int exit_status) const;
2001- private:
2002- const int signum_;
2003-};
2004-# endif // !GTEST_OS_WINDOWS
2005-
2006-// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
2007-// The death testing framework causes this to have interesting semantics,
2008-// since the sideeffects of the call are only visible in opt mode, and not
2009-// in debug mode.
2010-//
2011-// In practice, this can be used to test functions that utilize the
2012-// LOG(DFATAL) macro using the following style:
2013-//
2014-// int DieInDebugOr12(int* sideeffect) {
2015-// if (sideeffect) {
2016-// *sideeffect = 12;
2017-// }
2018-// LOG(DFATAL) << "death";
2019-// return 12;
2020-// }
2021-//
2022-// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {
2023-// int sideeffect = 0;
2024-// // Only asserts in dbg.
2025-// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
2026-//
2027-// #ifdef NDEBUG
2028-// // opt-mode has sideeffect visible.
2029-// EXPECT_EQ(12, sideeffect);
2030-// #else
2031-// // dbg-mode no visible sideeffect.
2032-// EXPECT_EQ(0, sideeffect);
2033-// #endif
2034-// }
2035-//
2036-// This will assert that DieInDebugReturn12InOpt() crashes in debug
2037-// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
2038-// appropriate fallback value (12 in this case) in opt mode. If you
2039-// need to test that a function has appropriate side-effects in opt
2040-// mode, include assertions against the side-effects. A general
2041-// pattern for this is:
2042-//
2043-// EXPECT_DEBUG_DEATH({
2044-// // Side-effects here will have an effect after this statement in
2045-// // opt mode, but none in debug mode.
2046-// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
2047-// }, "death");
2048-//
2049-# ifdef NDEBUG
2050-
2051-# define EXPECT_DEBUG_DEATH(statement, regex) \
2052- GTEST_EXECUTE_STATEMENT_(statement, regex)
2053-
2054-# define ASSERT_DEBUG_DEATH(statement, regex) \
2055- GTEST_EXECUTE_STATEMENT_(statement, regex)
2056-
2057-# else
2058-
2059-# define EXPECT_DEBUG_DEATH(statement, regex) \
2060- EXPECT_DEATH(statement, regex)
2061-
2062-# define ASSERT_DEBUG_DEATH(statement, regex) \
2063- ASSERT_DEATH(statement, regex)
2064-
2065-# endif // NDEBUG for EXPECT_DEBUG_DEATH
2066-#endif // GTEST_HAS_DEATH_TEST
2067-
2068-// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
2069-// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
2070-// death tests are supported; otherwise they just issue a warning. This is
2071-// useful when you are combining death test assertions with normal test
2072-// assertions in one test.
2073-#if GTEST_HAS_DEATH_TEST
2074-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
2075- EXPECT_DEATH(statement, regex)
2076-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
2077- ASSERT_DEATH(statement, regex)
2078-#else
2079-# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
2080- GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
2081-# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
2082- GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
2083-#endif
2084-
2085-} // namespace testing
2086-
2087-#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
2088
2089=== removed file '3rd_party/gmock/gtest/include/gtest/gtest-message.h'
2090--- 3rd_party/gmock/gtest/include/gtest/gtest-message.h 2014-04-07 19:53:07 +0000
2091+++ 3rd_party/gmock/gtest/include/gtest/gtest-message.h 1970-01-01 00:00:00 +0000
2092@@ -1,250 +0,0 @@
2093-// Copyright 2005, Google Inc.
2094-// All rights reserved.
2095-//
2096-// Redistribution and use in source and binary forms, with or without
2097-// modification, are permitted provided that the following conditions are
2098-// met:
2099-//
2100-// * Redistributions of source code must retain the above copyright
2101-// notice, this list of conditions and the following disclaimer.
2102-// * Redistributions in binary form must reproduce the above
2103-// copyright notice, this list of conditions and the following disclaimer
2104-// in the documentation and/or other materials provided with the
2105-// distribution.
2106-// * Neither the name of Google Inc. nor the names of its
2107-// contributors may be used to endorse or promote products derived from
2108-// this software without specific prior written permission.
2109-//
2110-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2111-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2112-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2113-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2114-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2115-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2116-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2117-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2118-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2119-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2120-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2121-//
2122-// Author: wan@google.com (Zhanyong Wan)
2123-//
2124-// The Google C++ Testing Framework (Google Test)
2125-//
2126-// This header file defines the Message class.
2127-//
2128-// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
2129-// leave some internal implementation details in this header file.
2130-// They are clearly marked by comments like this:
2131-//
2132-// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
2133-//
2134-// Such code is NOT meant to be used by a user directly, and is subject
2135-// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
2136-// program!
2137-
2138-#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
2139-#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
2140-
2141-#include <limits>
2142-
2143-#include "gtest/internal/gtest-port.h"
2144-
2145-// Ensures that there is at least one operator<< in the global namespace.
2146-// See Message& operator<<(...) below for why.
2147-void operator<<(const testing::internal::Secret&, int);
2148-
2149-namespace testing {
2150-
2151-// The Message class works like an ostream repeater.
2152-//
2153-// Typical usage:
2154-//
2155-// 1. You stream a bunch of values to a Message object.
2156-// It will remember the text in a stringstream.
2157-// 2. Then you stream the Message object to an ostream.
2158-// This causes the text in the Message to be streamed
2159-// to the ostream.
2160-//
2161-// For example;
2162-//
2163-// testing::Message foo;
2164-// foo << 1 << " != " << 2;
2165-// std::cout << foo;
2166-//
2167-// will print "1 != 2".
2168-//
2169-// Message is not intended to be inherited from. In particular, its
2170-// destructor is not virtual.
2171-//
2172-// Note that stringstream behaves differently in gcc and in MSVC. You
2173-// can stream a NULL char pointer to it in the former, but not in the
2174-// latter (it causes an access violation if you do). The Message
2175-// class hides this difference by treating a NULL char pointer as
2176-// "(null)".
2177-class GTEST_API_ Message {
2178- private:
2179- // The type of basic IO manipulators (endl, ends, and flush) for
2180- // narrow streams.
2181- typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
2182-
2183- public:
2184- // Constructs an empty Message.
2185- Message();
2186-
2187- // Copy constructor.
2188- Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
2189- *ss_ << msg.GetString();
2190- }
2191-
2192- // Constructs a Message from a C-string.
2193- explicit Message(const char* str) : ss_(new ::std::stringstream) {
2194- *ss_ << str;
2195- }
2196-
2197-#if GTEST_OS_SYMBIAN
2198- // Streams a value (either a pointer or not) to this object.
2199- template <typename T>
2200- inline Message& operator <<(const T& value) {
2201- StreamHelper(typename internal::is_pointer<T>::type(), value);
2202- return *this;
2203- }
2204-#else
2205- // Streams a non-pointer value to this object.
2206- template <typename T>
2207- inline Message& operator <<(const T& val) {
2208- // Some libraries overload << for STL containers. These
2209- // overloads are defined in the global namespace instead of ::std.
2210- //
2211- // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
2212- // overloads are visible in either the std namespace or the global
2213- // namespace, but not other namespaces, including the testing
2214- // namespace which Google Test's Message class is in.
2215- //
2216- // To allow STL containers (and other types that has a << operator
2217- // defined in the global namespace) to be used in Google Test
2218- // assertions, testing::Message must access the custom << operator
2219- // from the global namespace. With this using declaration,
2220- // overloads of << defined in the global namespace and those
2221- // visible via Koenig lookup are both exposed in this function.
2222- using ::operator <<;
2223- *ss_ << val;
2224- return *this;
2225- }
2226-
2227- // Streams a pointer value to this object.
2228- //
2229- // This function is an overload of the previous one. When you
2230- // stream a pointer to a Message, this definition will be used as it
2231- // is more specialized. (The C++ Standard, section
2232- // [temp.func.order].) If you stream a non-pointer, then the
2233- // previous definition will be used.
2234- //
2235- // The reason for this overload is that streaming a NULL pointer to
2236- // ostream is undefined behavior. Depending on the compiler, you
2237- // may get "0", "(nil)", "(null)", or an access violation. To
2238- // ensure consistent result across compilers, we always treat NULL
2239- // as "(null)".
2240- template <typename T>
2241- inline Message& operator <<(T* const& pointer) { // NOLINT
2242- if (pointer == NULL) {
2243- *ss_ << "(null)";
2244- } else {
2245- *ss_ << pointer;
2246- }
2247- return *this;
2248- }
2249-#endif // GTEST_OS_SYMBIAN
2250-
2251- // Since the basic IO manipulators are overloaded for both narrow
2252- // and wide streams, we have to provide this specialized definition
2253- // of operator <<, even though its body is the same as the
2254- // templatized version above. Without this definition, streaming
2255- // endl or other basic IO manipulators to Message will confuse the
2256- // compiler.
2257- Message& operator <<(BasicNarrowIoManip val) {
2258- *ss_ << val;
2259- return *this;
2260- }
2261-
2262- // Instead of 1/0, we want to see true/false for bool values.
2263- Message& operator <<(bool b) {
2264- return *this << (b ? "true" : "false");
2265- }
2266-
2267- // These two overloads allow streaming a wide C string to a Message
2268- // using the UTF-8 encoding.
2269- Message& operator <<(const wchar_t* wide_c_str);
2270- Message& operator <<(wchar_t* wide_c_str);
2271-
2272-#if GTEST_HAS_STD_WSTRING
2273- // Converts the given wide string to a narrow string using the UTF-8
2274- // encoding, and streams the result to this Message object.
2275- Message& operator <<(const ::std::wstring& wstr);
2276-#endif // GTEST_HAS_STD_WSTRING
2277-
2278-#if GTEST_HAS_GLOBAL_WSTRING
2279- // Converts the given wide string to a narrow string using the UTF-8
2280- // encoding, and streams the result to this Message object.
2281- Message& operator <<(const ::wstring& wstr);
2282-#endif // GTEST_HAS_GLOBAL_WSTRING
2283-
2284- // Gets the text streamed to this object so far as an std::string.
2285- // Each '\0' character in the buffer is replaced with "\\0".
2286- //
2287- // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
2288- std::string GetString() const;
2289-
2290- private:
2291-
2292-#if GTEST_OS_SYMBIAN
2293- // These are needed as the Nokia Symbian Compiler cannot decide between
2294- // const T& and const T* in a function template. The Nokia compiler _can_
2295- // decide between class template specializations for T and T*, so a
2296- // tr1::type_traits-like is_pointer works, and we can overload on that.
2297- template <typename T>
2298- inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) {
2299- if (pointer == NULL) {
2300- *ss_ << "(null)";
2301- } else {
2302- *ss_ << pointer;
2303- }
2304- }
2305- template <typename T>
2306- inline void StreamHelper(internal::false_type /*is_pointer*/,
2307- const T& value) {
2308- // See the comments in Message& operator <<(const T&) above for why
2309- // we need this using statement.
2310- using ::operator <<;
2311- *ss_ << value;
2312- }
2313-#endif // GTEST_OS_SYMBIAN
2314-
2315- // We'll hold the text streamed to this object here.
2316- const internal::scoped_ptr< ::std::stringstream> ss_;
2317-
2318- // We declare (but don't implement) this to prevent the compiler
2319- // from implementing the assignment operator.
2320- void operator=(const Message&);
2321-};
2322-
2323-// Streams a Message to an ostream.
2324-inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
2325- return os << sb.GetString();
2326-}
2327-
2328-namespace internal {
2329-
2330-// Converts a streamable value to an std::string. A NULL pointer is
2331-// converted to "(null)". When the input value is a ::string,
2332-// ::std::string, ::wstring, or ::std::wstring object, each NUL
2333-// character in it is replaced with "\\0".
2334-template <typename T>
2335-std::string StreamableToString(const T& streamable) {
2336- return (Message() << streamable).GetString();
2337-}
2338-
2339-} // namespace internal
2340-} // namespace testing
2341-
2342-#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
2343
2344=== removed file '3rd_party/gmock/gtest/include/gtest/gtest-param-test.h'
2345--- 3rd_party/gmock/gtest/include/gtest/gtest-param-test.h 2014-04-07 19:53:07 +0000
2346+++ 3rd_party/gmock/gtest/include/gtest/gtest-param-test.h 1970-01-01 00:00:00 +0000
2347@@ -1,1421 +0,0 @@
2348-// This file was GENERATED by command:
2349-// pump.py gtest-param-test.h.pump
2350-// DO NOT EDIT BY HAND!!!
2351-
2352-// Copyright 2008, Google Inc.
2353-// All rights reserved.
2354-//
2355-// Redistribution and use in source and binary forms, with or without
2356-// modification, are permitted provided that the following conditions are
2357-// met:
2358-//
2359-// * Redistributions of source code must retain the above copyright
2360-// notice, this list of conditions and the following disclaimer.
2361-// * Redistributions in binary form must reproduce the above
2362-// copyright notice, this list of conditions and the following disclaimer
2363-// in the documentation and/or other materials provided with the
2364-// distribution.
2365-// * Neither the name of Google Inc. nor the names of its
2366-// contributors may be used to endorse or promote products derived from
2367-// this software without specific prior written permission.
2368-//
2369-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2370-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2371-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2372-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2373-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2374-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2375-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2376-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2377-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2378-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2379-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2380-//
2381-// Authors: vladl@google.com (Vlad Losev)
2382-//
2383-// Macros and functions for implementing parameterized tests
2384-// in Google C++ Testing Framework (Google Test)
2385-//
2386-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
2387-//
2388-#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
2389-#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
2390-
2391-
2392-// Value-parameterized tests allow you to test your code with different
2393-// parameters without writing multiple copies of the same test.
2394-//
2395-// Here is how you use value-parameterized tests:
2396-
2397-#if 0
2398-
2399-// To write value-parameterized tests, first you should define a fixture
2400-// class. It is usually derived from testing::TestWithParam<T> (see below for
2401-// another inheritance scheme that's sometimes useful in more complicated
2402-// class hierarchies), where the type of your parameter values.
2403-// TestWithParam<T> is itself derived from testing::Test. T can be any
2404-// copyable type. If it's a raw pointer, you are responsible for managing the
2405-// lifespan of the pointed values.
2406-
2407-class FooTest : public ::testing::TestWithParam<const char*> {
2408- // You can implement all the usual class fixture members here.
2409-};
2410-
2411-// Then, use the TEST_P macro to define as many parameterized tests
2412-// for this fixture as you want. The _P suffix is for "parameterized"
2413-// or "pattern", whichever you prefer to think.
2414-
2415-TEST_P(FooTest, DoesBlah) {
2416- // Inside a test, access the test parameter with the GetParam() method
2417- // of the TestWithParam<T> class:
2418- EXPECT_TRUE(foo.Blah(GetParam()));
2419- ...
2420-}
2421-
2422-TEST_P(FooTest, HasBlahBlah) {
2423- ...
2424-}
2425-
2426-// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
2427-// case with any set of parameters you want. Google Test defines a number
2428-// of functions for generating test parameters. They return what we call
2429-// (surprise!) parameter generators. Here is a summary of them, which
2430-// are all in the testing namespace:
2431-//
2432-//
2433-// Range(begin, end [, step]) - Yields values {begin, begin+step,
2434-// begin+step+step, ...}. The values do not
2435-// include end. step defaults to 1.
2436-// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
2437-// ValuesIn(container) - Yields values from a C-style array, an STL
2438-// ValuesIn(begin,end) container, or an iterator range [begin, end).
2439-// Bool() - Yields sequence {false, true}.
2440-// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
2441-// for the math savvy) of the values generated
2442-// by the N generators.
2443-//
2444-// For more details, see comments at the definitions of these functions below
2445-// in this file.
2446-//
2447-// The following statement will instantiate tests from the FooTest test case
2448-// each with parameter values "meeny", "miny", and "moe".
2449-
2450-INSTANTIATE_TEST_CASE_P(InstantiationName,
2451- FooTest,
2452- Values("meeny", "miny", "moe"));
2453-
2454-// To distinguish different instances of the pattern, (yes, you
2455-// can instantiate it more then once) the first argument to the
2456-// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
2457-// actual test case name. Remember to pick unique prefixes for different
2458-// instantiations. The tests from the instantiation above will have
2459-// these names:
2460-//
2461-// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
2462-// * InstantiationName/FooTest.DoesBlah/1 for "miny"
2463-// * InstantiationName/FooTest.DoesBlah/2 for "moe"
2464-// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
2465-// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
2466-// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
2467-//
2468-// You can use these names in --gtest_filter.
2469-//
2470-// This statement will instantiate all tests from FooTest again, each
2471-// with parameter values "cat" and "dog":
2472-
2473-const char* pets[] = {"cat", "dog"};
2474-INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
2475-
2476-// The tests from the instantiation above will have these names:
2477-//
2478-// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
2479-// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
2480-// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
2481-// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
2482-//
2483-// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
2484-// in the given test case, whether their definitions come before or
2485-// AFTER the INSTANTIATE_TEST_CASE_P statement.
2486-//
2487-// Please also note that generator expressions (including parameters to the
2488-// generators) are evaluated in InitGoogleTest(), after main() has started.
2489-// This allows the user on one hand, to adjust generator parameters in order
2490-// to dynamically determine a set of tests to run and on the other hand,
2491-// give the user a chance to inspect the generated tests with Google Test
2492-// reflection API before RUN_ALL_TESTS() is executed.
2493-//
2494-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
2495-// for more examples.
2496-//
2497-// In the future, we plan to publish the API for defining new parameter
2498-// generators. But for now this interface remains part of the internal
2499-// implementation and is subject to change.
2500-//
2501-//
2502-// A parameterized test fixture must be derived from testing::Test and from
2503-// testing::WithParamInterface<T>, where T is the type of the parameter
2504-// values. Inheriting from TestWithParam<T> satisfies that requirement because
2505-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
2506-// complicated hierarchies, however, it is occasionally useful to inherit
2507-// separately from Test and WithParamInterface. For example:
2508-
2509-class BaseTest : public ::testing::Test {
2510- // You can inherit all the usual members for a non-parameterized test
2511- // fixture here.
2512-};
2513-
2514-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
2515- // The usual test fixture members go here too.
2516-};
2517-
2518-TEST_F(BaseTest, HasFoo) {
2519- // This is an ordinary non-parameterized test.
2520-}
2521-
2522-TEST_P(DerivedTest, DoesBlah) {
2523- // GetParam works just the same here as if you inherit from TestWithParam.
2524- EXPECT_TRUE(foo.Blah(GetParam()));
2525-}
2526-
2527-#endif // 0
2528-
2529-#include "gtest/internal/gtest-port.h"
2530-
2531-#if !GTEST_OS_SYMBIAN
2532-# include <utility>
2533-#endif
2534-
2535-// scripts/fuse_gtest.py depends on gtest's own header being #included
2536-// *unconditionally*. Therefore these #includes cannot be moved
2537-// inside #if GTEST_HAS_PARAM_TEST.
2538-#include "gtest/internal/gtest-internal.h"
2539-#include "gtest/internal/gtest-param-util.h"
2540-#include "gtest/internal/gtest-param-util-generated.h"
2541-
2542-#if GTEST_HAS_PARAM_TEST
2543-
2544-namespace testing {
2545-
2546-// Functions producing parameter generators.
2547-//
2548-// Google Test uses these generators to produce parameters for value-
2549-// parameterized tests. When a parameterized test case is instantiated
2550-// with a particular generator, Google Test creates and runs tests
2551-// for each element in the sequence produced by the generator.
2552-//
2553-// In the following sample, tests from test case FooTest are instantiated
2554-// each three times with parameter values 3, 5, and 8:
2555-//
2556-// class FooTest : public TestWithParam<int> { ... };
2557-//
2558-// TEST_P(FooTest, TestThis) {
2559-// }
2560-// TEST_P(FooTest, TestThat) {
2561-// }
2562-// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
2563-//
2564-
2565-// Range() returns generators providing sequences of values in a range.
2566-//
2567-// Synopsis:
2568-// Range(start, end)
2569-// - returns a generator producing a sequence of values {start, start+1,
2570-// start+2, ..., }.
2571-// Range(start, end, step)
2572-// - returns a generator producing a sequence of values {start, start+step,
2573-// start+step+step, ..., }.
2574-// Notes:
2575-// * The generated sequences never include end. For example, Range(1, 5)
2576-// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
2577-// returns a generator producing {1, 3, 5, 7}.
2578-// * start and end must have the same type. That type may be any integral or
2579-// floating-point type or a user defined type satisfying these conditions:
2580-// * It must be assignable (have operator=() defined).
2581-// * It must have operator+() (operator+(int-compatible type) for
2582-// two-operand version).
2583-// * It must have operator<() defined.
2584-// Elements in the resulting sequences will also have that type.
2585-// * Condition start < end must be satisfied in order for resulting sequences
2586-// to contain any elements.
2587-//
2588-template <typename T, typename IncrementT>
2589-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
2590- return internal::ParamGenerator<T>(
2591- new internal::RangeGenerator<T, IncrementT>(start, end, step));
2592-}
2593-
2594-template <typename T>
2595-internal::ParamGenerator<T> Range(T start, T end) {
2596- return Range(start, end, 1);
2597-}
2598-
2599-// ValuesIn() function allows generation of tests with parameters coming from
2600-// a container.
2601-//
2602-// Synopsis:
2603-// ValuesIn(const T (&array)[N])
2604-// - returns a generator producing sequences with elements from
2605-// a C-style array.
2606-// ValuesIn(const Container& container)
2607-// - returns a generator producing sequences with elements from
2608-// an STL-style container.
2609-// ValuesIn(Iterator begin, Iterator end)
2610-// - returns a generator producing sequences with elements from
2611-// a range [begin, end) defined by a pair of STL-style iterators. These
2612-// iterators can also be plain C pointers.
2613-//
2614-// Please note that ValuesIn copies the values from the containers
2615-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
2616-//
2617-// Examples:
2618-//
2619-// This instantiates tests from test case StringTest
2620-// each with C-string values of "foo", "bar", and "baz":
2621-//
2622-// const char* strings[] = {"foo", "bar", "baz"};
2623-// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
2624-//
2625-// This instantiates tests from test case StlStringTest
2626-// each with STL strings with values "a" and "b":
2627-//
2628-// ::std::vector< ::std::string> GetParameterStrings() {
2629-// ::std::vector< ::std::string> v;
2630-// v.push_back("a");
2631-// v.push_back("b");
2632-// return v;
2633-// }
2634-//
2635-// INSTANTIATE_TEST_CASE_P(CharSequence,
2636-// StlStringTest,
2637-// ValuesIn(GetParameterStrings()));
2638-//
2639-//
2640-// This will also instantiate tests from CharTest
2641-// each with parameter values 'a' and 'b':
2642-//
2643-// ::std::list<char> GetParameterChars() {
2644-// ::std::list<char> list;
2645-// list.push_back('a');
2646-// list.push_back('b');
2647-// return list;
2648-// }
2649-// ::std::list<char> l = GetParameterChars();
2650-// INSTANTIATE_TEST_CASE_P(CharSequence2,
2651-// CharTest,
2652-// ValuesIn(l.begin(), l.end()));
2653-//
2654-template <typename ForwardIterator>
2655-internal::ParamGenerator<
2656- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
2657-ValuesIn(ForwardIterator begin, ForwardIterator end) {
2658- typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
2659- ::value_type ParamType;
2660- return internal::ParamGenerator<ParamType>(
2661- new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
2662-}
2663-
2664-template <typename T, size_t N>
2665-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
2666- return ValuesIn(array, array + N);
2667-}
2668-
2669-template <class Container>
2670-internal::ParamGenerator<typename Container::value_type> ValuesIn(
2671- const Container& container) {
2672- return ValuesIn(container.begin(), container.end());
2673-}
2674-
2675-// Values() allows generating tests from explicitly specified list of
2676-// parameters.
2677-//
2678-// Synopsis:
2679-// Values(T v1, T v2, ..., T vN)
2680-// - returns a generator producing sequences with elements v1, v2, ..., vN.
2681-//
2682-// For example, this instantiates tests from test case BarTest each
2683-// with values "one", "two", and "three":
2684-//
2685-// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
2686-//
2687-// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
2688-// The exact type of values will depend on the type of parameter in BazTest.
2689-//
2690-// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
2691-//
2692-// Currently, Values() supports from 1 to 50 parameters.
2693-//
2694-template <typename T1>
2695-internal::ValueArray1<T1> Values(T1 v1) {
2696- return internal::ValueArray1<T1>(v1);
2697-}
2698-
2699-template <typename T1, typename T2>
2700-internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
2701- return internal::ValueArray2<T1, T2>(v1, v2);
2702-}
2703-
2704-template <typename T1, typename T2, typename T3>
2705-internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
2706- return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
2707-}
2708-
2709-template <typename T1, typename T2, typename T3, typename T4>
2710-internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
2711- return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
2712-}
2713-
2714-template <typename T1, typename T2, typename T3, typename T4, typename T5>
2715-internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
2716- T5 v5) {
2717- return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
2718-}
2719-
2720-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2721- typename T6>
2722-internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
2723- T4 v4, T5 v5, T6 v6) {
2724- return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
2725-}
2726-
2727-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2728- typename T6, typename T7>
2729-internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
2730- T4 v4, T5 v5, T6 v6, T7 v7) {
2731- return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
2732- v6, v7);
2733-}
2734-
2735-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2736- typename T6, typename T7, typename T8>
2737-internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
2738- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
2739- return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
2740- v5, v6, v7, v8);
2741-}
2742-
2743-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2744- typename T6, typename T7, typename T8, typename T9>
2745-internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
2746- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
2747- return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
2748- v4, v5, v6, v7, v8, v9);
2749-}
2750-
2751-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2752- typename T6, typename T7, typename T8, typename T9, typename T10>
2753-internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
2754- T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
2755- return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
2756- v2, v3, v4, v5, v6, v7, v8, v9, v10);
2757-}
2758-
2759-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2760- typename T6, typename T7, typename T8, typename T9, typename T10,
2761- typename T11>
2762-internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
2763- T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2764- T10 v10, T11 v11) {
2765- return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
2766- T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
2767-}
2768-
2769-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2770- typename T6, typename T7, typename T8, typename T9, typename T10,
2771- typename T11, typename T12>
2772-internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2773- T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2774- T10 v10, T11 v11, T12 v12) {
2775- return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2776- T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
2777-}
2778-
2779-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2780- typename T6, typename T7, typename T8, typename T9, typename T10,
2781- typename T11, typename T12, typename T13>
2782-internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
2783- T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2784- T10 v10, T11 v11, T12 v12, T13 v13) {
2785- return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2786- T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
2787-}
2788-
2789-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2790- typename T6, typename T7, typename T8, typename T9, typename T10,
2791- typename T11, typename T12, typename T13, typename T14>
2792-internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2793- T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2794- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
2795- return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2796- T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
2797- v14);
2798-}
2799-
2800-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2801- typename T6, typename T7, typename T8, typename T9, typename T10,
2802- typename T11, typename T12, typename T13, typename T14, typename T15>
2803-internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2804- T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
2805- T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
2806- return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2807- T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
2808- v13, v14, v15);
2809-}
2810-
2811-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2812- typename T6, typename T7, typename T8, typename T9, typename T10,
2813- typename T11, typename T12, typename T13, typename T14, typename T15,
2814- typename T16>
2815-internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2816- T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
2817- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
2818- T16 v16) {
2819- return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2820- T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
2821- v12, v13, v14, v15, v16);
2822-}
2823-
2824-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2825- typename T6, typename T7, typename T8, typename T9, typename T10,
2826- typename T11, typename T12, typename T13, typename T14, typename T15,
2827- typename T16, typename T17>
2828-internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2829- T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
2830- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
2831- T16 v16, T17 v17) {
2832- return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2833- T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
2834- v11, v12, v13, v14, v15, v16, v17);
2835-}
2836-
2837-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2838- typename T6, typename T7, typename T8, typename T9, typename T10,
2839- typename T11, typename T12, typename T13, typename T14, typename T15,
2840- typename T16, typename T17, typename T18>
2841-internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2842- T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
2843- T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
2844- T16 v16, T17 v17, T18 v18) {
2845- return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2846- T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
2847- v10, v11, v12, v13, v14, v15, v16, v17, v18);
2848-}
2849-
2850-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2851- typename T6, typename T7, typename T8, typename T9, typename T10,
2852- typename T11, typename T12, typename T13, typename T14, typename T15,
2853- typename T16, typename T17, typename T18, typename T19>
2854-internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2855- T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
2856- T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
2857- T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
2858- return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2859- T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
2860- v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
2861-}
2862-
2863-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2864- typename T6, typename T7, typename T8, typename T9, typename T10,
2865- typename T11, typename T12, typename T13, typename T14, typename T15,
2866- typename T16, typename T17, typename T18, typename T19, typename T20>
2867-internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2868- T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
2869- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
2870- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
2871- return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2872- T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
2873- v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
2874-}
2875-
2876-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2877- typename T6, typename T7, typename T8, typename T9, typename T10,
2878- typename T11, typename T12, typename T13, typename T14, typename T15,
2879- typename T16, typename T17, typename T18, typename T19, typename T20,
2880- typename T21>
2881-internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2882- T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
2883- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
2884- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
2885- return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2886- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
2887- v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
2888-}
2889-
2890-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2891- typename T6, typename T7, typename T8, typename T9, typename T10,
2892- typename T11, typename T12, typename T13, typename T14, typename T15,
2893- typename T16, typename T17, typename T18, typename T19, typename T20,
2894- typename T21, typename T22>
2895-internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2896- T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
2897- T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
2898- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
2899- T21 v21, T22 v22) {
2900- return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2901- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
2902- v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
2903- v20, v21, v22);
2904-}
2905-
2906-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2907- typename T6, typename T7, typename T8, typename T9, typename T10,
2908- typename T11, typename T12, typename T13, typename T14, typename T15,
2909- typename T16, typename T17, typename T18, typename T19, typename T20,
2910- typename T21, typename T22, typename T23>
2911-internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2912- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
2913- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
2914- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
2915- T21 v21, T22 v22, T23 v23) {
2916- return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2917- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
2918- v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
2919- v20, v21, v22, v23);
2920-}
2921-
2922-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2923- typename T6, typename T7, typename T8, typename T9, typename T10,
2924- typename T11, typename T12, typename T13, typename T14, typename T15,
2925- typename T16, typename T17, typename T18, typename T19, typename T20,
2926- typename T21, typename T22, typename T23, typename T24>
2927-internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2928- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
2929- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
2930- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
2931- T21 v21, T22 v22, T23 v23, T24 v24) {
2932- return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2933- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
2934- v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
2935- v19, v20, v21, v22, v23, v24);
2936-}
2937-
2938-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2939- typename T6, typename T7, typename T8, typename T9, typename T10,
2940- typename T11, typename T12, typename T13, typename T14, typename T15,
2941- typename T16, typename T17, typename T18, typename T19, typename T20,
2942- typename T21, typename T22, typename T23, typename T24, typename T25>
2943-internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2944- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
2945- T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
2946- T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
2947- T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
2948- return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2949- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
2950- v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
2951- v18, v19, v20, v21, v22, v23, v24, v25);
2952-}
2953-
2954-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2955- typename T6, typename T7, typename T8, typename T9, typename T10,
2956- typename T11, typename T12, typename T13, typename T14, typename T15,
2957- typename T16, typename T17, typename T18, typename T19, typename T20,
2958- typename T21, typename T22, typename T23, typename T24, typename T25,
2959- typename T26>
2960-internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2961- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
2962- T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2963- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2964- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2965- T26 v26) {
2966- return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2967- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
2968- T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
2969- v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
2970-}
2971-
2972-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2973- typename T6, typename T7, typename T8, typename T9, typename T10,
2974- typename T11, typename T12, typename T13, typename T14, typename T15,
2975- typename T16, typename T17, typename T18, typename T19, typename T20,
2976- typename T21, typename T22, typename T23, typename T24, typename T25,
2977- typename T26, typename T27>
2978-internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2979- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
2980- T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2981- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
2982- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
2983- T26 v26, T27 v27) {
2984- return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
2985- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
2986- T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
2987- v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
2988-}
2989-
2990-template <typename T1, typename T2, typename T3, typename T4, typename T5,
2991- typename T6, typename T7, typename T8, typename T9, typename T10,
2992- typename T11, typename T12, typename T13, typename T14, typename T15,
2993- typename T16, typename T17, typename T18, typename T19, typename T20,
2994- typename T21, typename T22, typename T23, typename T24, typename T25,
2995- typename T26, typename T27, typename T28>
2996-internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
2997- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
2998- T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
2999- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3000- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3001- T26 v26, T27 v27, T28 v28) {
3002- return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3003- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3004- T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
3005- v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
3006- v28);
3007-}
3008-
3009-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3010- typename T6, typename T7, typename T8, typename T9, typename T10,
3011- typename T11, typename T12, typename T13, typename T14, typename T15,
3012- typename T16, typename T17, typename T18, typename T19, typename T20,
3013- typename T21, typename T22, typename T23, typename T24, typename T25,
3014- typename T26, typename T27, typename T28, typename T29>
3015-internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3016- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3017- T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3018- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3019- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3020- T26 v26, T27 v27, T28 v28, T29 v29) {
3021- return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3022- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3023- T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
3024- v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
3025- v27, v28, v29);
3026-}
3027-
3028-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3029- typename T6, typename T7, typename T8, typename T9, typename T10,
3030- typename T11, typename T12, typename T13, typename T14, typename T15,
3031- typename T16, typename T17, typename T18, typename T19, typename T20,
3032- typename T21, typename T22, typename T23, typename T24, typename T25,
3033- typename T26, typename T27, typename T28, typename T29, typename T30>
3034-internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3035- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3036- T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
3037- T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
3038- T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
3039- T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
3040- return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3041- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3042- T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
3043- v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
3044- v26, v27, v28, v29, v30);
3045-}
3046-
3047-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3048- typename T6, typename T7, typename T8, typename T9, typename T10,
3049- typename T11, typename T12, typename T13, typename T14, typename T15,
3050- typename T16, typename T17, typename T18, typename T19, typename T20,
3051- typename T21, typename T22, typename T23, typename T24, typename T25,
3052- typename T26, typename T27, typename T28, typename T29, typename T30,
3053- typename T31>
3054-internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3055- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3056- T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
3057- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
3058- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
3059- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
3060- return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3061- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3062- T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
3063- v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
3064- v25, v26, v27, v28, v29, v30, v31);
3065-}
3066-
3067-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3068- typename T6, typename T7, typename T8, typename T9, typename T10,
3069- typename T11, typename T12, typename T13, typename T14, typename T15,
3070- typename T16, typename T17, typename T18, typename T19, typename T20,
3071- typename T21, typename T22, typename T23, typename T24, typename T25,
3072- typename T26, typename T27, typename T28, typename T29, typename T30,
3073- typename T31, typename T32>
3074-internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3075- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3076- T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
3077- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
3078- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
3079- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
3080- T32 v32) {
3081- return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3082- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3083- T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
3084- v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
3085- v24, v25, v26, v27, v28, v29, v30, v31, v32);
3086-}
3087-
3088-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3089- typename T6, typename T7, typename T8, typename T9, typename T10,
3090- typename T11, typename T12, typename T13, typename T14, typename T15,
3091- typename T16, typename T17, typename T18, typename T19, typename T20,
3092- typename T21, typename T22, typename T23, typename T24, typename T25,
3093- typename T26, typename T27, typename T28, typename T29, typename T30,
3094- typename T31, typename T32, typename T33>
3095-internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3096- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3097- T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
3098- T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
3099- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
3100- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
3101- T32 v32, T33 v33) {
3102- return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3103- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3104- T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
3105- v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
3106- v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
3107-}
3108-
3109-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3110- typename T6, typename T7, typename T8, typename T9, typename T10,
3111- typename T11, typename T12, typename T13, typename T14, typename T15,
3112- typename T16, typename T17, typename T18, typename T19, typename T20,
3113- typename T21, typename T22, typename T23, typename T24, typename T25,
3114- typename T26, typename T27, typename T28, typename T29, typename T30,
3115- typename T31, typename T32, typename T33, typename T34>
3116-internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3117- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3118- T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
3119- T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
3120- T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
3121- T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
3122- T31 v31, T32 v32, T33 v33, T34 v34) {
3123- return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3124- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3125- T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
3126- v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
3127- v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
3128-}
3129-
3130-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3131- typename T6, typename T7, typename T8, typename T9, typename T10,
3132- typename T11, typename T12, typename T13, typename T14, typename T15,
3133- typename T16, typename T17, typename T18, typename T19, typename T20,
3134- typename T21, typename T22, typename T23, typename T24, typename T25,
3135- typename T26, typename T27, typename T28, typename T29, typename T30,
3136- typename T31, typename T32, typename T33, typename T34, typename T35>
3137-internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3138- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3139- T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
3140- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
3141- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
3142- T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
3143- T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
3144- return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3145- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3146- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
3147- v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
3148- v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
3149-}
3150-
3151-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3152- typename T6, typename T7, typename T8, typename T9, typename T10,
3153- typename T11, typename T12, typename T13, typename T14, typename T15,
3154- typename T16, typename T17, typename T18, typename T19, typename T20,
3155- typename T21, typename T22, typename T23, typename T24, typename T25,
3156- typename T26, typename T27, typename T28, typename T29, typename T30,
3157- typename T31, typename T32, typename T33, typename T34, typename T35,
3158- typename T36>
3159-internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3160- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3161- T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
3162- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
3163- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
3164- T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
3165- T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
3166- return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3167- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3168- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
3169- v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
3170- v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
3171- v34, v35, v36);
3172-}
3173-
3174-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3175- typename T6, typename T7, typename T8, typename T9, typename T10,
3176- typename T11, typename T12, typename T13, typename T14, typename T15,
3177- typename T16, typename T17, typename T18, typename T19, typename T20,
3178- typename T21, typename T22, typename T23, typename T24, typename T25,
3179- typename T26, typename T27, typename T28, typename T29, typename T30,
3180- typename T31, typename T32, typename T33, typename T34, typename T35,
3181- typename T36, typename T37>
3182-internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3183- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3184- T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
3185- T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
3186- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
3187- T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
3188- T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
3189- T37 v37) {
3190- return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3191- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3192- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
3193- v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
3194- v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
3195- v34, v35, v36, v37);
3196-}
3197-
3198-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3199- typename T6, typename T7, typename T8, typename T9, typename T10,
3200- typename T11, typename T12, typename T13, typename T14, typename T15,
3201- typename T16, typename T17, typename T18, typename T19, typename T20,
3202- typename T21, typename T22, typename T23, typename T24, typename T25,
3203- typename T26, typename T27, typename T28, typename T29, typename T30,
3204- typename T31, typename T32, typename T33, typename T34, typename T35,
3205- typename T36, typename T37, typename T38>
3206-internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3207- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3208- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
3209- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
3210- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
3211- T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
3212- T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
3213- T37 v37, T38 v38) {
3214- return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3215- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3216- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
3217- v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
3218- v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
3219- v33, v34, v35, v36, v37, v38);
3220-}
3221-
3222-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3223- typename T6, typename T7, typename T8, typename T9, typename T10,
3224- typename T11, typename T12, typename T13, typename T14, typename T15,
3225- typename T16, typename T17, typename T18, typename T19, typename T20,
3226- typename T21, typename T22, typename T23, typename T24, typename T25,
3227- typename T26, typename T27, typename T28, typename T29, typename T30,
3228- typename T31, typename T32, typename T33, typename T34, typename T35,
3229- typename T36, typename T37, typename T38, typename T39>
3230-internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3231- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3232- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
3233- T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
3234- T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
3235- T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
3236- T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
3237- T37 v37, T38 v38, T39 v39) {
3238- return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3239- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3240- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
3241- v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
3242- v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
3243- v32, v33, v34, v35, v36, v37, v38, v39);
3244-}
3245-
3246-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3247- typename T6, typename T7, typename T8, typename T9, typename T10,
3248- typename T11, typename T12, typename T13, typename T14, typename T15,
3249- typename T16, typename T17, typename T18, typename T19, typename T20,
3250- typename T21, typename T22, typename T23, typename T24, typename T25,
3251- typename T26, typename T27, typename T28, typename T29, typename T30,
3252- typename T31, typename T32, typename T33, typename T34, typename T35,
3253- typename T36, typename T37, typename T38, typename T39, typename T40>
3254-internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3255- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3256- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
3257- T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
3258- T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
3259- T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
3260- T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
3261- T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
3262- return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3263- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3264- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3265- T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
3266- v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
3267- v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
3268-}
3269-
3270-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3271- typename T6, typename T7, typename T8, typename T9, typename T10,
3272- typename T11, typename T12, typename T13, typename T14, typename T15,
3273- typename T16, typename T17, typename T18, typename T19, typename T20,
3274- typename T21, typename T22, typename T23, typename T24, typename T25,
3275- typename T26, typename T27, typename T28, typename T29, typename T30,
3276- typename T31, typename T32, typename T33, typename T34, typename T35,
3277- typename T36, typename T37, typename T38, typename T39, typename T40,
3278- typename T41>
3279-internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3280- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3281- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
3282- T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3283- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3284- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3285- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3286- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
3287- return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3288- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3289- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3290- T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
3291- v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
3292- v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
3293-}
3294-
3295-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3296- typename T6, typename T7, typename T8, typename T9, typename T10,
3297- typename T11, typename T12, typename T13, typename T14, typename T15,
3298- typename T16, typename T17, typename T18, typename T19, typename T20,
3299- typename T21, typename T22, typename T23, typename T24, typename T25,
3300- typename T26, typename T27, typename T28, typename T29, typename T30,
3301- typename T31, typename T32, typename T33, typename T34, typename T35,
3302- typename T36, typename T37, typename T38, typename T39, typename T40,
3303- typename T41, typename T42>
3304-internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3305- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3306- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
3307- T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3308- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3309- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3310- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3311- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
3312- T42 v42) {
3313- return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3314- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3315- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3316- T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
3317- v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
3318- v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
3319- v42);
3320-}
3321-
3322-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3323- typename T6, typename T7, typename T8, typename T9, typename T10,
3324- typename T11, typename T12, typename T13, typename T14, typename T15,
3325- typename T16, typename T17, typename T18, typename T19, typename T20,
3326- typename T21, typename T22, typename T23, typename T24, typename T25,
3327- typename T26, typename T27, typename T28, typename T29, typename T30,
3328- typename T31, typename T32, typename T33, typename T34, typename T35,
3329- typename T36, typename T37, typename T38, typename T39, typename T40,
3330- typename T41, typename T42, typename T43>
3331-internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3332- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3333- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
3334- T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3335- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3336- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3337- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3338- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
3339- T42 v42, T43 v43) {
3340- return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3341- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3342- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3343- T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
3344- v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
3345- v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
3346- v41, v42, v43);
3347-}
3348-
3349-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3350- typename T6, typename T7, typename T8, typename T9, typename T10,
3351- typename T11, typename T12, typename T13, typename T14, typename T15,
3352- typename T16, typename T17, typename T18, typename T19, typename T20,
3353- typename T21, typename T22, typename T23, typename T24, typename T25,
3354- typename T26, typename T27, typename T28, typename T29, typename T30,
3355- typename T31, typename T32, typename T33, typename T34, typename T35,
3356- typename T36, typename T37, typename T38, typename T39, typename T40,
3357- typename T41, typename T42, typename T43, typename T44>
3358-internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3359- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3360- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3361- T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
3362- T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
3363- T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
3364- T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
3365- T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
3366- T42 v42, T43 v43, T44 v44) {
3367- return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3368- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3369- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3370- T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
3371- v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
3372- v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
3373- v40, v41, v42, v43, v44);
3374-}
3375-
3376-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3377- typename T6, typename T7, typename T8, typename T9, typename T10,
3378- typename T11, typename T12, typename T13, typename T14, typename T15,
3379- typename T16, typename T17, typename T18, typename T19, typename T20,
3380- typename T21, typename T22, typename T23, typename T24, typename T25,
3381- typename T26, typename T27, typename T28, typename T29, typename T30,
3382- typename T31, typename T32, typename T33, typename T34, typename T35,
3383- typename T36, typename T37, typename T38, typename T39, typename T40,
3384- typename T41, typename T42, typename T43, typename T44, typename T45>
3385-internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3386- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3387- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3388- T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
3389- T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
3390- T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
3391- T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
3392- T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
3393- T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
3394- return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3395- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3396- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3397- T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
3398- v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
3399- v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
3400- v39, v40, v41, v42, v43, v44, v45);
3401-}
3402-
3403-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3404- typename T6, typename T7, typename T8, typename T9, typename T10,
3405- typename T11, typename T12, typename T13, typename T14, typename T15,
3406- typename T16, typename T17, typename T18, typename T19, typename T20,
3407- typename T21, typename T22, typename T23, typename T24, typename T25,
3408- typename T26, typename T27, typename T28, typename T29, typename T30,
3409- typename T31, typename T32, typename T33, typename T34, typename T35,
3410- typename T36, typename T37, typename T38, typename T39, typename T40,
3411- typename T41, typename T42, typename T43, typename T44, typename T45,
3412- typename T46>
3413-internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3414- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3415- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3416- T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
3417- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
3418- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
3419- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
3420- T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
3421- T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
3422- return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3423- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3424- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3425- T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
3426- v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
3427- v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
3428- v38, v39, v40, v41, v42, v43, v44, v45, v46);
3429-}
3430-
3431-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3432- typename T6, typename T7, typename T8, typename T9, typename T10,
3433- typename T11, typename T12, typename T13, typename T14, typename T15,
3434- typename T16, typename T17, typename T18, typename T19, typename T20,
3435- typename T21, typename T22, typename T23, typename T24, typename T25,
3436- typename T26, typename T27, typename T28, typename T29, typename T30,
3437- typename T31, typename T32, typename T33, typename T34, typename T35,
3438- typename T36, typename T37, typename T38, typename T39, typename T40,
3439- typename T41, typename T42, typename T43, typename T44, typename T45,
3440- typename T46, typename T47>
3441-internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3442- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3443- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3444- T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
3445- T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
3446- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
3447- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
3448- T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
3449- T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
3450- return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3451- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3452- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3453- T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
3454- v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
3455- v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
3456- v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
3457-}
3458-
3459-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3460- typename T6, typename T7, typename T8, typename T9, typename T10,
3461- typename T11, typename T12, typename T13, typename T14, typename T15,
3462- typename T16, typename T17, typename T18, typename T19, typename T20,
3463- typename T21, typename T22, typename T23, typename T24, typename T25,
3464- typename T26, typename T27, typename T28, typename T29, typename T30,
3465- typename T31, typename T32, typename T33, typename T34, typename T35,
3466- typename T36, typename T37, typename T38, typename T39, typename T40,
3467- typename T41, typename T42, typename T43, typename T44, typename T45,
3468- typename T46, typename T47, typename T48>
3469-internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3470- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3471- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3472- T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
3473- T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
3474- T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
3475- T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
3476- T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
3477- T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
3478- T48 v48) {
3479- return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3480- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3481- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3482- T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
3483- v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
3484- v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
3485- v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
3486-}
3487-
3488-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3489- typename T6, typename T7, typename T8, typename T9, typename T10,
3490- typename T11, typename T12, typename T13, typename T14, typename T15,
3491- typename T16, typename T17, typename T18, typename T19, typename T20,
3492- typename T21, typename T22, typename T23, typename T24, typename T25,
3493- typename T26, typename T27, typename T28, typename T29, typename T30,
3494- typename T31, typename T32, typename T33, typename T34, typename T35,
3495- typename T36, typename T37, typename T38, typename T39, typename T40,
3496- typename T41, typename T42, typename T43, typename T44, typename T45,
3497- typename T46, typename T47, typename T48, typename T49>
3498-internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3499- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3500- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3501- T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
3502- T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
3503- T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
3504- T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
3505- T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
3506- T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
3507- T47 v47, T48 v48, T49 v49) {
3508- return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3509- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3510- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3511- T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
3512- v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
3513- v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
3514- v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
3515-}
3516-
3517-template <typename T1, typename T2, typename T3, typename T4, typename T5,
3518- typename T6, typename T7, typename T8, typename T9, typename T10,
3519- typename T11, typename T12, typename T13, typename T14, typename T15,
3520- typename T16, typename T17, typename T18, typename T19, typename T20,
3521- typename T21, typename T22, typename T23, typename T24, typename T25,
3522- typename T26, typename T27, typename T28, typename T29, typename T30,
3523- typename T31, typename T32, typename T33, typename T34, typename T35,
3524- typename T36, typename T37, typename T38, typename T39, typename T40,
3525- typename T41, typename T42, typename T43, typename T44, typename T45,
3526- typename T46, typename T47, typename T48, typename T49, typename T50>
3527-internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
3528- T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3529- T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3530- T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
3531- T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
3532- T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
3533- T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
3534- T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
3535- T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
3536- T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
3537- return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
3538- T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
3539- T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
3540- T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
3541- v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
3542- v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
3543- v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
3544- v48, v49, v50);
3545-}
3546-
3547-// Bool() allows generating tests with parameters in a set of (false, true).
3548-//
3549-// Synopsis:
3550-// Bool()
3551-// - returns a generator producing sequences with elements {false, true}.
3552-//
3553-// It is useful when testing code that depends on Boolean flags. Combinations
3554-// of multiple flags can be tested when several Bool()'s are combined using
3555-// Combine() function.
3556-//
3557-// In the following example all tests in the test case FlagDependentTest
3558-// will be instantiated twice with parameters false and true.
3559-//
3560-// class FlagDependentTest : public testing::TestWithParam<bool> {
3561-// virtual void SetUp() {
3562-// external_flag = GetParam();
3563-// }
3564-// }
3565-// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
3566-//
3567-inline internal::ParamGenerator<bool> Bool() {
3568- return Values(false, true);
3569-}
3570-
3571-# if GTEST_HAS_COMBINE
3572-// Combine() allows the user to combine two or more sequences to produce
3573-// values of a Cartesian product of those sequences' elements.
3574-//
3575-// Synopsis:
3576-// Combine(gen1, gen2, ..., genN)
3577-// - returns a generator producing sequences with elements coming from
3578-// the Cartesian product of elements from the sequences generated by
3579-// gen1, gen2, ..., genN. The sequence elements will have a type of
3580-// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
3581-// of elements from sequences produces by gen1, gen2, ..., genN.
3582-//
3583-// Combine can have up to 10 arguments. This number is currently limited
3584-// by the maximum number of elements in the tuple implementation used by Google
3585-// Test.
3586-//
3587-// Example:
3588-//
3589-// This will instantiate tests in test case AnimalTest each one with
3590-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
3591-// tuple("dog", BLACK), and tuple("dog", WHITE):
3592-//
3593-// enum Color { BLACK, GRAY, WHITE };
3594-// class AnimalTest
3595-// : public testing::TestWithParam<tuple<const char*, Color> > {...};
3596-//
3597-// TEST_P(AnimalTest, AnimalLooksNice) {...}
3598-//
3599-// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
3600-// Combine(Values("cat", "dog"),
3601-// Values(BLACK, WHITE)));
3602-//
3603-// This will instantiate tests in FlagDependentTest with all variations of two
3604-// Boolean flags:
3605-//
3606-// class FlagDependentTest
3607-// : public testing::TestWithParam<tuple<bool, bool> > {
3608-// virtual void SetUp() {
3609-// // Assigns external_flag_1 and external_flag_2 values from the tuple.
3610-// tie(external_flag_1, external_flag_2) = GetParam();
3611-// }
3612-// };
3613-//
3614-// TEST_P(FlagDependentTest, TestFeature1) {
3615-// // Test your code using external_flag_1 and external_flag_2 here.
3616-// }
3617-// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
3618-// Combine(Bool(), Bool()));
3619-//
3620-template <typename Generator1, typename Generator2>
3621-internal::CartesianProductHolder2<Generator1, Generator2> Combine(
3622- const Generator1& g1, const Generator2& g2) {
3623- return internal::CartesianProductHolder2<Generator1, Generator2>(
3624- g1, g2);
3625-}
3626-
3627-template <typename Generator1, typename Generator2, typename Generator3>
3628-internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
3629- const Generator1& g1, const Generator2& g2, const Generator3& g3) {
3630- return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
3631- g1, g2, g3);
3632-}
3633-
3634-template <typename Generator1, typename Generator2, typename Generator3,
3635- typename Generator4>
3636-internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
3637- Generator4> Combine(
3638- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3639- const Generator4& g4) {
3640- return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
3641- Generator4>(
3642- g1, g2, g3, g4);
3643-}
3644-
3645-template <typename Generator1, typename Generator2, typename Generator3,
3646- typename Generator4, typename Generator5>
3647-internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
3648- Generator4, Generator5> Combine(
3649- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3650- const Generator4& g4, const Generator5& g5) {
3651- return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
3652- Generator4, Generator5>(
3653- g1, g2, g3, g4, g5);
3654-}
3655-
3656-template <typename Generator1, typename Generator2, typename Generator3,
3657- typename Generator4, typename Generator5, typename Generator6>
3658-internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
3659- Generator4, Generator5, Generator6> Combine(
3660- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3661- const Generator4& g4, const Generator5& g5, const Generator6& g6) {
3662- return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
3663- Generator4, Generator5, Generator6>(
3664- g1, g2, g3, g4, g5, g6);
3665-}
3666-
3667-template <typename Generator1, typename Generator2, typename Generator3,
3668- typename Generator4, typename Generator5, typename Generator6,
3669- typename Generator7>
3670-internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
3671- Generator4, Generator5, Generator6, Generator7> Combine(
3672- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3673- const Generator4& g4, const Generator5& g5, const Generator6& g6,
3674- const Generator7& g7) {
3675- return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
3676- Generator4, Generator5, Generator6, Generator7>(
3677- g1, g2, g3, g4, g5, g6, g7);
3678-}
3679-
3680-template <typename Generator1, typename Generator2, typename Generator3,
3681- typename Generator4, typename Generator5, typename Generator6,
3682- typename Generator7, typename Generator8>
3683-internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
3684- Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
3685- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3686- const Generator4& g4, const Generator5& g5, const Generator6& g6,
3687- const Generator7& g7, const Generator8& g8) {
3688- return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
3689- Generator4, Generator5, Generator6, Generator7, Generator8>(
3690- g1, g2, g3, g4, g5, g6, g7, g8);
3691-}
3692-
3693-template <typename Generator1, typename Generator2, typename Generator3,
3694- typename Generator4, typename Generator5, typename Generator6,
3695- typename Generator7, typename Generator8, typename Generator9>
3696-internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
3697- Generator4, Generator5, Generator6, Generator7, Generator8,
3698- Generator9> Combine(
3699- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3700- const Generator4& g4, const Generator5& g5, const Generator6& g6,
3701- const Generator7& g7, const Generator8& g8, const Generator9& g9) {
3702- return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
3703- Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
3704- g1, g2, g3, g4, g5, g6, g7, g8, g9);
3705-}
3706-
3707-template <typename Generator1, typename Generator2, typename Generator3,
3708- typename Generator4, typename Generator5, typename Generator6,
3709- typename Generator7, typename Generator8, typename Generator9,
3710- typename Generator10>
3711-internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
3712- Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
3713- Generator10> Combine(
3714- const Generator1& g1, const Generator2& g2, const Generator3& g3,
3715- const Generator4& g4, const Generator5& g5, const Generator6& g6,
3716- const Generator7& g7, const Generator8& g8, const Generator9& g9,
3717- const Generator10& g10) {
3718- return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
3719- Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
3720- Generator10>(
3721- g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
3722-}
3723-# endif // GTEST_HAS_COMBINE
3724-
3725-
3726-
3727-# define TEST_P(test_case_name, test_name) \
3728- class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
3729- : public test_case_name { \
3730- public: \
3731- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
3732- virtual void TestBody(); \
3733- private: \
3734- static int AddToRegistry() { \
3735- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
3736- GetTestCasePatternHolder<test_case_name>(\
3737- #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
3738- #test_case_name, \
3739- #test_name, \
3740- new ::testing::internal::TestMetaFactory< \
3741- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
3742- return 0; \
3743- } \
3744- static int gtest_registering_dummy_; \
3745- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
3746- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
3747- }; \
3748- int GTEST_TEST_CLASS_NAME_(test_case_name, \
3749- test_name)::gtest_registering_dummy_ = \
3750- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
3751- void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
3752-
3753-# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
3754- ::testing::internal::ParamGenerator<test_case_name::ParamType> \
3755- gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
3756- int gtest_##prefix##test_case_name##_dummy_ = \
3757- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
3758- GetTestCasePatternHolder<test_case_name>(\
3759- #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
3760- #prefix, \
3761- &gtest_##prefix##test_case_name##_EvalGenerator_, \
3762- __FILE__, __LINE__)
3763-
3764-} // namespace testing
3765-
3766-#endif // GTEST_HAS_PARAM_TEST
3767-
3768-#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
3769
3770=== removed file '3rd_party/gmock/gtest/include/gtest/gtest-param-test.h.pump'
3771--- 3rd_party/gmock/gtest/include/gtest/gtest-param-test.h.pump 2014-04-07 19:53:07 +0000
3772+++ 3rd_party/gmock/gtest/include/gtest/gtest-param-test.h.pump 1970-01-01 00:00:00 +0000
3773@@ -1,487 +0,0 @@
3774-$$ -*- mode: c++; -*-
3775-$var n = 50 $$ Maximum length of Values arguments we want to support.
3776-$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support.
3777-// Copyright 2008, Google Inc.
3778-// All rights reserved.
3779-//
3780-// Redistribution and use in source and binary forms, with or without
3781-// modification, are permitted provided that the following conditions are
3782-// met:
3783-//
3784-// * Redistributions of source code must retain the above copyright
3785-// notice, this list of conditions and the following disclaimer.
3786-// * Redistributions in binary form must reproduce the above
3787-// copyright notice, this list of conditions and the following disclaimer
3788-// in the documentation and/or other materials provided with the
3789-// distribution.
3790-// * Neither the name of Google Inc. nor the names of its
3791-// contributors may be used to endorse or promote products derived from
3792-// this software without specific prior written permission.
3793-//
3794-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3795-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3796-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
3797-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3798-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3799-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3800-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3801-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3802-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3803-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3804-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3805-//
3806-// Authors: vladl@google.com (Vlad Losev)
3807-//
3808-// Macros and functions for implementing parameterized tests
3809-// in Google C++ Testing Framework (Google Test)
3810-//
3811-// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
3812-//
3813-#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
3814-#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
3815-
3816-
3817-// Value-parameterized tests allow you to test your code with different
3818-// parameters without writing multiple copies of the same test.
3819-//
3820-// Here is how you use value-parameterized tests:
3821-
3822-#if 0
3823-
3824-// To write value-parameterized tests, first you should define a fixture
3825-// class. It is usually derived from testing::TestWithParam<T> (see below for
3826-// another inheritance scheme that's sometimes useful in more complicated
3827-// class hierarchies), where the type of your parameter values.
3828-// TestWithParam<T> is itself derived from testing::Test. T can be any
3829-// copyable type. If it's a raw pointer, you are responsible for managing the
3830-// lifespan of the pointed values.
3831-
3832-class FooTest : public ::testing::TestWithParam<const char*> {
3833- // You can implement all the usual class fixture members here.
3834-};
3835-
3836-// Then, use the TEST_P macro to define as many parameterized tests
3837-// for this fixture as you want. The _P suffix is for "parameterized"
3838-// or "pattern", whichever you prefer to think.
3839-
3840-TEST_P(FooTest, DoesBlah) {
3841- // Inside a test, access the test parameter with the GetParam() method
3842- // of the TestWithParam<T> class:
3843- EXPECT_TRUE(foo.Blah(GetParam()));
3844- ...
3845-}
3846-
3847-TEST_P(FooTest, HasBlahBlah) {
3848- ...
3849-}
3850-
3851-// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
3852-// case with any set of parameters you want. Google Test defines a number
3853-// of functions for generating test parameters. They return what we call
3854-// (surprise!) parameter generators. Here is a summary of them, which
3855-// are all in the testing namespace:
3856-//
3857-//
3858-// Range(begin, end [, step]) - Yields values {begin, begin+step,
3859-// begin+step+step, ...}. The values do not
3860-// include end. step defaults to 1.
3861-// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
3862-// ValuesIn(container) - Yields values from a C-style array, an STL
3863-// ValuesIn(begin,end) container, or an iterator range [begin, end).
3864-// Bool() - Yields sequence {false, true}.
3865-// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
3866-// for the math savvy) of the values generated
3867-// by the N generators.
3868-//
3869-// For more details, see comments at the definitions of these functions below
3870-// in this file.
3871-//
3872-// The following statement will instantiate tests from the FooTest test case
3873-// each with parameter values "meeny", "miny", and "moe".
3874-
3875-INSTANTIATE_TEST_CASE_P(InstantiationName,
3876- FooTest,
3877- Values("meeny", "miny", "moe"));
3878-
3879-// To distinguish different instances of the pattern, (yes, you
3880-// can instantiate it more then once) the first argument to the
3881-// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
3882-// actual test case name. Remember to pick unique prefixes for different
3883-// instantiations. The tests from the instantiation above will have
3884-// these names:
3885-//
3886-// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
3887-// * InstantiationName/FooTest.DoesBlah/1 for "miny"
3888-// * InstantiationName/FooTest.DoesBlah/2 for "moe"
3889-// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
3890-// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
3891-// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
3892-//
3893-// You can use these names in --gtest_filter.
3894-//
3895-// This statement will instantiate all tests from FooTest again, each
3896-// with parameter values "cat" and "dog":
3897-
3898-const char* pets[] = {"cat", "dog"};
3899-INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
3900-
3901-// The tests from the instantiation above will have these names:
3902-//
3903-// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
3904-// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
3905-// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
3906-// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
3907-//
3908-// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
3909-// in the given test case, whether their definitions come before or
3910-// AFTER the INSTANTIATE_TEST_CASE_P statement.
3911-//
3912-// Please also note that generator expressions (including parameters to the
3913-// generators) are evaluated in InitGoogleTest(), after main() has started.
3914-// This allows the user on one hand, to adjust generator parameters in order
3915-// to dynamically determine a set of tests to run and on the other hand,
3916-// give the user a chance to inspect the generated tests with Google Test
3917-// reflection API before RUN_ALL_TESTS() is executed.
3918-//
3919-// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
3920-// for more examples.
3921-//
3922-// In the future, we plan to publish the API for defining new parameter
3923-// generators. But for now this interface remains part of the internal
3924-// implementation and is subject to change.
3925-//
3926-//
3927-// A parameterized test fixture must be derived from testing::Test and from
3928-// testing::WithParamInterface<T>, where T is the type of the parameter
3929-// values. Inheriting from TestWithParam<T> satisfies that requirement because
3930-// TestWithParam<T> inherits from both Test and WithParamInterface. In more
3931-// complicated hierarchies, however, it is occasionally useful to inherit
3932-// separately from Test and WithParamInterface. For example:
3933-
3934-class BaseTest : public ::testing::Test {
3935- // You can inherit all the usual members for a non-parameterized test
3936- // fixture here.
3937-};
3938-
3939-class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
3940- // The usual test fixture members go here too.
3941-};
3942-
3943-TEST_F(BaseTest, HasFoo) {
3944- // This is an ordinary non-parameterized test.
3945-}
3946-
3947-TEST_P(DerivedTest, DoesBlah) {
3948- // GetParam works just the same here as if you inherit from TestWithParam.
3949- EXPECT_TRUE(foo.Blah(GetParam()));
3950-}
3951-
3952-#endif // 0
3953-
3954-#include "gtest/internal/gtest-port.h"
3955-
3956-#if !GTEST_OS_SYMBIAN
3957-# include <utility>
3958-#endif
3959-
3960-// scripts/fuse_gtest.py depends on gtest's own header being #included
3961-// *unconditionally*. Therefore these #includes cannot be moved
3962-// inside #if GTEST_HAS_PARAM_TEST.
3963-#include "gtest/internal/gtest-internal.h"
3964-#include "gtest/internal/gtest-param-util.h"
3965-#include "gtest/internal/gtest-param-util-generated.h"
3966-
3967-#if GTEST_HAS_PARAM_TEST
3968-
3969-namespace testing {
3970-
3971-// Functions producing parameter generators.
3972-//
3973-// Google Test uses these generators to produce parameters for value-
3974-// parameterized tests. When a parameterized test case is instantiated
3975-// with a particular generator, Google Test creates and runs tests
3976-// for each element in the sequence produced by the generator.
3977-//
3978-// In the following sample, tests from test case FooTest are instantiated
3979-// each three times with parameter values 3, 5, and 8:
3980-//
3981-// class FooTest : public TestWithParam<int> { ... };
3982-//
3983-// TEST_P(FooTest, TestThis) {
3984-// }
3985-// TEST_P(FooTest, TestThat) {
3986-// }
3987-// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
3988-//
3989-
3990-// Range() returns generators providing sequences of values in a range.
3991-//
3992-// Synopsis:
3993-// Range(start, end)
3994-// - returns a generator producing a sequence of values {start, start+1,
3995-// start+2, ..., }.
3996-// Range(start, end, step)
3997-// - returns a generator producing a sequence of values {start, start+step,
3998-// start+step+step, ..., }.
3999-// Notes:
4000-// * The generated sequences never include end. For example, Range(1, 5)
4001-// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
4002-// returns a generator producing {1, 3, 5, 7}.
4003-// * start and end must have the same type. That type may be any integral or
4004-// floating-point type or a user defined type satisfying these conditions:
4005-// * It must be assignable (have operator=() defined).
4006-// * It must have operator+() (operator+(int-compatible type) for
4007-// two-operand version).
4008-// * It must have operator<() defined.
4009-// Elements in the resulting sequences will also have that type.
4010-// * Condition start < end must be satisfied in order for resulting sequences
4011-// to contain any elements.
4012-//
4013-template <typename T, typename IncrementT>
4014-internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
4015- return internal::ParamGenerator<T>(
4016- new internal::RangeGenerator<T, IncrementT>(start, end, step));
4017-}
4018-
4019-template <typename T>
4020-internal::ParamGenerator<T> Range(T start, T end) {
4021- return Range(start, end, 1);
4022-}
4023-
4024-// ValuesIn() function allows generation of tests with parameters coming from
4025-// a container.
4026-//
4027-// Synopsis:
4028-// ValuesIn(const T (&array)[N])
4029-// - returns a generator producing sequences with elements from
4030-// a C-style array.
4031-// ValuesIn(const Container& container)
4032-// - returns a generator producing sequences with elements from
4033-// an STL-style container.
4034-// ValuesIn(Iterator begin, Iterator end)
4035-// - returns a generator producing sequences with elements from
4036-// a range [begin, end) defined by a pair of STL-style iterators. These
4037-// iterators can also be plain C pointers.
4038-//
4039-// Please note that ValuesIn copies the values from the containers
4040-// passed in and keeps them to generate tests in RUN_ALL_TESTS().
4041-//
4042-// Examples:
4043-//
4044-// This instantiates tests from test case StringTest
4045-// each with C-string values of "foo", "bar", and "baz":
4046-//
4047-// const char* strings[] = {"foo", "bar", "baz"};
4048-// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
4049-//
4050-// This instantiates tests from test case StlStringTest
4051-// each with STL strings with values "a" and "b":
4052-//
4053-// ::std::vector< ::std::string> GetParameterStrings() {
4054-// ::std::vector< ::std::string> v;
4055-// v.push_back("a");
4056-// v.push_back("b");
4057-// return v;
4058-// }
4059-//
4060-// INSTANTIATE_TEST_CASE_P(CharSequence,
4061-// StlStringTest,
4062-// ValuesIn(GetParameterStrings()));
4063-//
4064-//
4065-// This will also instantiate tests from CharTest
4066-// each with parameter values 'a' and 'b':
4067-//
4068-// ::std::list<char> GetParameterChars() {
4069-// ::std::list<char> list;
4070-// list.push_back('a');
4071-// list.push_back('b');
4072-// return list;
4073-// }
4074-// ::std::list<char> l = GetParameterChars();
4075-// INSTANTIATE_TEST_CASE_P(CharSequence2,
4076-// CharTest,
4077-// ValuesIn(l.begin(), l.end()));
4078-//
4079-template <typename ForwardIterator>
4080-internal::ParamGenerator<
4081- typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
4082-ValuesIn(ForwardIterator begin, ForwardIterator end) {
4083- typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
4084- ::value_type ParamType;
4085- return internal::ParamGenerator<ParamType>(
4086- new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
4087-}
4088-
4089-template <typename T, size_t N>
4090-internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
4091- return ValuesIn(array, array + N);
4092-}
4093-
4094-template <class Container>
4095-internal::ParamGenerator<typename Container::value_type> ValuesIn(
4096- const Container& container) {
4097- return ValuesIn(container.begin(), container.end());
4098-}
4099-
4100-// Values() allows generating tests from explicitly specified list of
4101-// parameters.
4102-//
4103-// Synopsis:
4104-// Values(T v1, T v2, ..., T vN)
4105-// - returns a generator producing sequences with elements v1, v2, ..., vN.
4106-//
4107-// For example, this instantiates tests from test case BarTest each
4108-// with values "one", "two", and "three":
4109-//
4110-// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
4111-//
4112-// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
4113-// The exact type of values will depend on the type of parameter in BazTest.
4114-//
4115-// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
4116-//
4117-// Currently, Values() supports from 1 to $n parameters.
4118-//
4119-$range i 1..n
4120-$for i [[
4121-$range j 1..i
4122-
4123-template <$for j, [[typename T$j]]>
4124-internal::ValueArray$i<$for j, [[T$j]]> Values($for j, [[T$j v$j]]) {
4125- return internal::ValueArray$i<$for j, [[T$j]]>($for j, [[v$j]]);
4126-}
4127-
4128-]]
4129-
4130-// Bool() allows generating tests with parameters in a set of (false, true).
4131-//
4132-// Synopsis:
4133-// Bool()
4134-// - returns a generator producing sequences with elements {false, true}.
4135-//
4136-// It is useful when testing code that depends on Boolean flags. Combinations
4137-// of multiple flags can be tested when several Bool()'s are combined using
4138-// Combine() function.
4139-//
4140-// In the following example all tests in the test case FlagDependentTest
4141-// will be instantiated twice with parameters false and true.
4142-//
4143-// class FlagDependentTest : public testing::TestWithParam<bool> {
4144-// virtual void SetUp() {
4145-// external_flag = GetParam();
4146-// }
4147-// }
4148-// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
4149-//
4150-inline internal::ParamGenerator<bool> Bool() {
4151- return Values(false, true);
4152-}
4153-
4154-# if GTEST_HAS_COMBINE
4155-// Combine() allows the user to combine two or more sequences to produce
4156-// values of a Cartesian product of those sequences' elements.
4157-//
4158-// Synopsis:
4159-// Combine(gen1, gen2, ..., genN)
4160-// - returns a generator producing sequences with elements coming from
4161-// the Cartesian product of elements from the sequences generated by
4162-// gen1, gen2, ..., genN. The sequence elements will have a type of
4163-// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
4164-// of elements from sequences produces by gen1, gen2, ..., genN.
4165-//
4166-// Combine can have up to $maxtuple arguments. This number is currently limited
4167-// by the maximum number of elements in the tuple implementation used by Google
4168-// Test.
4169-//
4170-// Example:
4171-//
4172-// This will instantiate tests in test case AnimalTest each one with
4173-// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
4174-// tuple("dog", BLACK), and tuple("dog", WHITE):
4175-//
4176-// enum Color { BLACK, GRAY, WHITE };
4177-// class AnimalTest
4178-// : public testing::TestWithParam<tuple<const char*, Color> > {...};
4179-//
4180-// TEST_P(AnimalTest, AnimalLooksNice) {...}
4181-//
4182-// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
4183-// Combine(Values("cat", "dog"),
4184-// Values(BLACK, WHITE)));
4185-//
4186-// This will instantiate tests in FlagDependentTest with all variations of two
4187-// Boolean flags:
4188-//
4189-// class FlagDependentTest
4190-// : public testing::TestWithParam<tuple<bool, bool> > {
4191-// virtual void SetUp() {
4192-// // Assigns external_flag_1 and external_flag_2 values from the tuple.
4193-// tie(external_flag_1, external_flag_2) = GetParam();
4194-// }
4195-// };
4196-//
4197-// TEST_P(FlagDependentTest, TestFeature1) {
4198-// // Test your code using external_flag_1 and external_flag_2 here.
4199-// }
4200-// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
4201-// Combine(Bool(), Bool()));
4202-//
4203-$range i 2..maxtuple
4204-$for i [[
4205-$range j 1..i
4206-
4207-template <$for j, [[typename Generator$j]]>
4208-internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
4209- $for j, [[const Generator$j& g$j]]) {
4210- return internal::CartesianProductHolder$i<$for j, [[Generator$j]]>(
4211- $for j, [[g$j]]);
4212-}
4213-
4214-]]
4215-# endif // GTEST_HAS_COMBINE
4216-
4217-
4218-
4219-# define TEST_P(test_case_name, test_name) \
4220- class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
4221- : public test_case_name { \
4222- public: \
4223- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
4224- virtual void TestBody(); \
4225- private: \
4226- static int AddToRegistry() { \
4227- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
4228- GetTestCasePatternHolder<test_case_name>(\
4229- #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
4230- #test_case_name, \
4231- #test_name, \
4232- new ::testing::internal::TestMetaFactory< \
4233- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
4234- return 0; \
4235- } \
4236- static int gtest_registering_dummy_; \
4237- GTEST_DISALLOW_COPY_AND_ASSIGN_(\
4238- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
4239- }; \
4240- int GTEST_TEST_CLASS_NAME_(test_case_name, \
4241- test_name)::gtest_registering_dummy_ = \
4242- GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
4243- void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
4244-
4245-# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
4246- ::testing::internal::ParamGenerator<test_case_name::ParamType> \
4247- gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
4248- int gtest_##prefix##test_case_name##_dummy_ = \
4249- ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
4250- GetTestCasePatternHolder<test_case_name>(\
4251- #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
4252- #prefix, \
4253- &gtest_##prefix##test_case_name##_EvalGenerator_, \
4254- __FILE__, __LINE__)
4255-
4256-} // namespace testing
4257-
4258-#endif // GTEST_HAS_PARAM_TEST
4259-
4260-#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
4261
4262=== removed file '3rd_party/gmock/gtest/include/gtest/gtest-printers.h'
4263--- 3rd_party/gmock/gtest/include/gtest/gtest-printers.h 2014-04-07 19:53:07 +0000
4264+++ 3rd_party/gmock/gtest/include/gtest/gtest-printers.h 1970-01-01 00:00:00 +0000
4265@@ -1,855 +0,0 @@
4266-// Copyright 2007, Google Inc.
4267-// All rights reserved.
4268-//
4269-// Redistribution and use in source and binary forms, with or without
4270-// modification, are permitted provided that the following conditions are
4271-// met:
4272-//
4273-// * Redistributions of source code must retain the above copyright
4274-// notice, this list of conditions and the following disclaimer.
4275-// * Redistributions in binary form must reproduce the above
4276-// copyright notice, this list of conditions and the following disclaimer
4277-// in the documentation and/or other materials provided with the
4278-// distribution.
4279-// * Neither the name of Google Inc. nor the names of its
4280-// contributors may be used to endorse or promote products derived from
4281-// this software without specific prior written permission.
4282-//
4283-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4284-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
4285-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
4286-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
4287-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4288-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
4289-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
4290-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
4291-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
4292-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
4293-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4294-//
4295-// Author: wan@google.com (Zhanyong Wan)
4296-
4297-// Google Test - The Google C++ Testing Framework
4298-//
4299-// This file implements a universal value printer that can print a
4300-// value of any type T:
4301-//
4302-// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
4303-//
4304-// A user can teach this function how to print a class type T by
4305-// defining either operator<<() or PrintTo() in the namespace that
4306-// defines T. More specifically, the FIRST defined function in the
4307-// following list will be used (assuming T is defined in namespace
4308-// foo):
4309-//
4310-// 1. foo::PrintTo(const T&, ostream*)
4311-// 2. operator<<(ostream&, const T&) defined in either foo or the
4312-// global namespace.
4313-//
4314-// If none of the above is defined, it will print the debug string of
4315-// the value if it is a protocol buffer, or print the raw bytes in the
4316-// value otherwise.
4317-//
4318-// To aid debugging: when T is a reference type, the address of the
4319-// value is also printed; when T is a (const) char pointer, both the
4320-// pointer value and the NUL-terminated string it points to are
4321-// printed.
4322-//
4323-// We also provide some convenient wrappers:
4324-//
4325-// // Prints a value to a string. For a (const or not) char
4326-// // pointer, the NUL-terminated string (but not the pointer) is
4327-// // printed.
4328-// std::string ::testing::PrintToString(const T& value);
4329-//
4330-// // Prints a value tersely: for a reference type, the referenced
4331-// // value (but not the address) is printed; for a (const or not) char
4332-// // pointer, the NUL-terminated string (but not the pointer) is
4333-// // printed.
4334-// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
4335-//
4336-// // Prints value using the type inferred by the compiler. The difference
4337-// // from UniversalTersePrint() is that this function prints both the
4338-// // pointer and the NUL-terminated string for a (const or not) char pointer.
4339-// void ::testing::internal::UniversalPrint(const T& value, ostream*);
4340-//
4341-// // Prints the fields of a tuple tersely to a string vector, one
4342-// // element for each field. Tuple support must be enabled in
4343-// // gtest-port.h.
4344-// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
4345-// const Tuple& value);
4346-//
4347-// Known limitation:
4348-//
4349-// The print primitives print the elements of an STL-style container
4350-// using the compiler-inferred type of *iter where iter is a
4351-// const_iterator of the container. When const_iterator is an input
4352-// iterator but not a forward iterator, this inferred type may not
4353-// match value_type, and the print output may be incorrect. In
4354-// practice, this is rarely a problem as for most containers
4355-// const_iterator is a forward iterator. We'll fix this if there's an
4356-// actual need for it. Note that this fix cannot rely on value_type
4357-// being defined as many user-defined container types don't have
4358-// value_type.
4359-
4360-#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
4361-#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
4362-
4363-#include <ostream> // NOLINT
4364-#include <sstream>
4365-#include <string>
4366-#include <utility>
4367-#include <vector>
4368-#include "gtest/internal/gtest-port.h"
4369-#include "gtest/internal/gtest-internal.h"
4370-
4371-namespace testing {
4372-
4373-// Definitions in the 'internal' and 'internal2' name spaces are
4374-// subject to change without notice. DO NOT USE THEM IN USER CODE!
4375-namespace internal2 {
4376-
4377-// Prints the given number of bytes in the given object to the given
4378-// ostream.
4379-GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
4380- size_t count,
4381- ::std::ostream* os);
4382-
4383-// For selecting which printer to use when a given type has neither <<
4384-// nor PrintTo().
4385-enum TypeKind {
4386- kProtobuf, // a protobuf type
4387- kConvertibleToInteger, // a type implicitly convertible to BiggestInt
4388- // (e.g. a named or unnamed enum type)
4389- kOtherType // anything else
4390-};
4391-
4392-// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
4393-// by the universal printer to print a value of type T when neither
4394-// operator<< nor PrintTo() is defined for T, where kTypeKind is the
4395-// "kind" of T as defined by enum TypeKind.
4396-template <typename T, TypeKind kTypeKind>
4397-class TypeWithoutFormatter {
4398- public:
4399- // This default version is called when kTypeKind is kOtherType.
4400- static void PrintValue(const T& value, ::std::ostream* os) {
4401- PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value),
4402- sizeof(value), os);
4403- }
4404-};
4405-
4406-// We print a protobuf using its ShortDebugString() when the string
4407-// doesn't exceed this many characters; otherwise we print it using
4408-// DebugString() for better readability.
4409-const size_t kProtobufOneLinerMaxLength = 50;
4410-
4411-template <typename T>
4412-class TypeWithoutFormatter<T, kProtobuf> {
4413- public:
4414- static void PrintValue(const T& value, ::std::ostream* os) {
4415- const ::testing::internal::string short_str = value.ShortDebugString();
4416- const ::testing::internal::string pretty_str =
4417- short_str.length() <= kProtobufOneLinerMaxLength ?
4418- short_str : ("\n" + value.DebugString());
4419- *os << ("<" + pretty_str + ">");
4420- }
4421-};
4422-
4423-template <typename T>
4424-class TypeWithoutFormatter<T, kConvertibleToInteger> {
4425- public:
4426- // Since T has no << operator or PrintTo() but can be implicitly
4427- // converted to BiggestInt, we print it as a BiggestInt.
4428- //
4429- // Most likely T is an enum type (either named or unnamed), in which
4430- // case printing it as an integer is the desired behavior. In case
4431- // T is not an enum, printing it as an integer is the best we can do
4432- // given that it has no user-defined printer.
4433- static void PrintValue(const T& value, ::std::ostream* os) {
4434- const internal::BiggestInt kBigInt = value;
4435- *os << kBigInt;
4436- }
4437-};
4438-
4439-// Prints the given value to the given ostream. If the value is a
4440-// protocol message, its debug string is printed; if it's an enum or
4441-// of a type implicitly convertible to BiggestInt, it's printed as an
4442-// integer; otherwise the bytes in the value are printed. This is
4443-// what UniversalPrinter<T>::Print() does when it knows nothing about
4444-// type T and T has neither << operator nor PrintTo().
4445-//
4446-// A user can override this behavior for a class type Foo by defining
4447-// a << operator in the namespace where Foo is defined.
4448-//
4449-// We put this operator in namespace 'internal2' instead of 'internal'
4450-// to simplify the implementation, as much code in 'internal' needs to
4451-// use << in STL, which would conflict with our own << were it defined
4452-// in 'internal'.
4453-//
4454-// Note that this operator<< takes a generic std::basic_ostream<Char,
4455-// CharTraits> type instead of the more restricted std::ostream. If
4456-// we define it to take an std::ostream instead, we'll get an
4457-// "ambiguous overloads" compiler error when trying to print a type
4458-// Foo that supports streaming to std::basic_ostream<Char,
4459-// CharTraits>, as the compiler cannot tell whether
4460-// operator<<(std::ostream&, const T&) or
4461-// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
4462-// specific.
4463-template <typename Char, typename CharTraits, typename T>
4464-::std::basic_ostream<Char, CharTraits>& operator<<(
4465- ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
4466- TypeWithoutFormatter<T,
4467- (internal::IsAProtocolMessage<T>::value ? kProtobuf :
4468- internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ?
4469- kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
4470- return os;
4471-}
4472-
4473-} // namespace internal2
4474-} // namespace testing
4475-
4476-// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
4477-// magic needed for implementing UniversalPrinter won't work.
4478-namespace testing_internal {
4479-
4480-// Used to print a value that is not an STL-style container when the
4481-// user doesn't define PrintTo() for it.
4482-template <typename T>
4483-void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
4484- // With the following statement, during unqualified name lookup,
4485- // testing::internal2::operator<< appears as if it was declared in
4486- // the nearest enclosing namespace that contains both
4487- // ::testing_internal and ::testing::internal2, i.e. the global
4488- // namespace. For more details, refer to the C++ Standard section
4489- // 7.3.4-1 [namespace.udir]. This allows us to fall back onto
4490- // testing::internal2::operator<< in case T doesn't come with a <<
4491- // operator.
4492- //
4493- // We cannot write 'using ::testing::internal2::operator<<;', which
4494- // gcc 3.3 fails to compile due to a compiler bug.
4495- using namespace ::testing::internal2; // NOLINT
4496-
4497- // Assuming T is defined in namespace foo, in the next statement,
4498- // the compiler will consider all of:
4499- //
4500- // 1. foo::operator<< (thanks to Koenig look-up),
4501- // 2. ::operator<< (as the current namespace is enclosed in ::),
4502- // 3. testing::internal2::operator<< (thanks to the using statement above).
4503- //
4504- // The operator<< whose type matches T best will be picked.
4505- //
4506- // We deliberately allow #2 to be a candidate, as sometimes it's
4507- // impossible to define #1 (e.g. when foo is ::std, defining
4508- // anything in it is undefined behavior unless you are a compiler
4509- // vendor.).
4510- *os << value;
4511-}
4512-
4513-} // namespace testing_internal
4514-
4515-namespace testing {
4516-namespace internal {
4517-
4518-// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
4519-// value to the given ostream. The caller must ensure that
4520-// 'ostream_ptr' is not NULL, or the behavior is undefined.
4521-//
4522-// We define UniversalPrinter as a class template (as opposed to a
4523-// function template), as we need to partially specialize it for
4524-// reference types, which cannot be done with function templates.
4525-template <typename T>
4526-class UniversalPrinter;
4527-
4528-template <typename T>
4529-void UniversalPrint(const T& value, ::std::ostream* os);
4530-
4531-// Used to print an STL-style container when the user doesn't define
4532-// a PrintTo() for it.
4533-template <typename C>
4534-void DefaultPrintTo(IsContainer /* dummy */,
4535- false_type /* is not a pointer */,
4536- const C& container, ::std::ostream* os) {
4537- const size_t kMaxCount = 32; // The maximum number of elements to print.
4538- *os << '{';
4539- size_t count = 0;
4540- for (typename C::const_iterator it = container.begin();
4541- it != container.end(); ++it, ++count) {
4542- if (count > 0) {
4543- *os << ',';
4544- if (count == kMaxCount) { // Enough has been printed.
4545- *os << " ...";
4546- break;
4547- }
4548- }
4549- *os << ' ';
4550- // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
4551- // handle *it being a native array.
4552- internal::UniversalPrint(*it, os);
4553- }
4554-
4555- if (count > 0) {
4556- *os << ' ';
4557- }
4558- *os << '}';
4559-}
4560-
4561-// Used to print a pointer that is neither a char pointer nor a member
4562-// pointer, when the user doesn't define PrintTo() for it. (A member
4563-// variable pointer or member function pointer doesn't really point to
4564-// a location in the address space. Their representation is
4565-// implementation-defined. Therefore they will be printed as raw
4566-// bytes.)
4567-template <typename T>
4568-void DefaultPrintTo(IsNotContainer /* dummy */,
4569- true_type /* is a pointer */,
4570- T* p, ::std::ostream* os) {
4571- if (p == NULL) {
4572- *os << "NULL";
4573- } else {
4574- // C++ doesn't allow casting from a function pointer to any object
4575- // pointer.
4576- //
4577- // IsTrue() silences warnings: "Condition is always true",
4578- // "unreachable code".
4579- if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
4580- // T is not a function type. We just call << to print p,
4581- // relying on ADL to pick up user-defined << for their pointer
4582- // types, if any.
4583- *os << p;
4584- } else {
4585- // T is a function type, so '*os << p' doesn't do what we want
4586- // (it just prints p as bool). We want to print p as a const
4587- // void*. However, we cannot cast it to const void* directly,
4588- // even using reinterpret_cast, as earlier versions of gcc
4589- // (e.g. 3.4.5) cannot compile the cast when p is a function
4590- // pointer. Casting to UInt64 first solves the problem.
4591- *os << reinterpret_cast<const void*>(
4592- reinterpret_cast<internal::UInt64>(p));
4593- }
4594- }
4595-}
4596-
4597-// Used to print a non-container, non-pointer value when the user
4598-// doesn't define PrintTo() for it.
4599-template <typename T>
4600-void DefaultPrintTo(IsNotContainer /* dummy */,
4601- false_type /* is not a pointer */,
4602- const T& value, ::std::ostream* os) {
4603- ::testing_internal::DefaultPrintNonContainerTo(value, os);
4604-}
4605-
4606-// Prints the given value using the << operator if it has one;
4607-// otherwise prints the bytes in it. This is what
4608-// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
4609-// or overloaded for type T.
4610-//
4611-// A user can override this behavior for a class type Foo by defining
4612-// an overload of PrintTo() in the namespace where Foo is defined. We
4613-// give the user this option as sometimes defining a << operator for
4614-// Foo is not desirable (e.g. the coding style may prevent doing it,
4615-// or there is already a << operator but it doesn't do what the user
4616-// wants).
4617-template <typename T>
4618-void PrintTo(const T& value, ::std::ostream* os) {
4619- // DefaultPrintTo() is overloaded. The type of its first two
4620- // arguments determine which version will be picked. If T is an
4621- // STL-style container, the version for container will be called; if
4622- // T is a pointer, the pointer version will be called; otherwise the
4623- // generic version will be called.
4624- //
4625- // Note that we check for container types here, prior to we check
4626- // for protocol message types in our operator<<. The rationale is:
4627- //
4628- // For protocol messages, we want to give people a chance to
4629- // override Google Mock's format by defining a PrintTo() or
4630- // operator<<. For STL containers, other formats can be
4631- // incompatible with Google Mock's format for the container
4632- // elements; therefore we check for container types here to ensure
4633- // that our format is used.
4634- //
4635- // The second argument of DefaultPrintTo() is needed to bypass a bug
4636- // in Symbian's C++ compiler that prevents it from picking the right
4637- // overload between:
4638- //
4639- // PrintTo(const T& x, ...);
4640- // PrintTo(T* x, ...);
4641- DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);
4642-}
4643-
4644-// The following list of PrintTo() overloads tells
4645-// UniversalPrinter<T>::Print() how to print standard types (built-in
4646-// types, strings, plain arrays, and pointers).
4647-
4648-// Overloads for various char types.
4649-GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
4650-GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
4651-inline void PrintTo(char c, ::std::ostream* os) {
4652- // When printing a plain char, we always treat it as unsigned. This
4653- // way, the output won't be affected by whether the compiler thinks
4654- // char is signed or not.
4655- PrintTo(static_cast<unsigned char>(c), os);
4656-}
4657-
4658-// Overloads for other simple built-in types.
4659-inline void PrintTo(bool x, ::std::ostream* os) {
4660- *os << (x ? "true" : "false");
4661-}
4662-
4663-// Overload for wchar_t type.
4664-// Prints a wchar_t as a symbol if it is printable or as its internal
4665-// code otherwise and also as its decimal code (except for L'\0').
4666-// The L'\0' char is printed as "L'\\0'". The decimal code is printed
4667-// as signed integer when wchar_t is implemented by the compiler
4668-// as a signed type and is printed as an unsigned integer when wchar_t
4669-// is implemented as an unsigned type.
4670-GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
4671-
4672-// Overloads for C strings.
4673-GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
4674-inline void PrintTo(char* s, ::std::ostream* os) {
4675- PrintTo(ImplicitCast_<const char*>(s), os);
4676-}
4677-
4678-// signed/unsigned char is often used for representing binary data, so
4679-// we print pointers to it as void* to be safe.
4680-inline void PrintTo(const signed char* s, ::std::ostream* os) {
4681- PrintTo(ImplicitCast_<const void*>(s), os);
4682-}
4683-inline void PrintTo(signed char* s, ::std::ostream* os) {
4684- PrintTo(ImplicitCast_<const void*>(s), os);
4685-}
4686-inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
4687- PrintTo(ImplicitCast_<const void*>(s), os);
4688-}
4689-inline void PrintTo(unsigned char* s, ::std::ostream* os) {
4690- PrintTo(ImplicitCast_<const void*>(s), os);
4691-}
4692-
4693-// MSVC can be configured to define wchar_t as a typedef of unsigned
4694-// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
4695-// type. When wchar_t is a typedef, defining an overload for const
4696-// wchar_t* would cause unsigned short* be printed as a wide string,
4697-// possibly causing invalid memory accesses.
4698-#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
4699-// Overloads for wide C strings
4700-GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
4701-inline void PrintTo(wchar_t* s, ::std::ostream* os) {
4702- PrintTo(ImplicitCast_<const wchar_t*>(s), os);
4703-}
4704-#endif
4705-
4706-// Overload for C arrays. Multi-dimensional arrays are printed
4707-// properly.
4708-
4709-// Prints the given number of elements in an array, without printing
4710-// the curly braces.
4711-template <typename T>
4712-void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
4713- UniversalPrint(a[0], os);
4714- for (size_t i = 1; i != count; i++) {
4715- *os << ", ";
4716- UniversalPrint(a[i], os);
4717- }
4718-}
4719-
4720-// Overloads for ::string and ::std::string.
4721-#if GTEST_HAS_GLOBAL_STRING
4722-GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);
4723-inline void PrintTo(const ::string& s, ::std::ostream* os) {
4724- PrintStringTo(s, os);
4725-}
4726-#endif // GTEST_HAS_GLOBAL_STRING
4727-
4728-GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
4729-inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
4730- PrintStringTo(s, os);
4731-}
4732-
4733-// Overloads for ::wstring and ::std::wstring.
4734-#if GTEST_HAS_GLOBAL_WSTRING
4735-GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);
4736-inline void PrintTo(const ::wstring& s, ::std::ostream* os) {
4737- PrintWideStringTo(s, os);
4738-}
4739-#endif // GTEST_HAS_GLOBAL_WSTRING
4740-
4741-#if GTEST_HAS_STD_WSTRING
4742-GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
4743-inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
4744- PrintWideStringTo(s, os);
4745-}
4746-#endif // GTEST_HAS_STD_WSTRING
4747-
4748-#if GTEST_HAS_TR1_TUPLE
4749-// Overload for ::std::tr1::tuple. Needed for printing function arguments,
4750-// which are packed as tuples.
4751-
4752-// Helper function for printing a tuple. T must be instantiated with
4753-// a tuple type.
4754-template <typename T>
4755-void PrintTupleTo(const T& t, ::std::ostream* os);
4756-
4757-// Overloaded PrintTo() for tuples of various arities. We support
4758-// tuples of up-to 10 fields. The following implementation works
4759-// regardless of whether tr1::tuple is implemented using the
4760-// non-standard variadic template feature or not.
4761-
4762-inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {
4763- PrintTupleTo(t, os);
4764-}
4765-
4766-template <typename T1>
4767-void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {
4768- PrintTupleTo(t, os);
4769-}
4770-
4771-template <typename T1, typename T2>
4772-void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {
4773- PrintTupleTo(t, os);
4774-}
4775-
4776-template <typename T1, typename T2, typename T3>
4777-void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {
4778- PrintTupleTo(t, os);
4779-}
4780-
4781-template <typename T1, typename T2, typename T3, typename T4>
4782-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {
4783- PrintTupleTo(t, os);
4784-}
4785-
4786-template <typename T1, typename T2, typename T3, typename T4, typename T5>
4787-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
4788- ::std::ostream* os) {
4789- PrintTupleTo(t, os);
4790-}
4791-
4792-template <typename T1, typename T2, typename T3, typename T4, typename T5,
4793- typename T6>
4794-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
4795- ::std::ostream* os) {
4796- PrintTupleTo(t, os);
4797-}
4798-
4799-template <typename T1, typename T2, typename T3, typename T4, typename T5,
4800- typename T6, typename T7>
4801-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
4802- ::std::ostream* os) {
4803- PrintTupleTo(t, os);
4804-}
4805-
4806-template <typename T1, typename T2, typename T3, typename T4, typename T5,
4807- typename T6, typename T7, typename T8>
4808-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
4809- ::std::ostream* os) {
4810- PrintTupleTo(t, os);
4811-}
4812-
4813-template <typename T1, typename T2, typename T3, typename T4, typename T5,
4814- typename T6, typename T7, typename T8, typename T9>
4815-void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
4816- ::std::ostream* os) {
4817- PrintTupleTo(t, os);
4818-}
4819-
4820-template <typename T1, typename T2, typename T3, typename T4, typename T5,
4821- typename T6, typename T7, typename T8, typename T9, typename T10>
4822-void PrintTo(
4823- const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
4824- ::std::ostream* os) {
4825- PrintTupleTo(t, os);
4826-}
4827-#endif // GTEST_HAS_TR1_TUPLE
4828-
4829-// Overload for std::pair.
4830-template <typename T1, typename T2>
4831-void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
4832- *os << '(';
4833- // We cannot use UniversalPrint(value.first, os) here, as T1 may be
4834- // a reference type. The same for printing value.second.
4835- UniversalPrinter<T1>::Print(value.first, os);
4836- *os << ", ";
4837- UniversalPrinter<T2>::Print(value.second, os);
4838- *os << ')';
4839-}
4840-
4841-// Implements printing a non-reference type T by letting the compiler
4842-// pick the right overload of PrintTo() for T.
4843-template <typename T>
4844-class UniversalPrinter {
4845- public:
4846- // MSVC warns about adding const to a function type, so we want to
4847- // disable the warning.
4848-#ifdef _MSC_VER
4849-# pragma warning(push) // Saves the current warning state.
4850-# pragma warning(disable:4180) // Temporarily disables warning 4180.
4851-#endif // _MSC_VER
4852-
4853- // Note: we deliberately don't call this PrintTo(), as that name
4854- // conflicts with ::testing::internal::PrintTo in the body of the
4855- // function.
4856- static void Print(const T& value, ::std::ostream* os) {
4857- // By default, ::testing::internal::PrintTo() is used for printing
4858- // the value.
4859- //
4860- // Thanks to Koenig look-up, if T is a class and has its own
4861- // PrintTo() function defined in its namespace, that function will
4862- // be visible here. Since it is more specific than the generic ones
4863- // in ::testing::internal, it will be picked by the compiler in the
4864- // following statement - exactly what we want.
4865- PrintTo(value, os);
4866- }
4867-
4868-#ifdef _MSC_VER
4869-# pragma warning(pop) // Restores the warning state.
4870-#endif // _MSC_VER
4871-};
4872-
4873-// UniversalPrintArray(begin, len, os) prints an array of 'len'
4874-// elements, starting at address 'begin'.
4875-template <typename T>
4876-void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
4877- if (len == 0) {
4878- *os << "{}";
4879- } else {
4880- *os << "{ ";
4881- const size_t kThreshold = 18;
4882- const size_t kChunkSize = 8;
4883- // If the array has more than kThreshold elements, we'll have to
4884- // omit some details by printing only the first and the last
4885- // kChunkSize elements.
4886- // TODO(wan@google.com): let the user control the threshold using a flag.
4887- if (len <= kThreshold) {
4888- PrintRawArrayTo(begin, len, os);
4889- } else {
4890- PrintRawArrayTo(begin, kChunkSize, os);
4891- *os << ", ..., ";
4892- PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
4893- }
4894- *os << " }";
4895- }
4896-}
4897-// This overload prints a (const) char array compactly.
4898-GTEST_API_ void UniversalPrintArray(
4899- const char* begin, size_t len, ::std::ostream* os);
4900-
4901-// This overload prints a (const) wchar_t array compactly.
4902-GTEST_API_ void UniversalPrintArray(
4903- const wchar_t* begin, size_t len, ::std::ostream* os);
4904-
4905-// Implements printing an array type T[N].
4906-template <typename T, size_t N>
4907-class UniversalPrinter<T[N]> {
4908- public:
4909- // Prints the given array, omitting some elements when there are too
4910- // many.
4911- static void Print(const T (&a)[N], ::std::ostream* os) {
4912- UniversalPrintArray(a, N, os);
4913- }
4914-};
4915-
4916-// Implements printing a reference type T&.
4917-template <typename T>
4918-class UniversalPrinter<T&> {
4919- public:
4920- // MSVC warns about adding const to a function type, so we want to
4921- // disable the warning.
4922-#ifdef _MSC_VER
4923-# pragma warning(push) // Saves the current warning state.
4924-# pragma warning(disable:4180) // Temporarily disables warning 4180.
4925-#endif // _MSC_VER
4926-
4927- static void Print(const T& value, ::std::ostream* os) {
4928- // Prints the address of the value. We use reinterpret_cast here
4929- // as static_cast doesn't compile when T is a function type.
4930- *os << "@" << reinterpret_cast<const void*>(&value) << " ";
4931-
4932- // Then prints the value itself.
4933- UniversalPrint(value, os);
4934- }
4935-
4936-#ifdef _MSC_VER
4937-# pragma warning(pop) // Restores the warning state.
4938-#endif // _MSC_VER
4939-};
4940-
4941-// Prints a value tersely: for a reference type, the referenced value
4942-// (but not the address) is printed; for a (const) char pointer, the
4943-// NUL-terminated string (but not the pointer) is printed.
4944-
4945-template <typename T>
4946-class UniversalTersePrinter {
4947- public:
4948- static void Print(const T& value, ::std::ostream* os) {
4949- UniversalPrint(value, os);
4950- }
4951-};
4952-template <typename T>
4953-class UniversalTersePrinter<T&> {
4954- public:
4955- static void Print(const T& value, ::std::ostream* os) {
4956- UniversalPrint(value, os);
4957- }
4958-};
4959-template <typename T, size_t N>
4960-class UniversalTersePrinter<T[N]> {
4961- public:
4962- static void Print(const T (&value)[N], ::std::ostream* os) {
4963- UniversalPrinter<T[N]>::Print(value, os);
4964- }
4965-};
4966-template <>
4967-class UniversalTersePrinter<const char*> {
4968- public:
4969- static void Print(const char* str, ::std::ostream* os) {
4970- if (str == NULL) {
4971- *os << "NULL";
4972- } else {
4973- UniversalPrint(string(str), os);
4974- }
4975- }
4976-};
4977-template <>
4978-class UniversalTersePrinter<char*> {
4979- public:
4980- static void Print(char* str, ::std::ostream* os) {
4981- UniversalTersePrinter<const char*>::Print(str, os);
4982- }
4983-};
4984-
4985-#if GTEST_HAS_STD_WSTRING
4986-template <>
4987-class UniversalTersePrinter<const wchar_t*> {
4988- public:
4989- static void Print(const wchar_t* str, ::std::ostream* os) {
4990- if (str == NULL) {
4991- *os << "NULL";
4992- } else {
4993- UniversalPrint(::std::wstring(str), os);
4994- }
4995- }
4996-};
4997-#endif
4998-
4999-template <>
5000-class UniversalTersePrinter<wchar_t*> {
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches