Fix tests with VS2015 and VS2017
This commit is contained in:
		
							parent
							
								
									77380cddf7
								
							
						
					
					
						commit
						2641b021fc
					
				
							
								
								
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -9,4 +9,16 @@ bazel-googletest | ||||
| bazel-out | ||||
| bazel-testlogs | ||||
| # 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) { | ||||
|   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<1, 2>(Lt()))); | ||||
| @ -128,13 +128,13 @@ TEST(ArgsTest, AcceptsTwoTemplateArgs) { | ||||
| } | ||||
| 
 | ||||
| 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, Not(Args<1, 1>(Ne()))); | ||||
| } | ||||
| 
 | ||||
| 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, Not(Args<2, 1>(Lt()))); | ||||
| } | ||||
| @ -159,7 +159,7 @@ TEST(ArgsTest, AcceptsMoreTemplateArgsThanArityOfOriginalTuple) { | ||||
| } | ||||
| 
 | ||||
| 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<0, 1, 3>(Args<0, 2>(Lt())))); | ||||
| } | ||||
|  | ||||
| @ -58,6 +58,11 @@ | ||||
| # include <forward_list>  // NOLINT
 | ||||
| #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 internal { | ||||
|  | ||||
| @ -87,10 +87,6 @@ macro(config_compiler_and_linker) | ||||
|       # http://stackoverflow.com/questions/3232669 explains the issue. | ||||
|       set(cxx_base_flags "${cxx_base_flags} -wd4702") | ||||
|     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} -DSTRICT -DWIN32_LEAN_AND_MEAN") | ||||
| @ -187,6 +183,10 @@ endfunction() | ||||
| # is built from the given source files with the given compiler flags. | ||||
| function(cxx_executable_with_flags name cxx_flags libs) | ||||
|   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) | ||||
|     set_target_properties(${name} | ||||
|       PROPERTIES | ||||
|  | ||||
| @ -51,10 +51,15 @@ | ||||
| #include "gtest/gtest.h" | ||||
| 
 | ||||
| // 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
 | ||||
| #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
 | ||||
| #endif  // GTEST_HAS_HASH_SET_
 | ||||
| 
 | ||||
| @ -239,21 +244,47 @@ using ::testing::internal::UniversalTersePrintTupleFieldsToStrings; | ||||
| #endif | ||||
| using ::testing::internal::string; | ||||
| 
 | ||||
| #if GTEST_HAS_HASH_MAP_ | ||||
| // 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 ::.
 | ||||
| #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.
 | ||||
| using ::std::hash_map; | ||||
| using ::std::hash_set; | ||||
| using ::std::hash_multimap; | ||||
| using ::std::hash_multiset; | ||||
| #elif _MSC_VER | ||||
| using ::stdext::hash_map; | ||||
| using ::stdext::hash_set; | ||||
| 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; | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| // 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
 | ||||
|                     testing::internal::Int64, float, double, const char*, void*, | ||||
|                     std::string> | ||||
|       t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, ImplicitCast_<void*>(NULL), | ||||
|           "10"); | ||||
|       t10(false, 'a', static_cast<short>(3), 4, 5, 1.5F, -2.5, str,  | ||||
|           ImplicitCast_<void*>(NULL), "10"); | ||||
|   EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) + | ||||
|             " pointing to \"8\", NULL, \"10\")", | ||||
|             Print(t10)); | ||||
| @ -1121,8 +1152,8 @@ TEST(PrintStdTupleTest, VariousSizes) { | ||||
|   ::std::tuple<bool, char, short, testing::internal::Int32,  // NOLINT
 | ||||
|                testing::internal::Int64, float, double, const char*, void*, | ||||
|                std::string> | ||||
|       t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, ImplicitCast_<void*>(NULL), | ||||
|           "10"); | ||||
|       t10(false, 'a', static_cast<short>(3), 4, 5, 1.5F, -2.5, str, | ||||
|           ImplicitCast_<void*>(NULL), "10"); | ||||
|   EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) + | ||||
|             " pointing to \"8\", NULL, \"10\")", | ||||
|             Print(t10)); | ||||
|  | ||||
| @ -138,7 +138,7 @@ TEST_F(CxxExceptionInConstructorTest, ThrowsExceptionInConstructor) { | ||||
| } | ||||
| 
 | ||||
| // 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 { | ||||
|  public: | ||||
|   static void TearDownTestCase() { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user