-class ReturnMatcher : public Catch::MatcherBase<memcached_return_t> {
-public:
- explicit ReturnMatcher(const memcached_st *memc_, memcached_return_t expected_ = MEMCACHED_SUCCESS)
- : memc{memc_}
- , expected{expected_}
- {}
-
- ReturnMatcher(const ReturnMatcher &) = default;
- ReturnMatcher &operator = (const ReturnMatcher &) = default;
-
- ReturnMatcher(ReturnMatcher &&rm) {
- *this = move(rm);
- }
- ReturnMatcher &operator = (ReturnMatcher &&rm) {
- memc = exchange(rm.memc, nullptr);
- expected = rm.expected;
- return *this;
- }
-
- bool match(const memcached_return_t &arg) const override {
- return arg == expected;
- }
-
- ReturnMatcher success() {
- return ReturnMatcher{memc};
- }
-
- ReturnMatcher operator () (memcached_return_t expected_) {
- return ReturnMatcher{memc, expected_};
- }
-
-protected:
- string describe() const override {
- return string{"is "}
- + to_string(expected)
- + " (" + memcached_strerror(memc, expected) + ") "
- + "\n\tlast error: "
- + memcached_last_error_message(memc);
- }
-
-private:
- const memcached_st *memc;
- memcached_return_t expected;
-};