libmemcached: add MEMCACHED_BEHAVIOR_META_PROTOCOL
[awesomized/libmemcached] / test / lib / ReturnMatcher.cpp
index cbc9a95bc4607fc0f9e9ee4618c5ebef7bbc94b3..ab3b33f7fb4c39c03af9411dde448d826a95cffc 100644 (file)
@@ -1,7 +1,15 @@
 #include "ReturnMatcher.hpp"
+#include "libmemcached/error.hpp"
 
 bool ReturnMatcher::match(const memcached_return_t &arg) const {
-  return arg == expected;
+  actual->v = arg;
+  if (arg != expected) {
+    if (expected == MEMCACHED_SUCCESS && arg == MEMCACHED_BUFFERED && memc) {
+      return memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS);
+    }
+    return false;
+  }
+  return true;
 }
 
 ReturnMatcher ReturnMatcher::success() {
@@ -18,7 +26,11 @@ ReturnMatcher &ReturnMatcher::operator=(memcached_st *memc_) {
 }
 
 string ReturnMatcher::describe() const {
-  return "is " + to_string(expected)
-         + "\n  actual: " + memcached_last_error_message(memc);
+  return "is " + to_string(expected) + "\n"
+      +  "expected:\n"
+      +  "  " + memcached_strerror(memc, expected) + "\n"
+      +  "actual:\n"
+      +  "  " + memcached_strerror(memc, actual->v) + "\n"
+      +  "  " + (memcached_has_current_error(*memc) ? memcached_last_error_message(memc) : "");
 }