Don't use internal gmock helper classes.
authorbmeurer <bmeurer@chromium.org>
Tue, 27 Jan 2015 06:58:39 +0000 (22:58 -0800)
committerCommit bot <commit-bot@chromium.org>
Tue, 27 Jan 2015 06:58:48 +0000 (06:58 +0000)
BUG=v8:3835
LOG=n

Review URL: https://codereview.chromium.org/881653003

Cr-Commit-Position: refs/heads/master@{#26282}

testing/gmock-support.h

index 012775b..d00468e 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <cmath>
 #include <cstring>
+#include <string>
 
 #include "testing/gmock/include/gmock/gmock.h"
 
@@ -34,25 +35,6 @@ 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:
@@ -83,10 +65,11 @@ class CaptureEqMatcher : public MatcherInterface<T> {
 
 
 // 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);
+// is equal to that of {x}.
+MATCHER_P(BitEq, x, std::string(negation ? "isn't" : "is") +
+                        " bitwise equal to " + PrintToString(x)) {
+  static_assert(sizeof(x) == sizeof(arg), "Size mismatch");
+  return std::memcmp(&arg, &x, sizeof(x)) == 0;
 }