14 #include "../lib/catch.hpp"
16 #include "libmemcached/memcached.h"
19 using socket_or_port_t = variant<string, int>;
22 * Useful macros for testing
24 #define S(s) (s),strlen(s)
25 #define LOOPED_SECTION(tests) \
26 for (auto &[name, test] : tests) DYNAMIC_SECTION("test " << name)
27 #define REQUIRE_SUCCESS(rc) REQUIRE_THAT(rc, test.returns.success())
28 #define REQUIRE_RC(rc, call) REQUIRE_THAT(call, test.returns(rc))
31 const char *getenv_else(const char *var, const char *defval);
32 unsigned random_num(unsigned min, unsigned max);
33 unsigned random_port();
34 string random_socket();
35 string random_socket_or_port_string(const string &what);
36 string random_socket_or_port_flag(const string &binary);
38 inline auto random_socket_or_port_arg() {
39 return make_pair(&random_socket_or_port_flag, &random_socket_or_port_string);
47 MemcachedPtr(memcached_st *memc_) {
48 memset(&memc, 0, sizeof(memc));
49 REQUIRE(memcached_clone(&memc, memc_));
52 : MemcachedPtr(nullptr)
55 memcached_free(&memc);
57 memcached_st *operator * () {