summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkosak@google.com <kosak@google.com@8415998a-534a-0410-bf83-d39667b30386>2015-04-28 23:06:58 +0000
committerkosak@google.com <kosak@google.com@8415998a-534a-0410-bf83-d39667b30386>2015-04-28 23:06:58 +0000
commit7fd56c69b120a4c0b273fea74748d0da9a19ceef (patch)
tree4d5feac1fc51196dfa7ca4e9bb72ec1ee5cbd40e
parent8c791542b10da35a1b439e999786c4b006943ce5 (diff)
downloadgooglemock-7fd56c69b120a4c0b273fea74748d0da9a19ceef.tar.gz
Fix EXPECT_THAT() to support literal strings as a second argument.
git-svn-id: http://googlemock.googlecode.com/svn/trunk@519 8415998a-534a-0410-bf83-d39667b30386
-rw-r--r--include/gmock/gmock-matchers.h7
-rw-r--r--test/gmock-matchers_test.cc15
2 files changed, 19 insertions, 3 deletions
diff --git a/include/gmock/gmock-matchers.h b/include/gmock/gmock-matchers.h
index 822337b..58fe3b6 100644
--- a/include/gmock/gmock-matchers.h
+++ b/include/gmock/gmock-matchers.h
@@ -1833,7 +1833,7 @@ class MatcherAsPredicate {
template <typename M>
class PredicateFormatterFromMatcher {
public:
- explicit PredicateFormatterFromMatcher(const M& m) : matcher_(m) {}
+ explicit PredicateFormatterFromMatcher(M m) : matcher_(internal::move(m)) {}
// This template () operator allows a PredicateFormatterFromMatcher
// object to act as a predicate-formatter suitable for using with
@@ -1873,10 +1873,11 @@ class PredicateFormatterFromMatcher {
// A helper function for converting a matcher to a predicate-formatter
// without the user needing to explicitly write the type. This is
// used for implementing ASSERT_THAT() and EXPECT_THAT().
+// Implementation detail: 'matcher' is received by-value to force decaying.
template <typename M>
inline PredicateFormatterFromMatcher<M>
-MakePredicateFormatterFromMatcher(const M& matcher) {
- return PredicateFormatterFromMatcher<M>(matcher);
+MakePredicateFormatterFromMatcher(M matcher) {
+ return PredicateFormatterFromMatcher<M>(internal::move(matcher));
}
// Implements the polymorphic floating point equality matcher, which matches
diff --git a/test/gmock-matchers_test.cc b/test/gmock-matchers_test.cc
index 494c85f..ceb2002 100644
--- a/test/gmock-matchers_test.cc
+++ b/test/gmock-matchers_test.cc
@@ -762,6 +762,21 @@ TEST(SafeMatcherCastTest, ValueIsNotCopied) {
EXPECT_TRUE(m.Matches(n));
}
+TEST(ExpectThat, TakesLiterals) {
+ EXPECT_THAT(1, 1);
+ EXPECT_THAT(1.0, 1.0);
+ EXPECT_THAT(string(), "");
+}
+
+TEST(ExpectThat, TakesFunctions) {
+ struct Helper {
+ static void Func() {}
+ };
+ void (*func)() = Helper::Func;
+ EXPECT_THAT(func, Helper::Func);
+ EXPECT_THAT(func, &Helper::Func);
+}
+
// Tests that A<T>() matches any value of type T.
TEST(ATest, MatchesAnyValue) {
// Tests a matcher for a value type.