| Index: testing/gmock-support.h
|
| diff --git a/testing/gmock-support.h b/testing/gmock-support.h
|
| index 44348b60e0e98bfe56c639f71f70fb1f5e114472..ad39e9269bb24404a7a9c52fd39f2479c2567f64 100644
|
| --- a/testing/gmock-support.h
|
| +++ b/testing/gmock-support.h
|
| @@ -5,6 +5,8 @@
|
| #ifndef V8_TESTING_GMOCK_SUPPORT_H_
|
| #define V8_TESTING_GMOCK_SUPPORT_H_
|
|
|
| +#include <cstring>
|
| +
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| namespace testing {
|
| @@ -31,6 +33,25 @@ class Capture {
|
|
|
| namespace internal {
|
|
|
| +struct AnyBitEq {
|
| + template <typename A, typename B>
|
| + bool operator()(A const& a, B const& b) const {
|
| + if (sizeof(A) != sizeof(B)) return false;
|
| + return std::memcmp(&a, &b, sizeof(A)) == 0;
|
| + }
|
| +};
|
| +
|
| +
|
| +template <typename Rhs>
|
| +class BitEqMatcher : public ComparisonBase<BitEqMatcher<Rhs>, Rhs, AnyBitEq> {
|
| + public:
|
| + explicit BitEqMatcher(Rhs const& rhs)
|
| + : ComparisonBase<BitEqMatcher<Rhs>, Rhs, AnyBitEq>(rhs) {}
|
| + static const char* Desc() { return "is bitwise equal to"; }
|
| + static const char* NegatedDesc() { return "isn't bitwise equal to"; }
|
| +};
|
| +
|
| +
|
| template <typename T>
|
| class CaptureEqMatcher : public MatcherInterface<T> {
|
| public:
|
| @@ -60,10 +81,18 @@ class CaptureEqMatcher : public MatcherInterface<T> {
|
| } // namespace internal
|
|
|
|
|
| +// Creates a polymorphic matcher that matches anything whose bit representation
|
| +// is equal to that of x.
|
| +template <typename T>
|
| +inline internal::BitEqMatcher<T> BitEq(T const& x) {
|
| + return internal::BitEqMatcher<T>(x);
|
| +}
|
| +
|
| +
|
| // CaptureEq(capture) captures the value passed in during matching as long as it
|
| // is unset, and once set, compares the value for equality with the argument.
|
| template <typename T>
|
| -Matcher<T> CaptureEq(Capture<T>* capture) {
|
| +inline Matcher<T> CaptureEq(Capture<T>* capture) {
|
| return MakeMatcher(new internal::CaptureEqMatcher<T>(capture));
|
| }
|
|
|
|
|