From ffc9baeb4cb81a7db250249920a9bd3d5ace760a Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 13 Sep 2018 11:27:56 -0400 Subject: Googletest export Treat default-constructed string_view same as constructed from "". In the context of string comparison (e.g. HasSubstr, StartsWith, EndsWith, etc.), a default-constructed string_view (nullptr) should be semantically same as a empty string "". PiperOrigin-RevId: 212816839 --- googlemock/include/gmock/gmock-matchers.h | 14 +---------- googlemock/test/gmock-matchers_test.cc | 39 +++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h index a7bcfc8..fa26bf9 100644 --- a/googlemock/include/gmock/gmock-matchers.h +++ b/googlemock/include/gmock/gmock-matchers.h @@ -1307,9 +1307,6 @@ class StrEqualityMatcher { #if GTEST_HAS_ABSL bool MatchAndExplain(const absl::string_view& s, MatchResultListener* listener) const { - if (s.data() == NULL) { - return !expect_eq_; - } // This should fail to compile if absl::string_view is used with wide // strings. const StringType& str = string(s); @@ -1380,9 +1377,6 @@ class HasSubstrMatcher { #if GTEST_HAS_ABSL bool MatchAndExplain(const absl::string_view& s, MatchResultListener* listener) const { - if (s.data() == NULL) { - return false; - } // This should fail to compile if absl::string_view is used with wide // strings. const StringType& str = string(s); @@ -1440,9 +1434,6 @@ class StartsWithMatcher { #if GTEST_HAS_ABSL bool MatchAndExplain(const absl::string_view& s, MatchResultListener* listener) const { - if (s.data() == NULL) { - return false; - } // This should fail to compile if absl::string_view is used with wide // strings. const StringType& str = string(s); @@ -1499,9 +1490,6 @@ class EndsWithMatcher { #if GTEST_HAS_ABSL bool MatchAndExplain(const absl::string_view& s, MatchResultListener* listener) const { - if (s.data() == NULL) { - return false; - } // This should fail to compile if absl::string_view is used with wide // strings. const StringType& str = string(s); @@ -1558,7 +1546,7 @@ class MatchesRegexMatcher { #if GTEST_HAS_ABSL bool MatchAndExplain(const absl::string_view& s, MatchResultListener* listener) const { - return s.data() && MatchAndExplain(string(s), listener); + return MatchAndExplain(string(s), listener); } #endif // GTEST_HAS_ABSL diff --git a/googlemock/test/gmock-matchers_test.cc b/googlemock/test/gmock-matchers_test.cc index 4697f0b..79eb552 100644 --- a/googlemock/test/gmock-matchers_test.cc +++ b/googlemock/test/gmock-matchers_test.cc @@ -1335,6 +1335,11 @@ TEST(StrEqTest, MatchesEqualString) { EXPECT_TRUE(m3.Matches(absl::string_view("Hello"))); EXPECT_FALSE(m3.Matches(absl::string_view("hello"))); EXPECT_FALSE(m3.Matches(absl::string_view())); + + Matcher m_empty = StrEq(""); + EXPECT_TRUE(m_empty.Matches(absl::string_view(""))); + EXPECT_TRUE(m_empty.Matches(absl::string_view())); + EXPECT_FALSE(m_empty.Matches(absl::string_view("hello"))); #endif // GTEST_HAS_ABSL } @@ -1459,6 +1464,10 @@ TEST(HasSubstrTest, WorksForStringClasses) { const Matcher m2 = HasSubstr("foo"); EXPECT_TRUE(m2.Matches(std::string("I love food."))); EXPECT_FALSE(m2.Matches(std::string("tofo"))); + + const Matcher m_empty = HasSubstr(""); + EXPECT_TRUE(m_empty.Matches(std::string())); + EXPECT_TRUE(m_empty.Matches(std::string("not empty"))); } // Tests that HasSubstr() works for matching C-string-typed values. @@ -1472,6 +1481,11 @@ TEST(HasSubstrTest, WorksForCStrings) { EXPECT_TRUE(m2.Matches("I love food.")); EXPECT_FALSE(m2.Matches("tofo")); EXPECT_FALSE(m2.Matches(NULL)); + + const Matcher m_empty = HasSubstr(""); + EXPECT_TRUE(m_empty.Matches("not empty")); + EXPECT_TRUE(m_empty.Matches("")); + EXPECT_FALSE(m_empty.Matches(NULL)); } #if GTEST_HAS_ABSL @@ -1489,7 +1503,8 @@ TEST(HasSubstrTest, WorksForStringViewClasses) { const Matcher m3 = HasSubstr(""); EXPECT_TRUE(m3.Matches(absl::string_view("foo"))); - EXPECT_FALSE(m3.Matches(absl::string_view())); + EXPECT_TRUE(m3.Matches(absl::string_view(""))); + EXPECT_TRUE(m3.Matches(absl::string_view())); } #endif // GTEST_HAS_ABSL @@ -1713,6 +1728,13 @@ TEST(StartsWithTest, MatchesStringWithGivenPrefix) { EXPECT_TRUE(m2.Matches("High")); EXPECT_FALSE(m2.Matches("H")); EXPECT_FALSE(m2.Matches(" Hi")); + +#if GTEST_HAS_ABSL + const Matcher m_empty = StartsWith(""); + EXPECT_TRUE(m_empty.Matches(absl::string_view())); + EXPECT_TRUE(m_empty.Matches(absl::string_view(""))); + EXPECT_TRUE(m_empty.Matches(absl::string_view("not empty"))); +#endif // GTEST_HAS_ABSL } TEST(StartsWithTest, CanDescribeSelf) { @@ -1748,9 +1770,8 @@ TEST(EndsWithTest, MatchesStringWithGivenSuffix) { const Matcher m4 = EndsWith(""); EXPECT_TRUE(m4.Matches("Hi")); EXPECT_TRUE(m4.Matches("")); - // Default-constructed absl::string_view should not match anything, in order - // to distinguish it from an empty string. - EXPECT_FALSE(m4.Matches(absl::string_view())); + EXPECT_TRUE(m4.Matches(absl::string_view())); + EXPECT_TRUE(m4.Matches(absl::string_view(""))); #endif // GTEST_HAS_ABSL } @@ -1777,11 +1798,10 @@ TEST(MatchesRegexTest, MatchesStringMatchingGivenRegex) { EXPECT_TRUE(m3.Matches(absl::string_view("az"))); EXPECT_TRUE(m3.Matches(absl::string_view("abcz"))); EXPECT_FALSE(m3.Matches(absl::string_view("1az"))); - // Default-constructed absl::string_view should not match anything, in order - // to distinguish it from an empty string. EXPECT_FALSE(m3.Matches(absl::string_view())); const Matcher m4 = MatchesRegex(""); - EXPECT_FALSE(m4.Matches(absl::string_view())); + EXPECT_TRUE(m4.Matches(absl::string_view(""))); + EXPECT_TRUE(m4.Matches(absl::string_view())); #endif // GTEST_HAS_ABSL } @@ -1816,11 +1836,10 @@ TEST(ContainsRegexTest, MatchesStringContainingGivenRegex) { EXPECT_TRUE(m3.Matches(absl::string_view("azbz"))); EXPECT_TRUE(m3.Matches(absl::string_view("az1"))); EXPECT_FALSE(m3.Matches(absl::string_view("1a"))); - // Default-constructed absl::string_view should not match anything, in order - // to distinguish it from an empty string. EXPECT_FALSE(m3.Matches(absl::string_view())); const Matcher m4 = ContainsRegex(""); - EXPECT_FALSE(m4.Matches(absl::string_view())); + EXPECT_TRUE(m4.Matches(absl::string_view(""))); + EXPECT_TRUE(m4.Matches(absl::string_view())); #endif // GTEST_HAS_ABSL } -- cgit v0.12 From bc9df6ad46f4aab2717024e2d2bce9c3d56450d9 Mon Sep 17 00:00:00 2001 From: misterg Date: Fri, 14 Sep 2018 12:02:05 -0400 Subject: Googletest export Removing checks for C++11 from unit tests PiperOrigin-RevId: 212990514 --- googletest/test/gtest_unittest.cc | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index fa10224..701ba20 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -63,9 +63,7 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { #include #include #include -#if GTEST_LANG_CXX11 #include -#endif // GTEST_LANG_CXX11 #include "gtest/gtest-spi.h" #include "src/gtest-internal-inl.h" @@ -5156,8 +5154,7 @@ TEST(AssertionResultTest, CanStreamOstreamManipulators) { EXPECT_STREQ("Data\n\\0Will be visible", r.message()); } -// The next test uses explicit conversion operators -- a C++11 feature. -#if GTEST_LANG_CXX11 +// The next test uses explicit conversion operators TEST(AssertionResultTest, ConstructibleFromContextuallyConvertibleToBool) { struct ExplicitlyConvertibleToBool { @@ -5170,8 +5167,6 @@ TEST(AssertionResultTest, ConstructibleFromContextuallyConvertibleToBool) { EXPECT_TRUE(v2); } -#endif // GTEST_LANG_CXX11 - struct ConvertibleToAssertionResult { operator AssertionResult() const { return AssertionResult(true); } }; @@ -7555,7 +7550,6 @@ TEST(IsContainerTestTest, WorksForContainer) { sizeof(IsContainerTest >(0))); } -#if GTEST_LANG_CXX11 struct ConstOnlyContainerWithPointerIterator { using const_iterator = int*; const_iterator begin() const; @@ -7577,7 +7571,6 @@ TEST(IsContainerTestTest, ConstOnlyContainer) { EXPECT_EQ(sizeof(IsContainer), sizeof(IsContainerTest(0))); } -#endif // GTEST_LANG_CXX11 // Tests IsHashTable. struct AHashTable { @@ -7590,10 +7583,8 @@ struct NotReallyAHashTable { TEST(IsHashTable, Basic) { EXPECT_TRUE(testing::internal::IsHashTable::value); EXPECT_FALSE(testing::internal::IsHashTable::value); -#if GTEST_LANG_CXX11 EXPECT_FALSE(testing::internal::IsHashTable>::value); EXPECT_TRUE(testing::internal::IsHashTable>::value); -#endif // GTEST_LANG_CXX11 #if GTEST_HAS_HASH_SET_ EXPECT_TRUE(testing::internal::IsHashTable<__gnu_cxx::hash_set>::value); #endif // GTEST_HAS_HASH_SET_ -- cgit v0.12 From fc2caf6485f7065787f081765c0282837323960b Mon Sep 17 00:00:00 2001 From: Gennadiy Civil Date: Fri, 14 Sep 2018 15:34:13 -0400 Subject: Update .travis.yml Remove pre C++11 --- .travis.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4e7413a..4ec239f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,25 +32,14 @@ matrix: - os: linux group: deprecated-2017Q4 compiler: clang - env: BUILD_TYPE=Debug VERBOSE=1 - - os: linux - group: deprecated-2017Q4 - compiler: clang env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 - os: linux compiler: clang env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 NO_EXCEPTION=ON NO_RTTI=ON COMPILER_IS_GNUCXX=ON - os: osx compiler: gcc - env: BUILD_TYPE=Debug VERBOSE=1 - - os: osx - compiler: gcc env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 - os: osx - compiler: clang - env: BUILD_TYPE=Debug VERBOSE=1 - if: type != pull_request - - os: osx env: BUILD_TYPE=Release VERBOSE=1 CXX_FLAGS=-std=c++11 if: type != pull_request -- cgit v0.12