X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=testing%2Flib%2Fcommon.hpp;h=ee177003bac8fbf3b2a5a0cff0b4be838158fb36;hb=b5ed9c3cab58f1a8e519d5551951ab8c25fc3b84;hp=c1ef43ae9f27394b6acceb79b13e7196a0bca221;hpb=d1c9b695e9b3fbfcc94230a242b0290b43f27006;p=awesomized%2Flibmemcached diff --git a/testing/lib/common.hpp b/testing/lib/common.hpp index c1ef43ae..ee177003 100644 --- a/testing/lib/common.hpp +++ b/testing/lib/common.hpp @@ -11,6 +11,7 @@ #include #include +#include "testing/conf.h" #include "testing/lib/catch.hpp" #include "testing/lib/random.hpp" @@ -55,23 +56,49 @@ inline memcached_return_t fetch_all_results(memcached_st *memc, unsigned int &ke return rc; } +#include +#include + +class Tempfile { +public: + explicit Tempfile(const char templ_[] = "memc.test.XXXXXX") { + *copy(S(templ_)+templ_, fn) = '\0'; + fd = mkstemp(fn); + } + ~Tempfile() { + close(fd); + unlink(fn); + } + int getFd() const { + return fd; + } + const char *getFn() const { + return fn; + } + bool put(const char *buf, size_t len) const { + return static_cast(len) == write(fd, buf, len); + } +private: + char fn[80]; + int fd; +}; + class MemcachedPtr { public: - memcached_st memc; + memcached_st *memc; explicit MemcachedPtr(memcached_st *memc_) { - memset(&memc, 0, sizeof(memc)); - REQUIRE(memcached_clone(&memc, memc_)); + memc = memc_; } MemcachedPtr() - : MemcachedPtr(nullptr) + : MemcachedPtr(memcached_create(nullptr)) {} ~MemcachedPtr() { - memcached_free(&memc); + memcached_free(memc); } memcached_st *operator * () { - return &memc; + return memc; } }; @@ -79,6 +106,7 @@ template class Malloced { T *ptr; public: + explicit Malloced(T *ptr_) : ptr{ptr_} {} @@ -89,4 +117,7 @@ public: auto operator *() { return ptr; } + auto operator ->() { + return ptr; + } };