Fix tests with VS2015 and VS2017
This commit is contained in:
parent
77380cddf7
commit
2641b021fc
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -10,3 +10,15 @@ bazel-out
|
||||||
bazel-testlogs
|
bazel-testlogs
|
||||||
# python
|
# python
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
|
# Visual Studio files
|
||||||
|
*.sdf
|
||||||
|
*.opensdf
|
||||||
|
*.VC.opendb
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
_ReSharper.Caches/
|
||||||
|
Win32-Debug/
|
||||||
|
Win32-Release/
|
||||||
|
x64-Debug/
|
||||||
|
x64-Release/
|
||||||
|
|
|
@ -120,7 +120,7 @@ TEST(ArgsTest, AcceptsOneTemplateArg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(ArgsTest, AcceptsTwoTemplateArgs) {
|
TEST(ArgsTest, AcceptsTwoTemplateArgs) {
|
||||||
const tuple<short, int, long> t(4, 5, 6L); // NOLINT
|
const tuple<short, int, long> t(static_cast<short>(4), 5, 6L); // NOLINT
|
||||||
|
|
||||||
EXPECT_THAT(t, (Args<0, 1>(Lt())));
|
EXPECT_THAT(t, (Args<0, 1>(Lt())));
|
||||||
EXPECT_THAT(t, (Args<1, 2>(Lt())));
|
EXPECT_THAT(t, (Args<1, 2>(Lt())));
|
||||||
|
@ -128,13 +128,13 @@ TEST(ArgsTest, AcceptsTwoTemplateArgs) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(ArgsTest, AcceptsRepeatedTemplateArgs) {
|
TEST(ArgsTest, AcceptsRepeatedTemplateArgs) {
|
||||||
const tuple<short, int, long> t(4, 5, 6L); // NOLINT
|
const tuple<short, int, long> t(static_cast<short>(4), 5, 6L); // NOLINT
|
||||||
EXPECT_THAT(t, (Args<0, 0>(Eq())));
|
EXPECT_THAT(t, (Args<0, 0>(Eq())));
|
||||||
EXPECT_THAT(t, Not(Args<1, 1>(Ne())));
|
EXPECT_THAT(t, Not(Args<1, 1>(Ne())));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(ArgsTest, AcceptsDecreasingTemplateArgs) {
|
TEST(ArgsTest, AcceptsDecreasingTemplateArgs) {
|
||||||
const tuple<short, int, long> t(4, 5, 6L); // NOLINT
|
const tuple<short, int, long> t(static_cast<short>(4), 5, 6L); // NOLINT
|
||||||
EXPECT_THAT(t, (Args<2, 0>(Gt())));
|
EXPECT_THAT(t, (Args<2, 0>(Gt())));
|
||||||
EXPECT_THAT(t, Not(Args<2, 1>(Lt())));
|
EXPECT_THAT(t, Not(Args<2, 1>(Lt())));
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ TEST(ArgsTest, AcceptsMoreTemplateArgsThanArityOfOriginalTuple) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(ArgsTest, CanBeNested) {
|
TEST(ArgsTest, CanBeNested) {
|
||||||
const tuple<short, int, long, int> t(4, 5, 6L, 6); // NOLINT
|
const tuple<short, int, long, int> t(static_cast<short>(4), 5, 6L, 6); // NOLINT
|
||||||
EXPECT_THAT(t, (Args<1, 2, 3>(Args<1, 2>(Eq()))));
|
EXPECT_THAT(t, (Args<1, 2, 3>(Args<1, 2>(Eq()))));
|
||||||
EXPECT_THAT(t, (Args<0, 1, 3>(Args<0, 2>(Lt()))));
|
EXPECT_THAT(t, (Args<0, 1, 3>(Args<0, 2>(Lt()))));
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,11 @@
|
||||||
# include <forward_list> // NOLINT
|
# include <forward_list> // NOLINT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Disable MSVC2015 warning for std::pair: "decorated name length exceeded, name was truncated".
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER == 1900)
|
||||||
|
# pragma warning(disable:4503)
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace testing {
|
namespace testing {
|
||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
|
@ -87,10 +87,6 @@ macro(config_compiler_and_linker)
|
||||||
# http://stackoverflow.com/questions/3232669 explains the issue.
|
# http://stackoverflow.com/questions/3232669 explains the issue.
|
||||||
set(cxx_base_flags "${cxx_base_flags} -wd4702")
|
set(cxx_base_flags "${cxx_base_flags} -wd4702")
|
||||||
endif()
|
endif()
|
||||||
if (NOT (MSVC_VERSION GREATER 1900)) # 1900 is Visual Studio 2015
|
|
||||||
# BigObj required for tests.
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -bigobj")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
|
set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
|
||||||
set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
|
set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
|
||||||
|
@ -187,6 +183,10 @@ endfunction()
|
||||||
# is built from the given source files with the given compiler flags.
|
# is built from the given source files with the given compiler flags.
|
||||||
function(cxx_executable_with_flags name cxx_flags libs)
|
function(cxx_executable_with_flags name cxx_flags libs)
|
||||||
add_executable(${name} ${ARGN})
|
add_executable(${name} ${ARGN})
|
||||||
|
if (MSVC AND (NOT (MSVC_VERSION LESS 1700))) # 1700 is Visual Studio 2012.
|
||||||
|
# BigObj required for tests.
|
||||||
|
set(cxx_flags "${cxx_flags} -bigobj")
|
||||||
|
endif()
|
||||||
if (cxx_flags)
|
if (cxx_flags)
|
||||||
set_target_properties(${name}
|
set_target_properties(${name}
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
|
|
|
@ -51,10 +51,15 @@
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
// hash_map and hash_set are available under Visual C++, or on Linux.
|
// hash_map and hash_set are available under Visual C++, or on Linux.
|
||||||
#if GTEST_HAS_HASH_MAP_
|
#if GTEST_HAS_UNORDERED_MAP_
|
||||||
|
# include <unordered_map> // NOLINT
|
||||||
|
#elif GTEST_HAS_HASH_MAP_
|
||||||
# include <hash_map> // NOLINT
|
# include <hash_map> // NOLINT
|
||||||
#endif // GTEST_HAS_HASH_MAP_
|
#endif // GTEST_HAS_HASH_MAP_
|
||||||
#if GTEST_HAS_HASH_SET_
|
|
||||||
|
#if GTEST_HAS_UNORDERED_SET_
|
||||||
|
# include <unordered_set> // NOLINT
|
||||||
|
#elif GTEST_HAS_HASH_SET_
|
||||||
# include <hash_set> // NOLINT
|
# include <hash_set> // NOLINT
|
||||||
#endif // GTEST_HAS_HASH_SET_
|
#endif // GTEST_HAS_HASH_SET_
|
||||||
|
|
||||||
|
@ -239,21 +244,47 @@ using ::testing::internal::UniversalTersePrintTupleFieldsToStrings;
|
||||||
#endif
|
#endif
|
||||||
using ::testing::internal::string;
|
using ::testing::internal::string;
|
||||||
|
|
||||||
#if GTEST_HAS_HASH_MAP_
|
|
||||||
// The hash_* classes are not part of the C++ standard. STLport
|
// The hash_* classes are not part of the C++ standard. STLport
|
||||||
// defines them in namespace std. MSVC defines them in ::stdext. GCC
|
// defines them in namespace std. MSVC defines them in ::stdext. GCC
|
||||||
// defines them in ::.
|
// defines them in ::.
|
||||||
|
#if GTEST_HAS_UNORDERED_MAP_
|
||||||
|
|
||||||
|
#define GTEST_HAS_HASH_MAP_ 1
|
||||||
|
template<class Key, class T>
|
||||||
|
using hash_map = ::std::unordered_map<Key, T>;
|
||||||
|
template<class Key, class T>
|
||||||
|
using hash_multimap = ::std::unordered_multimap<Key, T>;
|
||||||
|
|
||||||
|
#elif GTEST_HAS_HASH_MAP_
|
||||||
|
|
||||||
#ifdef _STLP_HASH_MAP // We got <hash_map> from STLport.
|
#ifdef _STLP_HASH_MAP // We got <hash_map> from STLport.
|
||||||
using ::std::hash_map;
|
using ::std::hash_map;
|
||||||
using ::std::hash_set;
|
|
||||||
using ::std::hash_multimap;
|
using ::std::hash_multimap;
|
||||||
using ::std::hash_multiset;
|
|
||||||
#elif _MSC_VER
|
#elif _MSC_VER
|
||||||
using ::stdext::hash_map;
|
using ::stdext::hash_map;
|
||||||
using ::stdext::hash_set;
|
|
||||||
using ::stdext::hash_multimap;
|
using ::stdext::hash_multimap;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if GTEST_HAS_UNORDERED_SET_
|
||||||
|
|
||||||
|
#define GTEST_HAS_HASH_SET_ 1
|
||||||
|
template<class Key>
|
||||||
|
using hash_set = ::std::unordered_set<Key>;
|
||||||
|
template<class Key>
|
||||||
|
using hash_multiset = ::std::unordered_multiset<Key>;
|
||||||
|
|
||||||
|
#elif GTEST_HAS_HASH_SET_
|
||||||
|
|
||||||
|
#ifdef _STLP_HASH_MAP // We got <hash_map> from STLport.
|
||||||
|
using ::std::hash_set;
|
||||||
|
using ::std::hash_multiset;
|
||||||
|
#elif _MSC_VER
|
||||||
|
using ::stdext::hash_set;
|
||||||
using ::stdext::hash_multiset;
|
using ::stdext::hash_multiset;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Prints a value to a string using the universal value printer. This
|
// Prints a value to a string using the universal value printer. This
|
||||||
|
@ -1061,8 +1092,8 @@ TEST(PrintTr1TupleTest, VariousSizes) {
|
||||||
::std::tr1::tuple<bool, char, short, testing::internal::Int32, // NOLINT
|
::std::tr1::tuple<bool, char, short, testing::internal::Int32, // NOLINT
|
||||||
testing::internal::Int64, float, double, const char*, void*,
|
testing::internal::Int64, float, double, const char*, void*,
|
||||||
std::string>
|
std::string>
|
||||||
t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, ImplicitCast_<void*>(NULL),
|
t10(false, 'a', static_cast<short>(3), 4, 5, 1.5F, -2.5, str,
|
||||||
"10");
|
ImplicitCast_<void*>(NULL), "10");
|
||||||
EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) +
|
EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) +
|
||||||
" pointing to \"8\", NULL, \"10\")",
|
" pointing to \"8\", NULL, \"10\")",
|
||||||
Print(t10));
|
Print(t10));
|
||||||
|
@ -1121,8 +1152,8 @@ TEST(PrintStdTupleTest, VariousSizes) {
|
||||||
::std::tuple<bool, char, short, testing::internal::Int32, // NOLINT
|
::std::tuple<bool, char, short, testing::internal::Int32, // NOLINT
|
||||||
testing::internal::Int64, float, double, const char*, void*,
|
testing::internal::Int64, float, double, const char*, void*,
|
||||||
std::string>
|
std::string>
|
||||||
t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, ImplicitCast_<void*>(NULL),
|
t10(false, 'a', static_cast<short>(3), 4, 5, 1.5F, -2.5, str,
|
||||||
"10");
|
ImplicitCast_<void*>(NULL), "10");
|
||||||
EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) +
|
EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) +
|
||||||
" pointing to \"8\", NULL, \"10\")",
|
" pointing to \"8\", NULL, \"10\")",
|
||||||
Print(t10));
|
Print(t10));
|
||||||
|
|
|
@ -138,7 +138,7 @@ TEST_F(CxxExceptionInConstructorTest, ThrowsExceptionInConstructor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exceptions in destructors are not supported in C++11.
|
// Exceptions in destructors are not supported in C++11.
|
||||||
#if !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L && _MSC_VER < 1900
|
#if !GTEST_LANG_CXX11
|
||||||
class CxxExceptionInDestructorTest : public Test {
|
class CxxExceptionInDestructorTest : public Test {
|
||||||
public:
|
public:
|
||||||
static void TearDownTestCase() {
|
static void TearDownTestCase() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user