Update gtest to upstream r629
This commit is contained in:
parent
7852b68c20
commit
b0d3830399
@ -10,17 +10,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ANDROID
|
|
||||||
# include <android/api-level.h>
|
|
||||||
# define GTEST_HAS_CLONE (__ANDROID_API__ > 7 && !defined __i386__)
|
|
||||||
# define GTEST_HAS_POSIX_RE (__ANDROID_API__ > 7)
|
|
||||||
# if defined _GLIBCXX_USE_WCHAR_T && _GLIBCXX_USE_WCHAR_T
|
|
||||||
# define GTEST_HAS_STD_WSTRING 1
|
|
||||||
# else
|
|
||||||
# define GTEST_HAS_STD_WSTRING 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdarg.h> // for va_list
|
#include <stdarg.h> // for va_list
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
@ -168,6 +168,8 @@
|
|||||||
// Test's own tr1 tuple implementation should be
|
// Test's own tr1 tuple implementation should be
|
||||||
// used. Unused when the user sets
|
// used. Unused when the user sets
|
||||||
// GTEST_HAS_TR1_TUPLE to 0.
|
// GTEST_HAS_TR1_TUPLE to 0.
|
||||||
|
// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test
|
||||||
|
// is building in C++11/C++98 mode.
|
||||||
// GTEST_LINKED_AS_SHARED_LIBRARY
|
// GTEST_LINKED_AS_SHARED_LIBRARY
|
||||||
// - Define to 1 when compiling tests that use
|
// - Define to 1 when compiling tests that use
|
||||||
// Google Test as a shared library (known as
|
// Google Test as a shared library (known as
|
||||||
@ -186,6 +188,8 @@
|
|||||||
// GTEST_OS_LINUX - Linux
|
// GTEST_OS_LINUX - Linux
|
||||||
// GTEST_OS_LINUX_ANDROID - Google Android
|
// GTEST_OS_LINUX_ANDROID - Google Android
|
||||||
// GTEST_OS_MAC - Mac OS X
|
// GTEST_OS_MAC - Mac OS X
|
||||||
|
// GTEST_OS_IOS - iOS
|
||||||
|
// GTEST_OS_IOS_SIMULATOR - iOS simulator
|
||||||
// GTEST_OS_NACL - Google Native Client (NaCl)
|
// GTEST_OS_NACL - Google Native Client (NaCl)
|
||||||
// GTEST_OS_OPENBSD - OpenBSD
|
// GTEST_OS_OPENBSD - OpenBSD
|
||||||
// GTEST_OS_QNX - QNX
|
// GTEST_OS_QNX - QNX
|
||||||
@ -291,6 +295,11 @@
|
|||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
#endif // !_WIN32_WCE
|
#endif // !_WIN32_WCE
|
||||||
|
|
||||||
|
#if defined __APPLE__
|
||||||
|
# include <AvailabilityMacros.h>
|
||||||
|
# include <TargetConditionals.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <iostream> // NOLINT
|
#include <iostream> // NOLINT
|
||||||
#include <sstream> // NOLINT
|
#include <sstream> // NOLINT
|
||||||
#include <string> // NOLINT
|
#include <string> // NOLINT
|
||||||
@ -326,6 +335,8 @@
|
|||||||
#define GTEST_OS_NACL 0
|
#define GTEST_OS_NACL 0
|
||||||
#define GTEST_OS_OPENBSD 0
|
#define GTEST_OS_OPENBSD 0
|
||||||
#define GTEST_OS_QNX 0
|
#define GTEST_OS_QNX 0
|
||||||
|
#define GTEST_OS_IOS 0
|
||||||
|
#define GTEST_OS_IOS_SIMULATOR 0
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
# undef GTEST_OS_CYGWIN
|
# undef GTEST_OS_CYGWIN
|
||||||
@ -349,13 +360,21 @@
|
|||||||
#elif defined __APPLE__
|
#elif defined __APPLE__
|
||||||
# undef GTEST_OS_MAC
|
# undef GTEST_OS_MAC
|
||||||
# define GTEST_OS_MAC 1
|
# define GTEST_OS_MAC 1
|
||||||
|
# if TARGET_OS_IPHONE
|
||||||
|
# undef GTEST_OS_IOS
|
||||||
|
# define GTEST_OS_IOS 1
|
||||||
|
# if TARGET_IPHONE_SIMULATOR
|
||||||
|
# undef GTEST_OS_IOS_SIMULATOR
|
||||||
|
# define GTEST_OS_IOS_SIMULATOR 1
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
#elif defined __linux__
|
#elif defined __linux__
|
||||||
# undef GTEST_OS_LINUX
|
# undef GTEST_OS_LINUX
|
||||||
# define GTEST_OS_LINUX 1
|
# define GTEST_OS_LINUX 1
|
||||||
# ifdef ANDROID
|
# if defined __ANDROID__
|
||||||
# undef GTEST_OS_LINUX_ANDROID
|
# undef GTEST_OS_LINUX_ANDROID
|
||||||
# define GTEST_OS_LINUX_ANDROID 1
|
# define GTEST_OS_LINUX_ANDROID 1
|
||||||
# endif // ANDROID
|
# endif
|
||||||
#elif defined __MVS__
|
#elif defined __MVS__
|
||||||
# undef GTEST_OS_ZOS
|
# undef GTEST_OS_ZOS
|
||||||
# define GTEST_OS_ZOS 1
|
# define GTEST_OS_ZOS 1
|
||||||
@ -379,6 +398,19 @@
|
|||||||
# define GTEST_OS_QNX 1
|
# define GTEST_OS_QNX 1
|
||||||
#endif // __CYGWIN__
|
#endif // __CYGWIN__
|
||||||
|
|
||||||
|
#ifndef GTEST_LANG_CXX11
|
||||||
|
// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when
|
||||||
|
// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a
|
||||||
|
// value for __cplusplus, and recent versions of clang, gcc, and
|
||||||
|
// probably other compilers set that too in C++11 mode.
|
||||||
|
# if defined __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L
|
||||||
|
// Compiling in at least C++11 mode.
|
||||||
|
# define GTEST_LANG_CXX11 1
|
||||||
|
# else
|
||||||
|
# define GTEST_LANG_CXX11 0
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Brings in definitions for functions used in the testing::internal::posix
|
// Brings in definitions for functions used in the testing::internal::posix
|
||||||
// namespace (read, write, close, chdir, isatty, stat). We do not currently
|
// namespace (read, write, close, chdir, isatty, stat). We do not currently
|
||||||
// use them on Windows Mobile.
|
// use them on Windows Mobile.
|
||||||
@ -387,21 +419,26 @@
|
|||||||
// is not the case, we need to include headers that provide the functions
|
// is not the case, we need to include headers that provide the functions
|
||||||
// mentioned above.
|
// mentioned above.
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# if !GTEST_OS_NACL
|
# include <strings.h>
|
||||||
// TODO(vladl@google.com): Remove this condition when Native Client SDK adds
|
|
||||||
// strings.h (tracked in
|
|
||||||
// http://code.google.com/p/nativeclient/issues/detail?id=1175).
|
|
||||||
# include <strings.h> // Native Client doesn't provide strings.h.
|
|
||||||
# endif
|
|
||||||
#elif !GTEST_OS_WINDOWS_MOBILE
|
#elif !GTEST_OS_WINDOWS_MOBILE
|
||||||
# include <direct.h>
|
# include <direct.h>
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if GTEST_OS_LINUX_ANDROID
|
||||||
|
// Used to define __ANDROID_API__ matching the target NDK API level.
|
||||||
|
# include <android/api-level.h> // NOLINT
|
||||||
|
#endif
|
||||||
|
|
||||||
// Defines this to true iff Google Test can use POSIX regular expressions.
|
// Defines this to true iff Google Test can use POSIX regular expressions.
|
||||||
#ifndef GTEST_HAS_POSIX_RE
|
#ifndef GTEST_HAS_POSIX_RE
|
||||||
|
# if GTEST_OS_LINUX_ANDROID
|
||||||
|
// On Android, <regex.h> is only available starting with Gingerbread.
|
||||||
|
# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
|
||||||
|
# else
|
||||||
# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
|
# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if GTEST_HAS_POSIX_RE
|
#if GTEST_HAS_POSIX_RE
|
||||||
|
|
||||||
@ -411,7 +448,7 @@
|
|||||||
// <stddef.h>.
|
// <stddef.h>.
|
||||||
# include <regex.h> // NOLINT
|
# include <regex.h> // NOLINT
|
||||||
|
|
||||||
# define GTEST_USES_POSIX_RE 1
|
# define GTEST_USES_POSIX_RE 1
|
||||||
# define GTEST_USES_SIMPLE_RE 0
|
# define GTEST_USES_SIMPLE_RE 0
|
||||||
|
|
||||||
#elif GTEST_OS_WINDOWS
|
#elif GTEST_OS_WINDOWS
|
||||||
@ -518,7 +555,16 @@
|
|||||||
# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
|
# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
|
||||||
|
|
||||||
# ifdef __GXX_RTTI
|
# ifdef __GXX_RTTI
|
||||||
|
// When building against STLport with the Android NDK and with
|
||||||
|
// -frtti -fno-exceptions, the build fails at link time with undefined
|
||||||
|
// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
|
||||||
|
// so disable RTTI when detected.
|
||||||
|
# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
|
||||||
|
!defined(__EXCEPTIONS)
|
||||||
|
# define GTEST_HAS_RTTI 0
|
||||||
|
# else
|
||||||
# define GTEST_HAS_RTTI 1
|
# define GTEST_HAS_RTTI 1
|
||||||
|
# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
|
||||||
# else
|
# else
|
||||||
# define GTEST_HAS_RTTI 0
|
# define GTEST_HAS_RTTI 0
|
||||||
# endif // __GXX_RTTI
|
# endif // __GXX_RTTI
|
||||||
@ -579,8 +625,13 @@
|
|||||||
// this macro to 0 to prevent Google Test from using tuple (any
|
// this macro to 0 to prevent Google Test from using tuple (any
|
||||||
// feature depending on tuple with be disabled in this mode).
|
// feature depending on tuple with be disabled in this mode).
|
||||||
#ifndef GTEST_HAS_TR1_TUPLE
|
#ifndef GTEST_HAS_TR1_TUPLE
|
||||||
|
# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
|
||||||
|
// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.
|
||||||
|
# define GTEST_HAS_TR1_TUPLE 0
|
||||||
|
# else
|
||||||
// The user didn't tell us not to do it, so we assume it's OK.
|
// The user didn't tell us not to do it, so we assume it's OK.
|
||||||
# define GTEST_HAS_TR1_TUPLE 1
|
# define GTEST_HAS_TR1_TUPLE 1
|
||||||
|
# endif
|
||||||
#endif // GTEST_HAS_TR1_TUPLE
|
#endif // GTEST_HAS_TR1_TUPLE
|
||||||
|
|
||||||
// Determines whether Google Test's own tr1 tuple implementation
|
// Determines whether Google Test's own tr1 tuple implementation
|
||||||
@ -589,15 +640,30 @@
|
|||||||
// The user didn't tell us, so we need to figure it out.
|
// The user didn't tell us, so we need to figure it out.
|
||||||
|
|
||||||
// We use our own TR1 tuple if we aren't sure the user has an
|
// We use our own TR1 tuple if we aren't sure the user has an
|
||||||
// implementation of it already. At this time, GCC 4.0.0+ and MSVC
|
// implementation of it already. At this time, libstdc++ 4.0.0+ and
|
||||||
// 2010 are the only mainstream compilers that come with a TR1 tuple
|
// MSVC 2010 are the only mainstream standard libraries that come
|
||||||
// implementation. NVIDIA's CUDA NVCC compiler pretends to be GCC by
|
// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler
|
||||||
// defining __GNUC__ and friends, but cannot compile GCC's tuple
|
// pretends to be GCC by defining __GNUC__ and friends, but cannot
|
||||||
// implementation. MSVC 2008 (9.0) provides TR1 tuple in a 323 MB
|
// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1
|
||||||
// Feature Pack download, which we cannot assume the user has.
|
// tuple in a 323 MB Feature Pack download, which we cannot assume the
|
||||||
// QNX's QCC compiler is a modified GCC but it doesn't support TR1 tuple.
|
// user has. QNX's QCC compiler is a modified GCC but it doesn't
|
||||||
|
// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode,
|
||||||
|
// and it can be used with some compilers that define __GNUC__.
|
||||||
# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
|
# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
|
||||||
&& !GTEST_OS_QNX) || _MSC_VER >= 1600
|
&& !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600
|
||||||
|
# define GTEST_ENV_HAS_TR1_TUPLE_ 1
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
|
||||||
|
// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
|
||||||
|
// can build with clang but need to use gcc4.2's libstdc++).
|
||||||
|
# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
|
||||||
|
# define GTEST_ENV_HAS_STD_TUPLE_ 1
|
||||||
|
#else
|
||||||
|
# define GTEST_ENV_HAS_STD_TUPLE_ 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
|
||||||
# define GTEST_USE_OWN_TR1_TUPLE 0
|
# define GTEST_USE_OWN_TR1_TUPLE 0
|
||||||
# else
|
# else
|
||||||
# define GTEST_USE_OWN_TR1_TUPLE 1
|
# define GTEST_USE_OWN_TR1_TUPLE 1
|
||||||
@ -1623,6 +1689,22 @@ inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
|
|||||||
#undef GTEST_TUPLE_ELEMENT_
|
#undef GTEST_TUPLE_ELEMENT_
|
||||||
|
|
||||||
#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
|
#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
|
||||||
|
# elif GTEST_ENV_HAS_STD_TUPLE_
|
||||||
|
# include <tuple>
|
||||||
|
// C++11 puts its tuple into the ::std namespace rather than
|
||||||
|
// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there.
|
||||||
|
// This causes undefined behavior, but supported compilers react in
|
||||||
|
// the way we intend.
|
||||||
|
namespace std {
|
||||||
|
namespace tr1 {
|
||||||
|
using ::std::get;
|
||||||
|
using ::std::make_tuple;
|
||||||
|
using ::std::tuple;
|
||||||
|
using ::std::tuple_element;
|
||||||
|
using ::std::tuple_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# elif GTEST_OS_SYMBIAN
|
# elif GTEST_OS_SYMBIAN
|
||||||
|
|
||||||
// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
|
// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
|
||||||
@ -1654,21 +1736,7 @@ inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
|
|||||||
# undef _TR1_FUNCTIONAL // Allows the user to #include
|
# undef _TR1_FUNCTIONAL // Allows the user to #include
|
||||||
// <tr1/functional> if he chooses to.
|
// <tr1/functional> if he chooses to.
|
||||||
# else
|
# else
|
||||||
# if defined (__cplusplus) && __cplusplus > 199711L
|
|
||||||
# include <tuple>
|
|
||||||
namespace std {
|
|
||||||
namespace tr1 {
|
|
||||||
using std::tuple;
|
|
||||||
using std::tuple_element;
|
|
||||||
using std::get;
|
|
||||||
using std::tuple_size;
|
|
||||||
using std::make_tuple;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# else
|
|
||||||
# include <tr1/tuple> // NOLINT
|
# include <tr1/tuple> // NOLINT
|
||||||
# endif
|
|
||||||
|
|
||||||
# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
|
# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
|
||||||
|
|
||||||
# else
|
# else
|
||||||
@ -1687,7 +1755,16 @@ namespace std {
|
|||||||
// The user didn't tell us, so we need to figure it out.
|
// The user didn't tell us, so we need to figure it out.
|
||||||
|
|
||||||
# if GTEST_OS_LINUX && !defined(__ia64__)
|
# if GTEST_OS_LINUX && !defined(__ia64__)
|
||||||
|
# if GTEST_OS_LINUX_ANDROID
|
||||||
|
// On Android, clone() is only available on ARM starting with Gingerbread.
|
||||||
|
# if (defined(__arm__) || defined(__mips__)) && __ANDROID_API__ >= 9
|
||||||
|
# define GTEST_HAS_CLONE 1
|
||||||
|
# else
|
||||||
|
# define GTEST_HAS_CLONE 0
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
# define GTEST_HAS_CLONE 1
|
# define GTEST_HAS_CLONE 1
|
||||||
|
# endif
|
||||||
# else
|
# else
|
||||||
# define GTEST_HAS_CLONE 0
|
# define GTEST_HAS_CLONE 0
|
||||||
# endif // GTEST_OS_LINUX && !defined(__ia64__)
|
# endif // GTEST_OS_LINUX && !defined(__ia64__)
|
||||||
@ -1710,7 +1787,8 @@ namespace std {
|
|||||||
// Google Test does not support death tests for VC 7.1 and earlier as
|
// Google Test does not support death tests for VC 7.1 and earlier as
|
||||||
// abort() in a VC 7.1 application compiled as GUI in debug config
|
// abort() in a VC 7.1 application compiled as GUI in debug config
|
||||||
// pops up a dialog window that cannot be suppressed programmatically.
|
// pops up a dialog window that cannot be suppressed programmatically.
|
||||||
#if (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
|
#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
|
||||||
|
(GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \
|
||||||
(GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
|
(GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
|
||||||
GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
|
GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
|
||||||
GTEST_OS_OPENBSD || GTEST_OS_QNX)
|
GTEST_OS_OPENBSD || GTEST_OS_QNX)
|
||||||
@ -1859,8 +1937,6 @@ class Message;
|
|||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
class String;
|
|
||||||
|
|
||||||
// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
|
// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
|
||||||
// expression is true. For example, you could use it to verify the
|
// expression is true. For example, you could use it to verify the
|
||||||
// size of a static array:
|
// size of a static array:
|
||||||
@ -2043,10 +2119,9 @@ class GTEST_API_ RE {
|
|||||||
private:
|
private:
|
||||||
void Init(const char* regex);
|
void Init(const char* regex);
|
||||||
|
|
||||||
// We use a const char* instead of a string, as Google Test may be used
|
// We use a const char* instead of an std::string, as Google Test used to be
|
||||||
// where string is not available. We also do not use Google Test's own
|
// used where std::string is not available. TODO(wan@google.com): change to
|
||||||
// String type here, in order to simplify dependencies between the
|
// std::string.
|
||||||
// files.
|
|
||||||
const char* pattern_;
|
const char* pattern_;
|
||||||
bool is_valid_;
|
bool is_valid_;
|
||||||
|
|
||||||
@ -2229,9 +2304,9 @@ Derived* CheckedDowncastToActualType(Base* base) {
|
|||||||
// GetCapturedStderr - stops capturing stderr and returns the captured string.
|
// GetCapturedStderr - stops capturing stderr and returns the captured string.
|
||||||
//
|
//
|
||||||
GTEST_API_ void CaptureStdout();
|
GTEST_API_ void CaptureStdout();
|
||||||
GTEST_API_ String GetCapturedStdout();
|
GTEST_API_ std::string GetCapturedStdout();
|
||||||
GTEST_API_ void CaptureStderr();
|
GTEST_API_ void CaptureStderr();
|
||||||
GTEST_API_ String GetCapturedStderr();
|
GTEST_API_ std::string GetCapturedStderr();
|
||||||
|
|
||||||
#endif // GTEST_HAS_STREAM_REDIRECTION
|
#endif // GTEST_HAS_STREAM_REDIRECTION
|
||||||
|
|
||||||
@ -2982,7 +3057,7 @@ typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
|
|||||||
#define GTEST_DECLARE_int32_(name) \
|
#define GTEST_DECLARE_int32_(name) \
|
||||||
GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
|
GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
|
||||||
#define GTEST_DECLARE_string_(name) \
|
#define GTEST_DECLARE_string_(name) \
|
||||||
GTEST_API_ extern ::testing::internal::String GTEST_FLAG(name)
|
GTEST_API_ extern ::std::string GTEST_FLAG(name)
|
||||||
|
|
||||||
// Macros for defining flags.
|
// Macros for defining flags.
|
||||||
#define GTEST_DEFINE_bool_(name, default_val, doc) \
|
#define GTEST_DEFINE_bool_(name, default_val, doc) \
|
||||||
@ -2990,7 +3065,7 @@ typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
|
|||||||
#define GTEST_DEFINE_int32_(name, default_val, doc) \
|
#define GTEST_DEFINE_int32_(name, default_val, doc) \
|
||||||
GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
|
GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
|
||||||
#define GTEST_DEFINE_string_(name, default_val, doc) \
|
#define GTEST_DEFINE_string_(name, default_val, doc) \
|
||||||
GTEST_API_ ::testing::internal::String GTEST_FLAG(name) = (default_val)
|
GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
|
||||||
|
|
||||||
// Thread annotations
|
// Thread annotations
|
||||||
#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
|
#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
|
||||||
@ -3083,30 +3158,7 @@ const char* StringFromGTestEnv(const char* flag, const char* default_val);
|
|||||||
namespace testing {
|
namespace testing {
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
// String - a UTF-8 string class.
|
// String - an abstract class holding static string utilities.
|
||||||
//
|
|
||||||
// For historic reasons, we don't use std::string.
|
|
||||||
//
|
|
||||||
// TODO(wan@google.com): replace this class with std::string or
|
|
||||||
// implement it in terms of the latter.
|
|
||||||
//
|
|
||||||
// Note that String can represent both NULL and the empty string,
|
|
||||||
// while std::string cannot represent NULL.
|
|
||||||
//
|
|
||||||
// NULL and the empty string are considered different. NULL is less
|
|
||||||
// than anything (including the empty string) except itself.
|
|
||||||
//
|
|
||||||
// This class only provides minimum functionality necessary for
|
|
||||||
// implementing Google Test. We do not intend to implement a full-fledged
|
|
||||||
// string class here.
|
|
||||||
//
|
|
||||||
// Since the purpose of this class is to provide a substitute for
|
|
||||||
// std::string on platforms where it cannot be used, we define a copy
|
|
||||||
// constructor and assignment operators such that we don't need
|
|
||||||
// conditional compilation in a lot of places.
|
|
||||||
//
|
|
||||||
// In order to make the representation efficient, the d'tor of String
|
|
||||||
// is not virtual. Therefore DO NOT INHERIT FROM String.
|
|
||||||
class GTEST_API_ String {
|
class GTEST_API_ String {
|
||||||
public:
|
public:
|
||||||
// Static utility methods
|
// Static utility methods
|
||||||
@ -3157,7 +3209,7 @@ class GTEST_API_ String {
|
|||||||
// NULL will be converted to "(null)". If an error occurred during
|
// NULL will be converted to "(null)". If an error occurred during
|
||||||
// the conversion, "(failed to convert from wide string)" is
|
// the conversion, "(failed to convert from wide string)" is
|
||||||
// returned.
|
// returned.
|
||||||
static String ShowWideCString(const wchar_t* wide_c_str);
|
static std::string ShowWideCString(const wchar_t* wide_c_str);
|
||||||
|
|
||||||
// Compares two wide C strings. Returns true iff they have the same
|
// Compares two wide C strings. Returns true iff they have the same
|
||||||
// content.
|
// content.
|
||||||
@ -3191,7 +3243,12 @@ class GTEST_API_ String {
|
|||||||
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
|
static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
|
||||||
const wchar_t* rhs);
|
const wchar_t* rhs);
|
||||||
|
|
||||||
// Formats a list of arguments to a String, using the same format
|
// Returns true iff the given string ends with the given suffix, ignoring
|
||||||
|
// case. Any string is considered to end with an empty suffix.
|
||||||
|
static bool EndsWithCaseInsensitive(
|
||||||
|
const std::string& str, const std::string& suffix);
|
||||||
|
|
||||||
|
// Formats a list of arguments to an std::string, using the same format
|
||||||
// spec string as for printf.
|
// spec string as for printf.
|
||||||
//
|
//
|
||||||
// We do not use the StringPrintf class as it is not universally
|
// We do not use the StringPrintf class as it is not universally
|
||||||
@ -3200,156 +3257,17 @@ class GTEST_API_ String {
|
|||||||
// The result is limited to 4096 characters (including the tailing
|
// The result is limited to 4096 characters (including the tailing
|
||||||
// 0). If 4096 characters are not enough to format the input,
|
// 0). If 4096 characters are not enough to format the input,
|
||||||
// "<buffer exceeded>" is returned.
|
// "<buffer exceeded>" is returned.
|
||||||
static String Format(const char* format, ...);
|
static std::string Format(const char* format, ...);
|
||||||
|
|
||||||
// C'tors
|
|
||||||
|
|
||||||
// The default c'tor constructs a NULL string.
|
|
||||||
String() : c_str_(NULL), length_(0) {}
|
|
||||||
|
|
||||||
// Constructs a String by cloning a 0-terminated C string.
|
|
||||||
String(const char* a_c_str) { // NOLINT
|
|
||||||
if (a_c_str == NULL) {
|
|
||||||
c_str_ = NULL;
|
|
||||||
length_ = 0;
|
|
||||||
} else {
|
|
||||||
ConstructNonNull(a_c_str, strlen(a_c_str));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Constructs a String by copying a given number of chars from a
|
|
||||||
// buffer. E.g. String("hello", 3) creates the string "hel",
|
|
||||||
// String("a\0bcd", 4) creates "a\0bc", String(NULL, 0) creates "",
|
|
||||||
// and String(NULL, 1) results in access violation.
|
|
||||||
String(const char* buffer, size_t a_length) {
|
|
||||||
ConstructNonNull(buffer, a_length);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The copy c'tor creates a new copy of the string. The two
|
|
||||||
// String objects do not share content.
|
|
||||||
String(const String& str) : c_str_(NULL), length_(0) { *this = str; }
|
|
||||||
|
|
||||||
// D'tor. String is intended to be a final class, so the d'tor
|
|
||||||
// doesn't need to be virtual.
|
|
||||||
~String() { delete[] c_str_; }
|
|
||||||
|
|
||||||
// Allows a String to be implicitly converted to an ::std::string or
|
|
||||||
// ::string, and vice versa. Converting a String containing a NULL
|
|
||||||
// pointer to ::std::string or ::string is undefined behavior.
|
|
||||||
// Converting a ::std::string or ::string containing an embedded NUL
|
|
||||||
// character to a String will result in the prefix up to the first
|
|
||||||
// NUL character.
|
|
||||||
String(const ::std::string& str) { // NOLINT
|
|
||||||
ConstructNonNull(str.c_str(), str.length());
|
|
||||||
}
|
|
||||||
|
|
||||||
operator ::std::string() const { return ::std::string(c_str(), length()); }
|
|
||||||
|
|
||||||
#if GTEST_HAS_GLOBAL_STRING
|
|
||||||
String(const ::string& str) { // NOLINT
|
|
||||||
ConstructNonNull(str.c_str(), str.length());
|
|
||||||
}
|
|
||||||
|
|
||||||
operator ::string() const { return ::string(c_str(), length()); }
|
|
||||||
#endif // GTEST_HAS_GLOBAL_STRING
|
|
||||||
|
|
||||||
// Returns true iff this is an empty string (i.e. "").
|
|
||||||
bool empty() const { return (c_str() != NULL) && (length() == 0); }
|
|
||||||
|
|
||||||
// Compares this with another String.
|
|
||||||
// Returns < 0 if this is less than rhs, 0 if this is equal to rhs, or > 0
|
|
||||||
// if this is greater than rhs.
|
|
||||||
int Compare(const String& rhs) const;
|
|
||||||
|
|
||||||
// Returns true iff this String equals the given C string. A NULL
|
|
||||||
// string and a non-NULL string are considered not equal.
|
|
||||||
bool operator==(const char* a_c_str) const { return Compare(a_c_str) == 0; }
|
|
||||||
|
|
||||||
// Returns true iff this String is less than the given String. A
|
|
||||||
// NULL string is considered less than "".
|
|
||||||
bool operator<(const String& rhs) const { return Compare(rhs) < 0; }
|
|
||||||
|
|
||||||
// Returns true iff this String doesn't equal the given C string. A NULL
|
|
||||||
// string and a non-NULL string are considered not equal.
|
|
||||||
bool operator!=(const char* a_c_str) const { return !(*this == a_c_str); }
|
|
||||||
|
|
||||||
// Returns true iff this String ends with the given suffix. *Any*
|
|
||||||
// String is considered to end with a NULL or empty suffix.
|
|
||||||
bool EndsWith(const char* suffix) const;
|
|
||||||
|
|
||||||
// Returns true iff this String ends with the given suffix, not considering
|
|
||||||
// case. Any String is considered to end with a NULL or empty suffix.
|
|
||||||
bool EndsWithCaseInsensitive(const char* suffix) const;
|
|
||||||
|
|
||||||
// Returns the length of the encapsulated string, or 0 if the
|
|
||||||
// string is NULL.
|
|
||||||
size_t length() const { return length_; }
|
|
||||||
|
|
||||||
// Gets the 0-terminated C string this String object represents.
|
|
||||||
// The String object still owns the string. Therefore the caller
|
|
||||||
// should NOT delete the return value.
|
|
||||||
const char* c_str() const { return c_str_; }
|
|
||||||
|
|
||||||
// Assigns a C string to this object. Self-assignment works.
|
|
||||||
const String& operator=(const char* a_c_str) {
|
|
||||||
return *this = String(a_c_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assigns a String object to this object. Self-assignment works.
|
|
||||||
const String& operator=(const String& rhs) {
|
|
||||||
if (this != &rhs) {
|
|
||||||
delete[] c_str_;
|
|
||||||
if (rhs.c_str() == NULL) {
|
|
||||||
c_str_ = NULL;
|
|
||||||
length_ = 0;
|
|
||||||
} else {
|
|
||||||
ConstructNonNull(rhs.c_str(), rhs.length());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Constructs a non-NULL String from the given content. This
|
String(); // Not meant to be instantiated.
|
||||||
// function can only be called when c_str_ has not been allocated.
|
|
||||||
// ConstructNonNull(NULL, 0) results in an empty string ("").
|
|
||||||
// ConstructNonNull(NULL, non_zero) is undefined behavior.
|
|
||||||
void ConstructNonNull(const char* buffer, size_t a_length) {
|
|
||||||
char* const str = new char[a_length + 1];
|
|
||||||
memcpy(str, buffer, a_length);
|
|
||||||
str[a_length] = '\0';
|
|
||||||
c_str_ = str;
|
|
||||||
length_ = a_length;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* c_str_;
|
|
||||||
size_t length_;
|
|
||||||
}; // class String
|
}; // class String
|
||||||
|
|
||||||
// Streams a String to an ostream. Each '\0' character in the String
|
// Gets the content of the stringstream's buffer as an std::string. Each '\0'
|
||||||
// is replaced with "\\0".
|
|
||||||
inline ::std::ostream& operator<<(::std::ostream& os, const String& str) {
|
|
||||||
if (str.c_str() == NULL) {
|
|
||||||
os << "(null)";
|
|
||||||
} else {
|
|
||||||
const char* const c_str = str.c_str();
|
|
||||||
for (size_t i = 0; i != str.length(); i++) {
|
|
||||||
if (c_str[i] == '\0') {
|
|
||||||
os << "\\0";
|
|
||||||
} else {
|
|
||||||
os << c_str[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return os;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gets the content of the stringstream's buffer as a String. Each '\0'
|
|
||||||
// character in the buffer is replaced with "\\0".
|
// character in the buffer is replaced with "\\0".
|
||||||
GTEST_API_ String StringStreamToString(::std::stringstream* stream);
|
GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
|
||||||
|
|
||||||
// Converts a streamable value to a String. A NULL pointer is
|
// Converts a streamable value to an std::string. A NULL pointer is
|
||||||
// converted to "(null)". When the input value is a ::string,
|
// converted to "(null)". When the input value is a ::string,
|
||||||
// ::std::string, ::wstring, or ::std::wstring object, each NUL
|
// ::std::string, ::wstring, or ::std::wstring object, each NUL
|
||||||
// character in it is replaced with "\\0".
|
// character in it is replaced with "\\0".
|
||||||
@ -3358,7 +3276,7 @@ GTEST_API_ String StringStreamToString(::std::stringstream* stream);
|
|||||||
// to the definition of the Message class, required by the ARM
|
// to the definition of the Message class, required by the ARM
|
||||||
// compiler.
|
// compiler.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
String StreamableToString(const T& streamable);
|
std::string StreamableToString(const T& streamable);
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
@ -3426,11 +3344,7 @@ class GTEST_API_ FilePath {
|
|||||||
FilePath() : pathname_("") { }
|
FilePath() : pathname_("") { }
|
||||||
FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
|
FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
|
||||||
|
|
||||||
explicit FilePath(const char* pathname) : pathname_(pathname) {
|
explicit FilePath(const std::string& pathname) : pathname_(pathname) {
|
||||||
Normalize();
|
|
||||||
}
|
|
||||||
|
|
||||||
explicit FilePath(const String& pathname) : pathname_(pathname) {
|
|
||||||
Normalize();
|
Normalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3443,7 +3357,7 @@ class GTEST_API_ FilePath {
|
|||||||
pathname_ = rhs.pathname_;
|
pathname_ = rhs.pathname_;
|
||||||
}
|
}
|
||||||
|
|
||||||
String ToString() const { return pathname_; }
|
const std::string& string() const { return pathname_; }
|
||||||
const char* c_str() const { return pathname_.c_str(); }
|
const char* c_str() const { return pathname_.c_str(); }
|
||||||
|
|
||||||
// Returns the current working directory, or "" if unsuccessful.
|
// Returns the current working directory, or "" if unsuccessful.
|
||||||
@ -3476,8 +3390,8 @@ class GTEST_API_ FilePath {
|
|||||||
const FilePath& base_name,
|
const FilePath& base_name,
|
||||||
const char* extension);
|
const char* extension);
|
||||||
|
|
||||||
// Returns true iff the path is NULL or "".
|
// Returns true iff the path is "".
|
||||||
bool IsEmpty() const { return c_str() == NULL || *c_str() == '\0'; }
|
bool IsEmpty() const { return pathname_.empty(); }
|
||||||
|
|
||||||
// If input name has a trailing separator character, removes it and returns
|
// If input name has a trailing separator character, removes it and returns
|
||||||
// the name, otherwise return the name string unmodified.
|
// the name, otherwise return the name string unmodified.
|
||||||
@ -3566,7 +3480,7 @@ class GTEST_API_ FilePath {
|
|||||||
// separators. Returns NULL if no path separator was found.
|
// separators. Returns NULL if no path separator was found.
|
||||||
const char* FindLastPathSeparator() const;
|
const char* FindLastPathSeparator() const;
|
||||||
|
|
||||||
String pathname_;
|
std::string pathname_;
|
||||||
}; // class FilePath
|
}; // class FilePath
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
@ -3635,7 +3549,7 @@ namespace internal {
|
|||||||
// NB: This function is also used in Google Mock, so don't move it inside of
|
// NB: This function is also used in Google Mock, so don't move it inside of
|
||||||
// the typed-test-only section below.
|
// the typed-test-only section below.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
String GetTypeName() {
|
std::string GetTypeName() {
|
||||||
# if GTEST_HAS_RTTI
|
# if GTEST_HAS_RTTI
|
||||||
|
|
||||||
const char* const name = typeid(T).name();
|
const char* const name = typeid(T).name();
|
||||||
@ -3647,7 +3561,7 @@ String GetTypeName() {
|
|||||||
using abi::__cxa_demangle;
|
using abi::__cxa_demangle;
|
||||||
# endif // GTEST_HAS_CXXABI_H_
|
# endif // GTEST_HAS_CXXABI_H_
|
||||||
char* const readable_name = __cxa_demangle(name, 0, 0, &status);
|
char* const readable_name = __cxa_demangle(name, 0, 0, &status);
|
||||||
const String name_str(status == 0 ? readable_name : name);
|
const std::string name_str(status == 0 ? readable_name : name);
|
||||||
free(readable_name);
|
free(readable_name);
|
||||||
return name_str;
|
return name_str;
|
||||||
# else
|
# else
|
||||||
@ -6921,7 +6835,7 @@ struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
|
|||||||
// This allows a user to use his own types in Google Test assertions by
|
// This allows a user to use his own types in Google Test assertions by
|
||||||
// overloading the << operator.
|
// overloading the << operator.
|
||||||
//
|
//
|
||||||
// util/gtl/stl_logging-inl.h overloads << for STL containers. These
|
// util/gtl/stl_logging.h overloads << for STL containers. These
|
||||||
// overloads cannot be defined in the std namespace, as that will be
|
// overloads cannot be defined in the std namespace, as that will be
|
||||||
// undefined behavior. Therefore, they are defined in the global
|
// undefined behavior. Therefore, they are defined in the global
|
||||||
// namespace instead.
|
// namespace instead.
|
||||||
@ -7011,8 +6925,8 @@ char (&IsNullLiteralHelper(...))[2]; // NOLINT
|
|||||||
#endif // GTEST_ELLIPSIS_NEEDS_POD_
|
#endif // GTEST_ELLIPSIS_NEEDS_POD_
|
||||||
|
|
||||||
// Appends the user-supplied message to the Google-Test-generated message.
|
// Appends the user-supplied message to the Google-Test-generated message.
|
||||||
GTEST_API_ String AppendUserMessage(const String& gtest_msg,
|
GTEST_API_ std::string AppendUserMessage(
|
||||||
const Message& user_msg);
|
const std::string& gtest_msg, const Message& user_msg);
|
||||||
|
|
||||||
// A helper class for creating scoped traces in user programs.
|
// A helper class for creating scoped traces in user programs.
|
||||||
class GTEST_API_ ScopedTrace {
|
class GTEST_API_ ScopedTrace {
|
||||||
@ -7033,7 +6947,7 @@ class GTEST_API_ ScopedTrace {
|
|||||||
// c'tor and d'tor. Therefore it doesn't
|
// c'tor and d'tor. Therefore it doesn't
|
||||||
// need to be used otherwise.
|
// need to be used otherwise.
|
||||||
|
|
||||||
// Converts a streamable value to a String. A NULL pointer is
|
// Converts a streamable value to an std::string. A NULL pointer is
|
||||||
// converted to "(null)". When the input value is a ::string,
|
// converted to "(null)". When the input value is a ::string,
|
||||||
// ::std::string, ::wstring, or ::std::wstring object, each NUL
|
// ::std::string, ::wstring, or ::std::wstring object, each NUL
|
||||||
// character in it is replaced with "\\0".
|
// character in it is replaced with "\\0".
|
||||||
@ -7041,7 +6955,7 @@ class GTEST_API_ ScopedTrace {
|
|||||||
// to the definition of the Message class, required by the ARM
|
// to the definition of the Message class, required by the ARM
|
||||||
// compiler.
|
// compiler.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
String StreamableToString(const T& streamable);
|
std::string StreamableToString(const T& streamable);
|
||||||
|
|
||||||
// Constructs and returns the message for an equality assertion
|
// Constructs and returns the message for an equality assertion
|
||||||
// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
|
// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
|
||||||
@ -7060,12 +6974,12 @@ String StreamableToString(const T& streamable);
|
|||||||
// be inserted into the message.
|
// be inserted into the message.
|
||||||
GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
|
GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
|
||||||
const char* actual_expression,
|
const char* actual_expression,
|
||||||
const String& expected_value,
|
const std::string& expected_value,
|
||||||
const String& actual_value,
|
const std::string& actual_value,
|
||||||
bool ignoring_case);
|
bool ignoring_case);
|
||||||
|
|
||||||
// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
|
// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
|
||||||
GTEST_API_ String GetBoolAssertionFailureMessage(
|
GTEST_API_ std::string GetBoolAssertionFailureMessage(
|
||||||
const AssertionResult& assertion_result,
|
const AssertionResult& assertion_result,
|
||||||
const char* expression_text,
|
const char* expression_text,
|
||||||
const char* actual_predicate_value,
|
const char* actual_predicate_value,
|
||||||
@ -7411,9 +7325,9 @@ inline const char* SkipComma(const char* str) {
|
|||||||
|
|
||||||
// Returns the prefix of 'str' before the first comma in it; returns
|
// Returns the prefix of 'str' before the first comma in it; returns
|
||||||
// the entire string if it contains no comma.
|
// the entire string if it contains no comma.
|
||||||
inline String GetPrefixUntilComma(const char* str) {
|
inline std::string GetPrefixUntilComma(const char* str) {
|
||||||
const char* comma = strchr(str, ',');
|
const char* comma = strchr(str, ',');
|
||||||
return comma == NULL ? String(str) : String(str, comma - str);
|
return comma == NULL ? str : std::string(str, comma);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
|
// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
|
||||||
@ -7498,7 +7412,7 @@ class TypeParameterizedTestCase<Fixture, Templates0, Types> {
|
|||||||
|
|
||||||
#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
|
#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
|
||||||
|
|
||||||
// Returns the current OS stack trace as a String.
|
// Returns the current OS stack trace as an std::string.
|
||||||
//
|
//
|
||||||
// The maximum number of stack frames to be included is specified by
|
// The maximum number of stack frames to be included is specified by
|
||||||
// the gtest_stack_trace_depth flag. The skip_count parameter
|
// the gtest_stack_trace_depth flag. The skip_count parameter
|
||||||
@ -7508,8 +7422,8 @@ class TypeParameterizedTestCase<Fixture, Templates0, Types> {
|
|||||||
// For example, if Foo() calls Bar(), which in turn calls
|
// For example, if Foo() calls Bar(), which in turn calls
|
||||||
// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
|
// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
|
||||||
// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
|
// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
|
||||||
GTEST_API_ String GetCurrentOsStackTraceExceptTop(UnitTest* unit_test,
|
GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
|
||||||
int skip_count);
|
UnitTest* unit_test, int skip_count);
|
||||||
|
|
||||||
// Helpers for suppressing warnings on unreachable code or constant
|
// Helpers for suppressing warnings on unreachable code or constant
|
||||||
// condition.
|
// condition.
|
||||||
@ -8185,11 +8099,11 @@ class GTEST_API_ DeathTest {
|
|||||||
// the last death test.
|
// the last death test.
|
||||||
static const char* LastMessage();
|
static const char* LastMessage();
|
||||||
|
|
||||||
static void set_last_death_test_message(const String& message);
|
static void set_last_death_test_message(const std::string& message);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// A string containing a description of the outcome of the last death test.
|
// A string containing a description of the outcome of the last death test.
|
||||||
static String last_death_test_message_;
|
static std::string last_death_test_message_;
|
||||||
|
|
||||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
|
GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
|
||||||
};
|
};
|
||||||
@ -8291,7 +8205,7 @@ GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
|
|||||||
// RUN_ALL_TESTS was called.
|
// RUN_ALL_TESTS was called.
|
||||||
class InternalRunDeathTestFlag {
|
class InternalRunDeathTestFlag {
|
||||||
public:
|
public:
|
||||||
InternalRunDeathTestFlag(const String& a_file,
|
InternalRunDeathTestFlag(const std::string& a_file,
|
||||||
int a_line,
|
int a_line,
|
||||||
int an_index,
|
int an_index,
|
||||||
int a_write_fd)
|
int a_write_fd)
|
||||||
@ -8303,13 +8217,13 @@ class InternalRunDeathTestFlag {
|
|||||||
posix::Close(write_fd_);
|
posix::Close(write_fd_);
|
||||||
}
|
}
|
||||||
|
|
||||||
String file() const { return file_; }
|
const std::string& file() const { return file_; }
|
||||||
int line() const { return line_; }
|
int line() const { return line_; }
|
||||||
int index() const { return index_; }
|
int index() const { return index_; }
|
||||||
int write_fd() const { return write_fd_; }
|
int write_fd() const { return write_fd_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
String file_;
|
std::string file_;
|
||||||
int line_;
|
int line_;
|
||||||
int index_;
|
int index_;
|
||||||
int write_fd_;
|
int write_fd_;
|
||||||
@ -8811,11 +8725,11 @@ class GTEST_API_ Message {
|
|||||||
Message& operator <<(const ::wstring& wstr);
|
Message& operator <<(const ::wstring& wstr);
|
||||||
#endif // GTEST_HAS_GLOBAL_WSTRING
|
#endif // GTEST_HAS_GLOBAL_WSTRING
|
||||||
|
|
||||||
// Gets the text streamed to this object so far as a String.
|
// Gets the text streamed to this object so far as an std::string.
|
||||||
// Each '\0' character in the buffer is replaced with "\\0".
|
// Each '\0' character in the buffer is replaced with "\\0".
|
||||||
//
|
//
|
||||||
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
||||||
internal::String GetString() const {
|
std::string GetString() const {
|
||||||
return internal::StringStreamToString(ss_.get());
|
return internal::StringStreamToString(ss_.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17234,7 +17148,7 @@ class GTEST_API_ TestPartResult {
|
|||||||
int a_line_number,
|
int a_line_number,
|
||||||
const char* a_message)
|
const char* a_message)
|
||||||
: type_(a_type),
|
: type_(a_type),
|
||||||
file_name_(a_file_name),
|
file_name_(a_file_name == NULL ? "" : a_file_name),
|
||||||
line_number_(a_line_number),
|
line_number_(a_line_number),
|
||||||
summary_(ExtractSummary(a_message)),
|
summary_(ExtractSummary(a_message)),
|
||||||
message_(a_message) {
|
message_(a_message) {
|
||||||
@ -17245,7 +17159,9 @@ class GTEST_API_ TestPartResult {
|
|||||||
|
|
||||||
// Gets the name of the source file where the test part took place, or
|
// Gets the name of the source file where the test part took place, or
|
||||||
// NULL if it's unknown.
|
// NULL if it's unknown.
|
||||||
const char* file_name() const { return file_name_.c_str(); }
|
const char* file_name() const {
|
||||||
|
return file_name_.empty() ? NULL : file_name_.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
// Gets the line in the source file where the test part took place,
|
// Gets the line in the source file where the test part took place,
|
||||||
// or -1 if it's unknown.
|
// or -1 if it's unknown.
|
||||||
@ -17274,16 +17190,16 @@ class GTEST_API_ TestPartResult {
|
|||||||
|
|
||||||
// Gets the summary of the failure message by omitting the stack
|
// Gets the summary of the failure message by omitting the stack
|
||||||
// trace in it.
|
// trace in it.
|
||||||
static internal::String ExtractSummary(const char* message);
|
static std::string ExtractSummary(const char* message);
|
||||||
|
|
||||||
// The name of the source file where the test part took place, or
|
// The name of the source file where the test part took place, or
|
||||||
// NULL if the source file is unknown.
|
// "" if the source file is unknown.
|
||||||
internal::String file_name_;
|
std::string file_name_;
|
||||||
// The line in the source file where the test part took place, or -1
|
// The line in the source file where the test part took place, or -1
|
||||||
// if the line number is unknown.
|
// if the line number is unknown.
|
||||||
int line_number_;
|
int line_number_;
|
||||||
internal::String summary_; // The test failure summary.
|
std::string summary_; // The test failure summary.
|
||||||
internal::String message_; // The test failure message.
|
std::string message_; // The test failure message.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Prints a TestPartResult object.
|
// Prints a TestPartResult object.
|
||||||
@ -17700,9 +17616,9 @@ class TestEventRepeater;
|
|||||||
class WindowsDeathTest;
|
class WindowsDeathTest;
|
||||||
class UnitTestImpl* GetUnitTestImpl();
|
class UnitTestImpl* GetUnitTestImpl();
|
||||||
void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
|
void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
|
||||||
const String& message);
|
const std::string& message);
|
||||||
|
|
||||||
// Converts a streamable value to a String. A NULL pointer is
|
// Converts a streamable value to an std::string. A NULL pointer is
|
||||||
// converted to "(null)". When the input value is a ::string,
|
// converted to "(null)". When the input value is a ::string,
|
||||||
// ::std::string, ::wstring, or ::std::wstring object, each NUL
|
// ::std::string, ::wstring, or ::std::wstring object, each NUL
|
||||||
// character in it is replaced with "\\0".
|
// character in it is replaced with "\\0".
|
||||||
@ -17710,7 +17626,7 @@ void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
|
|||||||
// to the definition of the Message class, required by the ARM
|
// to the definition of the Message class, required by the ARM
|
||||||
// compiler.
|
// compiler.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
String StreamableToString(const T& streamable) {
|
std::string StreamableToString(const T& streamable) {
|
||||||
return (Message() << streamable).GetString();
|
return (Message() << streamable).GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18035,9 +17951,9 @@ class TestProperty {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// The key supplied by the user.
|
// The key supplied by the user.
|
||||||
internal::String key_;
|
std::string key_;
|
||||||
// The value supplied by the user.
|
// The value supplied by the user.
|
||||||
internal::String value_;
|
std::string value_;
|
||||||
};
|
};
|
||||||
|
|
||||||
// The result of a single Test. This includes a list of
|
// The result of a single Test. This includes a list of
|
||||||
@ -18409,7 +18325,7 @@ class GTEST_API_ TestCase {
|
|||||||
void UnshuffleTests();
|
void UnshuffleTests();
|
||||||
|
|
||||||
// Name of the test case.
|
// Name of the test case.
|
||||||
internal::String name_;
|
std::string name_;
|
||||||
// Name of the parameter type, or NULL if this is not a typed or a
|
// Name of the parameter type, or NULL if this is not a typed or a
|
||||||
// type-parameterized test.
|
// type-parameterized test.
|
||||||
const internal::scoped_ptr<const ::std::string> type_param_;
|
const internal::scoped_ptr<const ::std::string> type_param_;
|
||||||
@ -18736,8 +18652,8 @@ class GTEST_API_ UnitTest {
|
|||||||
void AddTestPartResult(TestPartResult::Type result_type,
|
void AddTestPartResult(TestPartResult::Type result_type,
|
||||||
const char* file_name,
|
const char* file_name,
|
||||||
int line_number,
|
int line_number,
|
||||||
const internal::String& message,
|
const std::string& message,
|
||||||
const internal::String& os_stack_trace)
|
const std::string& os_stack_trace)
|
||||||
GTEST_LOCK_EXCLUDED_(mutex_);
|
GTEST_LOCK_EXCLUDED_(mutex_);
|
||||||
|
|
||||||
// Adds a TestProperty to the current TestResult object. If the result already
|
// Adds a TestProperty to the current TestResult object. If the result already
|
||||||
@ -18761,7 +18677,7 @@ class GTEST_API_ UnitTest {
|
|||||||
friend internal::UnitTestImpl* internal::GetUnitTestImpl();
|
friend internal::UnitTestImpl* internal::GetUnitTestImpl();
|
||||||
friend void internal::ReportFailureInUnknownLocation(
|
friend void internal::ReportFailureInUnknownLocation(
|
||||||
TestPartResult::Type result_type,
|
TestPartResult::Type result_type,
|
||||||
const internal::String& message);
|
const std::string& message);
|
||||||
|
|
||||||
// Creates an empty UnitTest.
|
// Creates an empty UnitTest.
|
||||||
UnitTest();
|
UnitTest();
|
||||||
@ -18923,8 +18839,8 @@ GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
|
|||||||
//
|
//
|
||||||
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
|
||||||
template <typename T1, typename T2>
|
template <typename T1, typename T2>
|
||||||
String FormatForComparisonFailureMessage(const T1& value,
|
std::string FormatForComparisonFailureMessage(
|
||||||
const T2& /* other_operand */) {
|
const T1& value, const T2& /* other_operand */) {
|
||||||
return FormatForComparison<T1, T2>::Format(value);
|
return FormatForComparison<T1, T2>::Format(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -19243,7 +19159,7 @@ class GTEST_API_ AssertHelper {
|
|||||||
TestPartResult::Type const type;
|
TestPartResult::Type const type;
|
||||||
const char* const file;
|
const char* const file;
|
||||||
int const line;
|
int const line;
|
||||||
String const message;
|
std::string const message;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
|
GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
|
||||||
@ -19878,7 +19794,7 @@ AssertionResult AssertPred5Helper(const char* pred_text,
|
|||||||
# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
|
# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// C String Comparisons. All tests treat NULL and any non-NULL string
|
// C-string Comparisons. All tests treat NULL and any non-NULL string
|
||||||
// as different. Two NULLs are equal.
|
// as different. Two NULLs are equal.
|
||||||
//
|
//
|
||||||
// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
|
// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user