tests: be more elaborate about what was expected
[awesomized/libmemcached] / test / lib / ReturnMatcher.cpp
index 863945e827961549cfad4b68eca83968c269262f..7a073f29120186a5147af10bfa6fdace47087912 100644 (file)
@@ -1,13 +1,13 @@
 #include "ReturnMatcher.hpp"
 
-ReturnMatcher &ReturnMatcher::operator=(ReturnMatcher &&rm) {
-  memc = exchange(rm.memc, nullptr);
-  expected = rm.expected;
-  return *this;
-}
-
 bool ReturnMatcher::match(const memcached_return_t &arg) const {
-  return arg == expected;
+  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,11 +18,13 @@ ReturnMatcher ReturnMatcher::operator()(memcached_return_t expected_) {
   return ReturnMatcher{memc, expected_};
 }
 
-string ReturnMatcher::describe() const {
-  return "is " + to_string(expected)
-         + "\n  actual: " + memcached_last_error_message(memc);
+ReturnMatcher &ReturnMatcher::operator=(memcached_st *memc_) {
+  memc = memc_;
+  return *this;
 }
 
-ReturnMatcher::ReturnMatcher(ReturnMatcher &&rm) {
-  *this = move(rm);
+string ReturnMatcher::describe() const {
+  return "// but '" + to_string(expected) + "' was expected\n"
+         + "last error: " + memcached_last_error_message(memc);
 }
+