p9y
[awesomized/libmemcached] / test / lib / common.hpp
index a0fdf3846208dab4607ef7d9907cd3c6f0b5246e..083efe0d66f060eaa2f4dd2baa2e7de7efc6659a 100644 (file)
@@ -16,6 +16,7 @@
 #pragma once
 
 #include <chrono>
+#include <cstring>
 #include <iostream>
 #include <map>
 #include <optional>
@@ -28,6 +29,7 @@
 
 #include "test/conf.h"
 #include "test/lib/catch.hpp"
+#include "test/lib/env.hpp"
 #include "test/lib/random.hpp"
 
 #include "libmemcached/memcached.h"
@@ -38,8 +40,7 @@ using socket_or_port_t = variant<string, int>;
 /**
  * Useful macros for testing
  */
-#define S(s)             (s), strlen(s)
-#define DECLARE_STREQUAL static auto strequal = equal_to<string>();
+#define S(s) (s), strlen(s)
 #define LOOPED_SECTION(tests) \
   for (auto &[name, test] : tests) DYNAMIC_SECTION("test " << name)
 #define REQUIRE_SUCCESS(rc) \
@@ -53,8 +54,6 @@ using socket_or_port_t = variant<string, int>;
     REQUIRE_THAT(call, test.returns(rc)); \
   } while (0)
 
-const char *getenv_else(const char *var, const char *defval);
-
 inline memcached_return_t fetch_all_results(memcached_st *memc, unsigned int &keys_returned,
                                             memcached_return_t &rc) {
   keys_returned = 0;
@@ -92,6 +91,17 @@ public:
   bool put(const char *buf, size_t len) const {
     return static_cast<ssize_t>(len) == write(fd, buf, len);
   }
+  string get() const {
+    string all;
+    char buf[200];
+    ssize_t len;
+
+    lseek(fd, 0, SEEK_SET);
+    while (0 < (len = read(fd, buf, sizeof(buf)))) {
+      all.append(buf, len);
+    }
+    return all;
+  }
 
 private:
   char fn[80];
@@ -102,12 +112,20 @@ class MemcachedPtr {
 public:
   memcached_st *memc;
 
-  explicit MemcachedPtr(memcached_st *memc_) { memc = memc_; }
+  explicit MemcachedPtr(memcached_st *memc_) {
+    memc = memc_;
+  }
   MemcachedPtr()
   : MemcachedPtr(memcached_create(nullptr)) {}
-  ~MemcachedPtr() { memcached_free(memc); }
-  memcached_st *operator*() const { return memc; }
-  auto operator->() const { return memc; }
+  ~MemcachedPtr() {
+    memcached_free(memc);
+  }
+  memcached_st *operator*() const {
+    return memc;
+  }
+  auto operator->() const {
+    return memc;
+  }
 };
 
 template<class T>
@@ -127,6 +145,6 @@ public:
     if (ptr)
       free(ptr);
   }
-  auto operator*() { return ptr; }
-  auto operator->() { return ptr; }
+  auto operator*() const { return ptr; }
+  auto operator->() const { return ptr; }
 };