Code merges
This commit is contained in:
		| @@ -47,10 +47,9 @@ | |||||||
| #include <string> | #include <string> | ||||||
| #include <utility> | #include <utility> | ||||||
| #include <vector> | #include <vector> | ||||||
|  | #include "gtest/gtest.h" | ||||||
| #include "gmock/internal/gmock-internal-utils.h" | #include "gmock/internal/gmock-internal-utils.h" | ||||||
| #include "gmock/internal/gmock-port.h" | #include "gmock/internal/gmock-port.h" | ||||||
| #include "gtest/gtest.h" |  | ||||||
|  |  | ||||||
| #if GTEST_HAS_STD_INITIALIZER_LIST_ | #if GTEST_HAS_STD_INITIALIZER_LIST_ | ||||||
| # include <initializer_list>  // NOLINT -- must be after gtest.h | # include <initializer_list>  // NOLINT -- must be after gtest.h | ||||||
|   | |||||||
| @@ -53,6 +53,22 @@ MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") { | |||||||
|   return false; |   return false; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Define a matcher that matches a value that evaluates in boolean | ||||||
|  | // context to true.  Useful for types that define "explicit operator | ||||||
|  | // bool" operators and so can't be compared for equality with true | ||||||
|  | // and false. | ||||||
|  | MATCHER(IsTrue, negation ? "is false" : "is true") { | ||||||
|  |   return static_cast<bool>(arg); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Define a matcher that matches a value that evaluates in boolean | ||||||
|  | // context to false.  Useful for types that define "explicit operator | ||||||
|  | // bool" operators and so can't be compared for equality with true | ||||||
|  | // and false. | ||||||
|  | MATCHER(IsFalse, negation ? "is true" : "is false") { | ||||||
|  |   return !static_cast<bool>(arg); | ||||||
|  | } | ||||||
|  |  | ||||||
| }  // namespace testing | }  // namespace testing | ||||||
|  |  | ||||||
| #endif  // GMOCK_GMOCK_MORE_MATCHERS_H_ | #endif  // GMOCK_GMOCK_MORE_MATCHERS_H_ | ||||||
|   | |||||||
| @@ -65,11 +65,6 @@ | |||||||
| #include <sstream> | #include <sstream> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
|  |  | ||||||
| #if GTEST_HAS_EXCEPTIONS |  | ||||||
| # include <stdexcept>  // NOLINT |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #include "gmock/gmock-actions.h" | #include "gmock/gmock-actions.h" | ||||||
| #include "gmock/gmock-cardinalities.h" | #include "gmock/gmock-cardinalities.h" | ||||||
| #include "gmock/gmock-matchers.h" | #include "gmock/gmock-matchers.h" | ||||||
| @@ -77,6 +72,10 @@ | |||||||
| #include "gmock/internal/gmock-port.h" | #include "gmock/internal/gmock-port.h" | ||||||
| #include "gtest/gtest.h" | #include "gtest/gtest.h" | ||||||
|  |  | ||||||
|  | #if GTEST_HAS_EXCEPTIONS | ||||||
|  | # include <stdexcept>  // NOLINT | ||||||
|  | #endif | ||||||
|  |  | ||||||
| namespace testing { | namespace testing { | ||||||
|  |  | ||||||
| // An abstract handle of an expectation. | // An abstract handle of an expectation. | ||||||
|   | |||||||
| @@ -59,8 +59,8 @@ | |||||||
| #include "gmock/gmock-cardinalities.h" | #include "gmock/gmock-cardinalities.h" | ||||||
| #include "gmock/gmock-generated-actions.h" | #include "gmock/gmock-generated-actions.h" | ||||||
| #include "gmock/gmock-generated-function-mockers.h" | #include "gmock/gmock-generated-function-mockers.h" | ||||||
| #include "gmock/gmock-generated-nice-strict.h" |  | ||||||
| #include "gmock/gmock-generated-matchers.h" | #include "gmock/gmock-generated-matchers.h" | ||||||
|  | #include "gmock/gmock-generated-nice-strict.h" | ||||||
| #include "gmock/gmock-matchers.h" | #include "gmock/gmock-matchers.h" | ||||||
| #include "gmock/gmock-more-actions.h" | #include "gmock/gmock-more-actions.h" | ||||||
| #include "gmock/gmock-more-matchers.h" | #include "gmock/gmock-more-matchers.h" | ||||||
|   | |||||||
| @@ -90,42 +90,48 @@ struct MatcherTuple< ::testing::tuple<A1, A2, A3> > { | |||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4> | template <typename A1, typename A2, typename A3, typename A4> | ||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4> > { | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4> > | ||||||
|       Matcher<A4> > type; |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4, typename A5> | template <typename A1, typename A2, typename A3, typename A4, typename A5> | ||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5> > { | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, | ||||||
|       Matcher<A5> > type; |                            Matcher<A5> > | ||||||
|  |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4, typename A5, | template <typename A1, typename A2, typename A3, typename A4, typename A5, | ||||||
|     typename A6> |     typename A6> | ||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6> > { | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, | ||||||
|       Matcher<A5>, Matcher<A6> > type; |                            Matcher<A5>, Matcher<A6> > | ||||||
|  |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4, typename A5, | template <typename A1, typename A2, typename A3, typename A4, typename A5, | ||||||
|     typename A6, typename A7> |     typename A6, typename A7> | ||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> > { | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, | ||||||
|       Matcher<A5>, Matcher<A6>, Matcher<A7> > type; |                            Matcher<A5>, Matcher<A6>, Matcher<A7> > | ||||||
|  |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4, typename A5, | template <typename A1, typename A2, typename A3, typename A4, typename A5, | ||||||
|     typename A6, typename A7, typename A8> |     typename A6, typename A7, typename A8> | ||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > { | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, | ||||||
|       Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8> > type; |                            Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8> > | ||||||
|  |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4, typename A5, | template <typename A1, typename A2, typename A3, typename A4, typename A5, | ||||||
|     typename A6, typename A7, typename A8, typename A9> |     typename A6, typename A7, typename A8, typename A9> | ||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> > { | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, | ||||||
|       Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, Matcher<A9> > type; |                            Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, | ||||||
|  |                            Matcher<A9> > | ||||||
|  |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| template <typename A1, typename A2, typename A3, typename A4, typename A5, | template <typename A1, typename A2, typename A3, typename A4, typename A5, | ||||||
| @@ -133,8 +139,9 @@ template <typename A1, typename A2, typename A3, typename A4, typename A5, | |||||||
| struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9, | struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8, A9, | ||||||
|     A10> > { |     A10> > { | ||||||
|   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, |   typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>, | ||||||
|       Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, Matcher<A9>, |                            Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, | ||||||
|       Matcher<A10> > type; |                            Matcher<A9>, Matcher<A10> > | ||||||
|  |       type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| // Template struct Function<F>, where F must be a function type, contains | // Template struct Function<F>, where F must be a function type, contains | ||||||
|   | |||||||
| @@ -41,7 +41,6 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <ostream>  // NOLINT | #include <ostream>  // NOLINT | ||||||
| #include <string> | #include <string> | ||||||
|  |  | ||||||
| #include "gmock/internal/gmock-generated-internal-utils.h" | #include "gmock/internal/gmock-generated-internal-utils.h" | ||||||
| #include "gmock/internal/gmock-port.h" | #include "gmock/internal/gmock-port.h" | ||||||
| #include "gtest/gtest.h" | #include "gtest/gtest.h" | ||||||
| @@ -49,11 +48,15 @@ | |||||||
| namespace testing { | namespace testing { | ||||||
| namespace internal { | namespace internal { | ||||||
|  |  | ||||||
|  | // Joins a vector of strings as if they are fields of a tuple; returns | ||||||
|  | // the joined string. | ||||||
|  | GTEST_API_ std::string JoinAsTuple(const Strings& fields); | ||||||
|  |  | ||||||
| // Converts an identifier name to a space-separated list of lower-case | // Converts an identifier name to a space-separated list of lower-case | ||||||
| // words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is | // words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is | ||||||
| // treated as one word.  For example, both "FooBar123" and | // treated as one word.  For example, both "FooBar123" and | ||||||
| // "foo_bar_123" are converted to "foo bar 123". | // "foo_bar_123" are converted to "foo bar 123". | ||||||
| GTEST_API_ string ConvertIdentifierNameToWords(const char* id_name); | GTEST_API_ std::string ConvertIdentifierNameToWords(const char* id_name); | ||||||
|  |  | ||||||
| // PointeeOf<Pointer>::type is the type of a value pointed to by a | // PointeeOf<Pointer>::type is the type of a value pointed to by a | ||||||
| // Pointer, which can be either a smart pointer or a raw pointer.  The | // Pointer, which can be either a smart pointer or a raw pointer.  The | ||||||
| @@ -503,8 +506,38 @@ struct RemoveConstFromKey<std::pair<const K, V> > { | |||||||
| template <bool kValue> | template <bool kValue> | ||||||
| struct BooleanConstant {}; | struct BooleanConstant {}; | ||||||
|  |  | ||||||
|  | // Emit an assertion failure due to incorrect DoDefault() usage. Out-of-lined to | ||||||
|  | // reduce code size. | ||||||
|  | void IllegalDoDefault(const char* file, int line); | ||||||
|  |  | ||||||
|  | #if GTEST_LANG_CXX11 | ||||||
|  | // Helper types for Apply() below. | ||||||
|  | template <size_t... Is> struct int_pack { typedef int_pack type; }; | ||||||
|  |  | ||||||
|  | template <class Pack, size_t I> struct append; | ||||||
|  | template <size_t... Is, size_t I> | ||||||
|  | struct append<int_pack<Is...>, I> : int_pack<Is..., I> {}; | ||||||
|  |  | ||||||
|  | template <size_t C> | ||||||
|  | struct make_int_pack : append<typename make_int_pack<C - 1>::type, C - 1> {}; | ||||||
|  | template <> struct make_int_pack<0> : int_pack<> {}; | ||||||
|  |  | ||||||
|  | template <typename F, typename Tuple, size_t... Idx> | ||||||
|  | auto ApplyImpl(F&& f, Tuple&& args, int_pack<Idx...>) -> decltype( | ||||||
|  |     std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...)) { | ||||||
|  |   return std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Apply the function to a tuple of arguments. | ||||||
|  | template <typename F, typename Tuple> | ||||||
|  | auto Apply(F&& f, Tuple&& args) | ||||||
|  |     -> decltype(ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args), | ||||||
|  |                           make_int_pack<std::tuple_size<Tuple>::value>())) { | ||||||
|  |   return ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args), | ||||||
|  |                    make_int_pack<std::tuple_size<Tuple>::value>()); | ||||||
|  | } | ||||||
|  | #endif | ||||||
| }  // namespace internal | }  // namespace internal | ||||||
| }  // namespace testing | }  // namespace testing | ||||||
|  |  | ||||||
| #endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_ | #endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -50,15 +50,11 @@ | |||||||
| // portability utilities to Google Test's gtest-port.h instead of | // portability utilities to Google Test's gtest-port.h instead of | ||||||
| // here, as Google Mock depends on Google Test.  Only add a utility | // here, as Google Mock depends on Google Test.  Only add a utility | ||||||
| // here if it's truly specific to Google Mock. | // here if it's truly specific to Google Mock. | ||||||
|  |  | ||||||
| #include "gtest/internal/gtest-linked_ptr.h" | #include "gtest/internal/gtest-linked_ptr.h" | ||||||
| #include "gtest/internal/gtest-port.h" | #include "gtest/internal/gtest-port.h" | ||||||
| #include "gmock/internal/custom/gmock-port.h" | #include "gmock/internal/custom/gmock-port.h" | ||||||
|  |  | ||||||
| // To avoid conditional compilation everywhere, we make it |  | ||||||
| // gmock-port.h's responsibility to #include the header implementing |  | ||||||
| // tr1/tuple.  gmock-port.h does this via gtest-port.h, which is |  | ||||||
| // guaranteed to pull in the tuple header. |  | ||||||
|  |  | ||||||
| // For MS Visual C++, check the compiler version. At least VS 2003 is | // For MS Visual C++, check the compiler version. At least VS 2003 is | ||||||
| // required to compile Google Mock. | // required to compile Google Mock. | ||||||
| #if defined(_MSC_VER) && _MSC_VER < 1310 | #if defined(_MSC_VER) && _MSC_VER < 1310 | ||||||
| @@ -72,18 +68,18 @@ | |||||||
| #if !defined(GMOCK_DECLARE_bool_) | #if !defined(GMOCK_DECLARE_bool_) | ||||||
|  |  | ||||||
| // Macros for declaring flags. | // Macros for declaring flags. | ||||||
| #define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name) | # define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name) | ||||||
| #define GMOCK_DECLARE_int32_(name) \ | # define GMOCK_DECLARE_int32_(name) \ | ||||||
|     extern GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) |     extern GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) | ||||||
| #define GMOCK_DECLARE_string_(name) \ | # define GMOCK_DECLARE_string_(name) \ | ||||||
|     extern GTEST_API_ ::std::string GMOCK_FLAG(name) |     extern GTEST_API_ ::std::string GMOCK_FLAG(name) | ||||||
|  |  | ||||||
| // Macros for defining flags. | // Macros for defining flags. | ||||||
| #define GMOCK_DEFINE_bool_(name, default_val, doc) \ | # define GMOCK_DEFINE_bool_(name, default_val, doc) \ | ||||||
|     GTEST_API_ bool GMOCK_FLAG(name) = (default_val) |     GTEST_API_ bool GMOCK_FLAG(name) = (default_val) | ||||||
| #define GMOCK_DEFINE_int32_(name, default_val, doc) \ | # define GMOCK_DEFINE_int32_(name, default_val, doc) \ | ||||||
|     GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) = (default_val) |     GTEST_API_ ::testing::internal::Int32 GMOCK_FLAG(name) = (default_val) | ||||||
| #define GMOCK_DEFINE_string_(name, default_val, doc) \ | # define GMOCK_DEFINE_string_(name, default_val, doc) \ | ||||||
|     GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val) |     GTEST_API_ ::std::string GMOCK_FLAG(name) = (default_val) | ||||||
|  |  | ||||||
| #endif  // !defined(GMOCK_DECLARE_bool_) | #endif  // !defined(GMOCK_DECLARE_bool_) | ||||||
|   | |||||||
| @@ -33,12 +33,13 @@ | |||||||
| // threads concurrently. | // threads concurrently. | ||||||
|  |  | ||||||
| #include "gmock/gmock.h" | #include "gmock/gmock.h" | ||||||
|  |  | ||||||
| #include "gtest/gtest.h" | #include "gtest/gtest.h" | ||||||
|  |  | ||||||
| namespace testing { | namespace testing { | ||||||
| namespace { | namespace { | ||||||
|  |  | ||||||
| // From <gtest/internal/gtest-port.h>. | // From "gtest/internal/gtest-port.h". | ||||||
| using ::testing::internal::ThreadWithParam; | using ::testing::internal::ThreadWithParam; | ||||||
|  |  | ||||||
| // The maximum number of test threads (not including helper threads) | // The maximum number of test threads (not including helper threads) | ||||||
|   | |||||||
| @@ -37,6 +37,7 @@ | |||||||
|  |  | ||||||
| #include <string> | #include <string> | ||||||
| #include "gtest/gtest.h" | #include "gtest/gtest.h" | ||||||
|  | #include "gtest/internal/custom/gtest.h" | ||||||
|  |  | ||||||
| #if !defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_) | #if !defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_) | ||||||
|  |  | ||||||
| @@ -51,9 +52,9 @@ void TestInitGoogleMock(const Char* (&argv)[M], const Char* (&new_argv)[N], | |||||||
|                         const ::std::string& expected_gmock_verbose) { |                         const ::std::string& expected_gmock_verbose) { | ||||||
|   const ::std::string old_verbose = GMOCK_FLAG(verbose); |   const ::std::string old_verbose = GMOCK_FLAG(verbose); | ||||||
|  |  | ||||||
|   int argc = M; |   int argc = M - 1; | ||||||
|   InitGoogleMock(&argc, const_cast<Char**>(argv)); |   InitGoogleMock(&argc, const_cast<Char**>(argv)); | ||||||
|   ASSERT_EQ(N, argc) << "The new argv has wrong number of elements."; |   ASSERT_EQ(N - 1, argc) << "The new argv has wrong number of elements."; | ||||||
|  |  | ||||||
|   for (int i = 0; i < N; i++) { |   for (int i = 0; i < N; i++) { | ||||||
|     EXPECT_STREQ(new_argv[i], argv[i]); |     EXPECT_STREQ(new_argv[i], argv[i]); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Gennadiy Civil
					Gennadiy Civil