Code merges
This commit is contained in:
		@@ -47,10 +47,9 @@
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <utility>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
#include "gmock/internal/gmock-internal-utils.h"
 | 
			
		||||
#include "gmock/internal/gmock-port.h"
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
 | 
			
		||||
#if GTEST_HAS_STD_INITIALIZER_LIST_
 | 
			
		||||
# include <initializer_list>  // NOLINT -- must be after gtest.h
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,22 @@ MATCHER(IsEmpty, negation ? "isn't empty" : "is empty") {
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
#endif  // GMOCK_GMOCK_MORE_MATCHERS_H_
 | 
			
		||||
 
 | 
			
		||||
@@ -65,11 +65,6 @@
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#if GTEST_HAS_EXCEPTIONS
 | 
			
		||||
# include <stdexcept>  // NOLINT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "gmock/gmock-actions.h"
 | 
			
		||||
#include "gmock/gmock-cardinalities.h"
 | 
			
		||||
#include "gmock/gmock-matchers.h"
 | 
			
		||||
@@ -77,6 +72,10 @@
 | 
			
		||||
#include "gmock/internal/gmock-port.h"
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
 | 
			
		||||
#if GTEST_HAS_EXCEPTIONS
 | 
			
		||||
# include <stdexcept>  // NOLINT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
namespace testing {
 | 
			
		||||
 | 
			
		||||
// An abstract handle of an expectation.
 | 
			
		||||
 
 | 
			
		||||
@@ -59,8 +59,8 @@
 | 
			
		||||
#include "gmock/gmock-cardinalities.h"
 | 
			
		||||
#include "gmock/gmock-generated-actions.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-nice-strict.h"
 | 
			
		||||
#include "gmock/gmock-matchers.h"
 | 
			
		||||
#include "gmock/gmock-more-actions.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>
 | 
			
		||||
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4> > {
 | 
			
		||||
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>,
 | 
			
		||||
      Matcher<A4> > type;
 | 
			
		||||
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4> >
 | 
			
		||||
      type;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template <typename A1, typename A2, typename A3, typename A4, typename A5>
 | 
			
		||||
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5> > {
 | 
			
		||||
  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,
 | 
			
		||||
    typename A6>
 | 
			
		||||
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6> > {
 | 
			
		||||
  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,
 | 
			
		||||
    typename A6, typename A7>
 | 
			
		||||
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7> > {
 | 
			
		||||
  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,
 | 
			
		||||
    typename A6, typename A7, typename A8>
 | 
			
		||||
struct MatcherTuple< ::testing::tuple<A1, A2, A3, A4, A5, A6, A7, A8> > {
 | 
			
		||||
  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,
 | 
			
		||||
    typename A6, typename A7, typename A8, typename 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>,
 | 
			
		||||
      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,
 | 
			
		||||
@@ -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,
 | 
			
		||||
    A10> > {
 | 
			
		||||
  typedef ::testing::tuple<Matcher<A1>, Matcher<A2>, Matcher<A3>, Matcher<A4>,
 | 
			
		||||
      Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>, Matcher<A9>,
 | 
			
		||||
      Matcher<A10> > type;
 | 
			
		||||
                           Matcher<A5>, Matcher<A6>, Matcher<A7>, Matcher<A8>,
 | 
			
		||||
                           Matcher<A9>, Matcher<A10> >
 | 
			
		||||
      type;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Template struct Function<F>, where F must be a function type, contains
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,6 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <ostream>  // NOLINT
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
#include "gmock/internal/gmock-generated-internal-utils.h"
 | 
			
		||||
#include "gmock/internal/gmock-port.h"
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
@@ -49,11 +48,15 @@
 | 
			
		||||
namespace testing {
 | 
			
		||||
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
 | 
			
		||||
// words.  Each maximum substring of the form [A-Za-z][a-z]*|\d+ is
 | 
			
		||||
// treated as one word.  For example, both "FooBar123" and
 | 
			
		||||
// "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
 | 
			
		||||
// 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>
 | 
			
		||||
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 testing
 | 
			
		||||
 | 
			
		||||
#endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_GMOCK_INTERNAL_UTILS_H_
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -50,15 +50,11 @@
 | 
			
		||||
// portability utilities to Google Test's gtest-port.h instead of
 | 
			
		||||
// here, as Google Mock depends on Google Test.  Only add a utility
 | 
			
		||||
// here if it's truly specific to Google Mock.
 | 
			
		||||
 | 
			
		||||
#include "gtest/internal/gtest-linked_ptr.h"
 | 
			
		||||
#include "gtest/internal/gtest-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
 | 
			
		||||
// required to compile Google Mock.
 | 
			
		||||
#if defined(_MSC_VER) && _MSC_VER < 1310
 | 
			
		||||
@@ -72,18 +68,18 @@
 | 
			
		||||
#if !defined(GMOCK_DECLARE_bool_)
 | 
			
		||||
 | 
			
		||||
// Macros for declaring flags.
 | 
			
		||||
#define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
 | 
			
		||||
#define GMOCK_DECLARE_int32_(name) \
 | 
			
		||||
# define GMOCK_DECLARE_bool_(name) extern GTEST_API_ bool GMOCK_FLAG(name)
 | 
			
		||||
# define GMOCK_DECLARE_int32_(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)
 | 
			
		||||
 | 
			
		||||
// 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)
 | 
			
		||||
#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)
 | 
			
		||||
#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)
 | 
			
		||||
 | 
			
		||||
#endif  // !defined(GMOCK_DECLARE_bool_)
 | 
			
		||||
 
 | 
			
		||||
@@ -33,12 +33,13 @@
 | 
			
		||||
// threads concurrently.
 | 
			
		||||
 | 
			
		||||
#include "gmock/gmock.h"
 | 
			
		||||
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
 | 
			
		||||
namespace testing {
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
// From <gtest/internal/gtest-port.h>.
 | 
			
		||||
// From "gtest/internal/gtest-port.h".
 | 
			
		||||
using ::testing::internal::ThreadWithParam;
 | 
			
		||||
 | 
			
		||||
// The maximum number of test threads (not including helper threads)
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,7 @@
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
#include "gtest/internal/custom/gtest.h"
 | 
			
		||||
 | 
			
		||||
#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 old_verbose = GMOCK_FLAG(verbose);
 | 
			
		||||
 | 
			
		||||
  int argc = M;
 | 
			
		||||
  int argc = M - 1;
 | 
			
		||||
  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++) {
 | 
			
		||||
    EXPECT_STREQ(new_argv[i], argv[i]);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user