diff options
author | Abseil Team <absl-team@google.com> | 2020-06-10 18:07:42 (GMT) |
---|---|---|
committer | vslashg <gfalcon@google.com> | 2020-06-10 21:37:39 (GMT) |
commit | 13a433a94dd9c7e55907d7a9b75f44ff82f309eb (patch) | |
tree | c551265468f05e0e15dff12fd3dfe1c76db42de9 /googlemock/include/gmock | |
parent | 9f287b46d1b103010748899ddd47250176565179 (diff) | |
download | googletest-13a433a94dd9c7e55907d7a9b75f44ff82f309eb.zip googletest-13a433a94dd9c7e55907d7a9b75f44ff82f309eb.tar.gz googletest-13a433a94dd9c7e55907d7a9b75f44ff82f309eb.tar.bz2 |
Googletest export
Change string matchers, like HasSubstr, to accept `string_view` input if available.
PiperOrigin-RevId: 315726484
Diffstat (limited to 'googlemock/include/gmock')
-rw-r--r-- | googlemock/include/gmock/gmock-matchers.h | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h index 08fd6d1..0bc9b36 100644 --- a/googlemock/include/gmock/gmock-matchers.h +++ b/googlemock/include/gmock/gmock-matchers.h @@ -903,9 +903,10 @@ bool CaseInsensitiveStringEquals(const StringType& s1, template <typename StringType> class StrEqualityMatcher { public: - StrEqualityMatcher(const StringType& str, bool expect_eq, - bool case_sensitive) - : string_(str), expect_eq_(expect_eq), case_sensitive_(case_sensitive) {} + StrEqualityMatcher(StringType str, bool expect_eq, bool case_sensitive) + : string_(std::move(str)), + expect_eq_(expect_eq), + case_sensitive_(case_sensitive) {} #if GTEST_INTERNAL_HAS_STRING_VIEW bool MatchAndExplain(const internal::StringView& s, @@ -3990,52 +3991,60 @@ internal::ResultOfMatcher<Callable, InnerMatcher> ResultOf( // String matchers. // Matches a string equal to str. -inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq( - const std::string& str) { +template <typename T = std::string> +PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrEq( + const internal::StringLike<T>& str) { return MakePolymorphicMatcher( - internal::StrEqualityMatcher<std::string>(str, true, true)); + internal::StrEqualityMatcher<std::string>(std::string(str), true, true)); } // Matches a string not equal to str. -inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe( - const std::string& str) { +template <typename T = std::string> +PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrNe( + const internal::StringLike<T>& str) { return MakePolymorphicMatcher( - internal::StrEqualityMatcher<std::string>(str, false, true)); + internal::StrEqualityMatcher<std::string>(std::string(str), false, true)); } // Matches a string equal to str, ignoring case. -inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq( - const std::string& str) { +template <typename T = std::string> +PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseEq( + const internal::StringLike<T>& str) { return MakePolymorphicMatcher( - internal::StrEqualityMatcher<std::string>(str, true, false)); + internal::StrEqualityMatcher<std::string>(std::string(str), true, false)); } // Matches a string not equal to str, ignoring case. -inline PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe( - const std::string& str) { - return MakePolymorphicMatcher( - internal::StrEqualityMatcher<std::string>(str, false, false)); +template <typename T = std::string> +PolymorphicMatcher<internal::StrEqualityMatcher<std::string> > StrCaseNe( + const internal::StringLike<T>& str) { + return MakePolymorphicMatcher(internal::StrEqualityMatcher<std::string>( + std::string(str), false, false)); } // Creates a matcher that matches any string, std::string, or C string // that contains the given substring. -inline PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr( - const std::string& substring) { +template <typename T = std::string> +PolymorphicMatcher<internal::HasSubstrMatcher<std::string> > HasSubstr( + const internal::StringLike<T>& substring) { return MakePolymorphicMatcher( - internal::HasSubstrMatcher<std::string>(substring)); + internal::HasSubstrMatcher<std::string>(std::string(substring))); } // Matches a string that starts with 'prefix' (case-sensitive). -inline PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith( - const std::string& prefix) { +template <typename T = std::string> +PolymorphicMatcher<internal::StartsWithMatcher<std::string> > StartsWith( + const internal::StringLike<T>& prefix) { return MakePolymorphicMatcher( - internal::StartsWithMatcher<std::string>(prefix)); + internal::StartsWithMatcher<std::string>(std::string(prefix))); } // Matches a string that ends with 'suffix' (case-sensitive). -inline PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith( - const std::string& suffix) { - return MakePolymorphicMatcher(internal::EndsWithMatcher<std::string>(suffix)); +template <typename T = std::string> +PolymorphicMatcher<internal::EndsWithMatcher<std::string> > EndsWith( + const internal::StringLike<T>& suffix) { + return MakePolymorphicMatcher( + internal::EndsWithMatcher<std::string>(std::string(suffix))); } #if GTEST_HAS_STD_WSTRING |