diff options
author | kosak <kosak@google.com> | 2015-04-28 23:06:58 (GMT) |
---|---|---|
committer | kosak <kosak@google.com> | 2015-04-28 23:06:58 (GMT) |
commit | 9b1a944ec48b7f84ad2f4466ed3babd232a20db5 (patch) | |
tree | 4d5feac1fc51196dfa7ca4e9bb72ec1ee5cbd40e | |
parent | 6305ff5a922ddf3b428f08ad3b53d07d2c08d89a (diff) | |
download | googletest-9b1a944ec48b7f84ad2f4466ed3babd232a20db5.zip googletest-9b1a944ec48b7f84ad2f4466ed3babd232a20db5.tar.gz googletest-9b1a944ec48b7f84ad2f4466ed3babd232a20db5.tar.bz2 |
Fix EXPECT_THAT() to support literal strings as a second argument.
-rw-r--r-- | include/gmock/gmock-matchers.h | 7 | ||||
-rw-r--r-- | test/gmock-matchers_test.cc | 15 |
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. |