libmemcached: add MEMCACHED_BEHAVIOR_META_PROTOCOL
[awesomized/libmemcached] / test / lib / ReturnMatcher.hpp
index f95eb2f3ecae9c03324cea0c08e8fa5c86cf11c1..a0b84fb74a8095753e3a0a863b8302504588d9ee 100644 (file)
@@ -22,9 +22,20 @@ public:
   explicit ReturnMatcher(memcached_st *memc_,
                          memcached_return_t expected_ = MEMCACHED_SUCCESS)
   : memc{memc_}
-  , expected{expected_} {}
+  , expected{expected_}
+  , actual{new actual_st} {}
 
-  ReturnMatcher(const ReturnMatcher &) = default;
+  ~ReturnMatcher() override {
+    if (actual) {
+      delete actual;
+    }
+    actual = nullptr;
+  }
+  ReturnMatcher(const ReturnMatcher &other) {
+      expected = other.expected;
+      memc = other.memc;
+      actual = new actual_st(other.actual->v);
+  }
 
   bool match(const memcached_return_t &arg) const override;
   ReturnMatcher success();
@@ -37,6 +48,13 @@ protected:
 private:
   memcached_st *memc;
   memcached_return_t expected{MEMCACHED_SUCCESS};
+
+  struct actual_st {
+    memcached_return_t v;
+    explicit actual_st(memcached_return_t _v = MEMCACHED_SUCCESS)
+    : v{_v} {}
+  };
+  actual_st *actual;
 };
 
 class LoneReturnMatcher {