Fix additional clang finds.
[m6w6/libmemcached] / tests / mem_functions.cc
index 2c29c0487cd522e30b2ed34180bceb2fdf4a4192..c0dde998b83d3a4cb3766ce04348eb9c2babe91d 100644 (file)
@@ -73,6 +73,7 @@
 #include "tests/debug.h"
 #include "tests/deprecated.h"
 #include "tests/error_conditions.h"
+#include "tests/exist.h"
 #include "tests/ketama.h"
 #include "tests/namespace.h"
 #include "tests/parser.h"
@@ -571,9 +572,11 @@ static test_return_t cas2_test(memcached_st *memc)
     test_compare(MEMCACHED_SUCCESS, rc);
   }
 
-  rc= memcached_mget(memc, keys, key_length, 3);
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_mget(memc, keys, key_length, 3));
 
   results= memcached_result_create(memc, &results_obj);
+  test_true(results);
 
   results= memcached_fetch_result(memc, &results_obj, &rc);
   test_true(results);
@@ -616,9 +619,11 @@ static test_return_t cas_test(memcached_st *memc)
                     (time_t)0, (uint32_t)0);
   test_compare(MEMCACHED_SUCCESS, rc);
 
-  rc= memcached_mget(memc, keys, keylengths, 1);
+  test_compare(MEMCACHED_SUCCESS,
+               memcached_mget(memc, keys, keylengths, 1));
 
   results= memcached_result_create(memc, &results_obj);
+  test_true(results);
 
   results= memcached_fetch_result(memc, &results_obj, &rc);
   test_true(results);
@@ -817,17 +822,15 @@ static test_return_t bad_key_test(memcached_st *memc)
 {
   memcached_return_t rc;
   const char *key= "foo bad";
-  char *string;
-  size_t string_length;
   uint32_t flags;
   memcached_st *memc_clone;
-  unsigned int set= 1;
   size_t max_keylen= 0xffff;
 
-  // Just skip if we are in binary mode.
   uint64_t query_id= memcached_query_id(memc);
-  if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL))
-    return TEST_SKIPPED;
+  
+  // Just skip if we are in binary mode.
+  test_skip(false, memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL));
+
   test_compare(query_id, memcached_query_id(memc)); // We should not increase the query_id for memcached_behavior_get()
 
   memc_clone= memcached_clone(NULL, memc);
@@ -835,37 +838,42 @@ static test_return_t bad_key_test(memcached_st *memc)
 
   query_id= memcached_query_id(memc_clone);
   test_compare(MEMCACHED_SUCCESS,
-               memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set));
+               memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, true));
   test_compare(query_id, memcached_query_id(memc_clone)); // We should not increase the query_id for memcached_behavior_set()
 
   /* All keys are valid in the binary protocol (except for length) */
   if (not memcached_behavior_get(memc_clone, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL))
   {
-    query_id= memcached_query_id(memc_clone);
-    string= memcached_get(memc_clone, key, strlen(key),
-                          &string_length, &flags, &rc);
-    test_compare(MEMCACHED_BAD_KEY_PROVIDED, rc);
-    test_zero(string_length);
-    test_false(string);
+    uint64_t before_query_id= memcached_query_id(memc_clone);
+    {
+      size_t string_length;
+      char *string= memcached_get(memc_clone, key, strlen(key),
+                                  &string_length, &flags, &rc);
+      test_compare(MEMCACHED_BAD_KEY_PROVIDED, rc);
+      test_zero(string_length);
+      test_false(string);
+    }
+    test_compare(before_query_id +1, memcached_query_id(memc_clone));
 
-    set= 0;
     query_id= memcached_query_id(memc_clone);
     test_compare(MEMCACHED_SUCCESS,
-                 memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set));
+                 memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, false));
     test_compare(query_id, memcached_query_id(memc_clone)); // We should not increase the query_id for memcached_behavior_set()
-    string= memcached_get(memc_clone, key, strlen(key),
-                          &string_length, &flags, &rc);
-    test_compare_got(MEMCACHED_NOTFOUND, rc, memcached_strerror(NULL, rc));
-    test_zero(string_length);
-    test_false(string);
+    {
+      size_t string_length;
+      char *string= memcached_get(memc_clone, key, strlen(key),
+                                  &string_length, &flags, &rc);
+      test_compare_got(MEMCACHED_NOTFOUND, rc, memcached_strerror(NULL, rc));
+      test_zero(string_length);
+      test_false(string);
+    }
 
     /* Test multi key for bad keys */
     const char *keys[] = { "GoodKey", "Bad Key", "NotMine" };
     size_t key_lengths[] = { 7, 7, 7 };
-    set= 1;
     query_id= memcached_query_id(memc_clone);
     test_compare(MEMCACHED_SUCCESS, 
-                 memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set));
+                 memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, true));
     test_compare(query_id, memcached_query_id(memc_clone));
 
     query_id= memcached_query_id(memc_clone);
@@ -887,35 +895,32 @@ static test_return_t bad_key_test(memcached_st *memc)
     test_compare(MEMCACHED_SUCCESS, 
                  memcached_callback_set(memc_clone, MEMCACHED_CALLBACK_NAMESPACE, NULL));
 
-    char *longkey= (char *)malloc(max_keylen + 1);
-    if (longkey)
+    std::vector <char> longkey;
+    longkey.insert(longkey.end(), max_keylen +1, 'a');
+    test_compare(longkey.size(), max_keylen +1);
     {
-      memset(longkey, 'a', max_keylen + 1);
-      string= memcached_get(memc_clone, longkey, max_keylen,
-                            &string_length, &flags, &rc);
+      size_t string_length;
+      test_null(memcached_get(memc_clone, &longkey[0], max_keylen, &string_length, &flags, &rc));
       test_compare(MEMCACHED_NOTFOUND, rc);
       test_zero(string_length);
-      test_false(string);
 
-      string= memcached_get(memc_clone, longkey, max_keylen + 1,
-                            &string_length, &flags, &rc);
+      test_null(memcached_get(memc_clone, &longkey[0], max_keylen +1, &string_length, &flags, &rc));
       test_compare(MEMCACHED_BAD_KEY_PROVIDED, rc);
       test_zero(string_length);
-      test_false(string);
-
-      free(longkey);
     }
   }
 
   /* Make sure zero length keys are marked as bad */
-  set= 1;
-  test_compare(MEMCACHED_SUCCESS,
-               memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set));
-  string= memcached_get(memc_clone, key, 0,
-                        &string_length, &flags, &rc);
-  test_compare(MEMCACHED_BAD_KEY_PROVIDED, rc);
-  test_zero(string_length);
-  test_false(string);
+  {
+    test_compare(MEMCACHED_SUCCESS,
+                 memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, true));
+    size_t string_length;
+    char *string= memcached_get(memc_clone, key, 0,
+                                &string_length, &flags, &rc);
+    test_compare(MEMCACHED_BAD_KEY_PROVIDED, rc);
+    test_zero(string_length);
+    test_false(string);
+  }
 
   memcached_free(memc_clone);
 
@@ -990,12 +995,11 @@ static memcached_return_t delete_trigger(memcached_st *,
 static test_return_t delete_through(memcached_st *memc)
 {
   memcached_trigger_delete_key_fn callback;
-  memcached_return_t rc;
 
   callback= (memcached_trigger_delete_key_fn)delete_trigger;
 
-  rc= memcached_callback_set(memc, MEMCACHED_CALLBACK_DELETE_TRIGGER, *(void**)&callback);
-  test_compare(MEMCACHED_SUCCESS, rc);
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_callback_set(memc, MEMCACHED_CALLBACK_DELETE_TRIGGER, *(void**)&callback));
 
   return TEST_SUCCESS;
 }
@@ -1095,7 +1099,7 @@ static test_return_t set_test3(memcached_st *memc)
     memcached_return_t rc= memcached_set(memc, key, strlen(key),
                                          value, value_length,
                                          (time_t)0, (uint32_t)0);
-    test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+    test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
     test_compare(query_id +1, memcached_query_id(memc));
   }
 
@@ -1264,6 +1268,7 @@ static test_return_t mget_end(memcached_st *memc)
   // this should indicate end
   string= memcached_fetch(memc, key, &key_length, &string_length, &flags, &rc);
   test_compare(MEMCACHED_END, rc);
+  test_null(string);
 
   // now get just one
   rc= memcached_mget(memc, keys, lengths, 1);
@@ -1280,6 +1285,7 @@ static test_return_t mget_end(memcached_st *memc)
   // this should indicate end
   string= memcached_fetch(memc, key, &key_length, &string_length, &flags, &rc);
   test_compare(MEMCACHED_END, rc);
+  test_null(string);
 
   return TEST_SUCCESS;
 }
@@ -1537,7 +1543,7 @@ static test_return_t quit_test(memcached_st *memc)
   rc= memcached_set(memc, key, strlen(key),
                     value, strlen(value),
                     (time_t)10, (uint32_t)3);
-  test_true(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED);
+  test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
   memcached_quit(memc);
 
   rc= memcached_set(memc, key, strlen(key),
@@ -1582,7 +1588,7 @@ static test_return_t mget_result_test(memcached_st *memc)
     rc= memcached_set(memc, keys[x], key_length[x],
                       keys[x], key_length[x],
                       (time_t)50, (uint32_t)9);
-    test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+    test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
   }
 
   test_compare(MEMCACHED_SUCCESS,
@@ -1631,7 +1637,7 @@ static test_return_t mget_result_alloc_test(memcached_st *memc)
     rc= memcached_set(memc, keys[x], key_length[x],
                       keys[x], key_length[x],
                       (time_t)50, (uint32_t)9);
-    test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+    test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
   }
 
   test_compare(MEMCACHED_SUCCESS,
@@ -1728,7 +1734,7 @@ static test_return_t mget_test(memcached_st *memc)
     rc= memcached_set(memc, keys[x], key_length[x],
                       keys[x], key_length[x],
                       (time_t)50, (uint32_t)9);
-    test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+    test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
   }
   test_compare(MEMCACHED_SUCCESS,
                memcached_mget(memc, keys, key_length, 3));
@@ -1784,7 +1790,7 @@ static test_return_t mget_execute(memcached_st *memc)
     test_true(keys[x] != NULL);
     uint64_t query_id= memcached_query_id(memc);
     rc= memcached_add(memc, keys[x], key_length[x], blob, sizeof(blob), 0, 0);
-    test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+    test_true_got(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED, memcached_strerror(NULL, rc));
     test_compare(query_id +1, memcached_query_id(memc));
   }
 
@@ -2781,43 +2787,33 @@ static test_return_t user_supplied_bug13(memcached_st *memc)
  */
 static test_return_t user_supplied_bug14(memcached_st *memc)
 {
-  size_t setter= 1;
-  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, setter);
-  memcached_return_t rc;
-  const char *key= "foo";
-  char *value;
-  size_t value_length= 18000;
-  char *string;
-  size_t string_length;
-  uint32_t flags;
-  unsigned int x;
-  size_t current_length;
-
-  value = (char*)malloc(value_length);
-  test_true(value);
+  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_TCP_NODELAY, true);
 
-  for (x= 0; x < value_length; x++)
-    value[x] = (char) (x % 127);
+  std::vector<char> value;
+  for (size_t x= 0; x < 18000; x++)
+  {
+    value.push_back((char) (x % 127));
+  }
 
-  for (current_length= 0; current_length < value_length; current_length++)
+  for (size_t current_length= 0; current_length < value.size(); current_length++)
   {
-    rc= memcached_set(memc, key, strlen(key),
-                      value, current_length,
-                      (time_t)0, (uint32_t)0);
-    test_true(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
+    memcached_return_t rc= memcached_set(memc, test_literal_param("foo"),
+                                         &value[0], current_length,
+                                         (time_t)0, (uint32_t)0);
+    test_true(rc == MEMCACHED_SUCCESS or rc == MEMCACHED_BUFFERED);
 
-    string= memcached_get(memc, key, strlen(key),
-                          &string_length, &flags, &rc);
+    size_t string_length;
+    uint32_t flags;
+    char *string= memcached_get(memc, test_literal_param("foo"),
+                                &string_length, &flags, &rc);
 
     test_compare(MEMCACHED_SUCCESS, rc);
-    test_true(string_length == current_length);
-    test_memcmp(string, value, string_length);
+    test_compare(string_length, current_length);
+    test_memcmp(string, &value[0], string_length);
 
     free(string);
   }
 
-  free(value);
-
   return TEST_SUCCESS;
 }
 
@@ -2826,35 +2822,31 @@ static test_return_t user_supplied_bug14(memcached_st *memc)
   */
 static test_return_t user_supplied_bug15(memcached_st *memc)
 {
-  uint32_t x;
-  memcached_return_t rc;
-  const char *key= "mykey";
-  size_t length;
-  uint32_t flags;
-
-  for (x= 0; x < 2; x++)
+  for (uint32_t x= 0; x < 2; x++)
   {
-    rc= memcached_set(memc, key, strlen(key),
-                      NULL, 0,
-                      (time_t)0, (uint32_t)0);
+    memcached_return_t rc= memcached_set(memc, test_literal_param("mykey"),
+                                         NULL, 0,
+                                         (time_t)0, (uint32_t)0);
 
     test_compare(MEMCACHED_SUCCESS, rc);
 
-    char *value= memcached_get(memc, key, strlen(key),
+    size_t length;
+    uint32_t flags;
+    char *value= memcached_get(memc, test_literal_param("mykey"),
                                &length, &flags, &rc);
 
     test_compare(MEMCACHED_SUCCESS, rc);
     test_false(value);
-    test_false(length);
-    test_false(flags);
+    test_zero(length);
+    test_zero(flags);
 
-    value= memcached_get(memc, key, strlen(key),
+    value= memcached_get(memc, test_literal_param("mykey"),
                          &length, &flags, &rc);
 
     test_compare(MEMCACHED_SUCCESS, rc);
     test_true(value == NULL);
-    test_true(length == 0);
-    test_true(flags == 0);
+    test_zero(length);
+    test_zero(flags);
   }
 
   return TEST_SUCCESS;
@@ -2863,25 +2855,21 @@ static test_return_t user_supplied_bug15(memcached_st *memc)
 /* Check the return sizes on FLAGS to make sure it stores 32bit unsigned values correctly */
 static test_return_t user_supplied_bug16(memcached_st *memc)
 {
-  memcached_return_t rc;
-  const char *key= "mykey";
-  char *value;
-  size_t length;
-  uint32_t flags;
-
-  rc= memcached_set(memc, key, strlen(key),
-                    NULL, 0,
-                    (time_t)0, UINT32_MAX);
+  memcached_return_t rc= memcached_set(memc, test_literal_param("mykey"),
+                                       NULL, 0,
+                                       (time_t)0, UINT32_MAX);
 
   test_compare(MEMCACHED_SUCCESS, rc);
 
-  value= memcached_get(memc, key, strlen(key),
+  size_t length;
+  uint32_t flags;
+  char *value= memcached_get(memc, test_literal_param("mykey"),
                        &length, &flags, &rc);
 
   test_compare(MEMCACHED_SUCCESS, rc);
   test_true(value == NULL);
-  test_true(length == 0);
-  test_true(flags == UINT32_MAX);
+  test_zero(length);
+  test_compare(flags, UINT32_MAX);
 
   return TEST_SUCCESS;
 }
@@ -2890,21 +2878,18 @@ static test_return_t user_supplied_bug16(memcached_st *memc)
 /* Check the validity of chinese key*/
 static test_return_t user_supplied_bug17(memcached_st *memc)
 {
-    memcached_return_t rc;
     const char *key= "豆瓣";
     const char *value="我们在炎热抑郁的夏天无法停止豆瓣";
-    char *value2;
-    size_t length;
-    uint32_t flags;
-
-    rc= memcached_set(memc, key, strlen(key),
-            value, strlen(value),
-            (time_t)0, 0);
+    memcached_return_t rc= memcached_set(memc, key, strlen(key),
+                                         value, strlen(value),
+                                         (time_t)0, 0);
 
     test_compare(MEMCACHED_SUCCESS, rc);
 
-    value2= memcached_get(memc, key, strlen(key),
-            &length, &flags, &rc);
+    size_t length;
+    uint32_t flags;
+    char *value2= memcached_get(memc, key, strlen(key),
+                                &length, &flags, &rc);
 
     test_true(length==strlen(value));
     test_compare(MEMCACHED_SUCCESS, rc);
@@ -2936,29 +2921,30 @@ static test_return_t user_supplied_bug19(memcached_st *)
 /* CAS test from Andei */
 static test_return_t user_supplied_bug20(memcached_st *memc)
 {
-  memcached_return_t status;
-  memcached_result_st *result, result_obj;
-  const char *key = "abc";
-  size_t key_len = strlen("abc");
-  const char *value = "foobar";
-  size_t value_len = strlen(value);
+  const char *key= "abc";
+  size_t key_len= strlen("abc");
 
-  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, 1);
+  test_skip(MEMCACHED_SUCCESS, memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, true));
 
-  status = memcached_set(memc, key, key_len, value, value_len, (time_t)0, (uint32_t)0);
-  test_true(status == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS,
+               memcached_set(memc,
+                             test_literal_param("abc"),
+                             test_literal_param("foobar"),
+                             (time_t)0, (uint32_t)0));
 
-  status = memcached_mget(memc, &key, &key_len, 1);
-  test_true(status == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS,
+               memcached_mget(memc, &key, &key_len, 1));
 
-  result= memcached_result_create(memc, &result_obj);
+  memcached_result_st result_obj;
+  memcached_result_st *result= memcached_result_create(memc, &result_obj);
   test_true(result);
 
   memcached_result_create(memc, &result_obj);
+  memcached_return_t status;
   result= memcached_fetch_result(memc, &result_obj, &status);
 
   test_true(result);
-  test_true(status == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS, status);
 
   memcached_result_free(result);
 
@@ -2992,7 +2978,7 @@ static test_return_t _user_supplied_bug21(memcached_st* memc, size_t key_count)
   test_true(memc_clone);
 
   /* only binproto uses getq for mget */
-  test_compare(MEMCACHED_SUCCESS, memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1));
+  test_compare(MEMCACHED_SUCCESS, memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, true));
 
   /* empty the cache to ensure misses (hence non-responses) */
   test_compare(MEMCACHED_SUCCESS, memcached_flush(memc_clone, 0));
@@ -3056,7 +3042,9 @@ static test_return_t user_supplied_bug21(memcached_st *memc)
   test_rc= pre_binary(memc);
 
   if (test_rc != TEST_SUCCESS)
+  {
     return test_rc;
+  }
 
   /* should work as of r580 */
   test_compare(TEST_SUCCESS,
@@ -3069,23 +3057,20 @@ static test_return_t user_supplied_bug21(memcached_st *memc)
   return TEST_SUCCESS;
 }
 
-static test_return_t output_ketama_weighted_keys(memcached_st *trash)
+static test_return_t output_ketama_weighted_keys(memcached_st *)
 {
-  (void) trash;
-
-  memcached_return_t rc;
   memcached_st *memc= memcached_create(NULL);
   test_true(memc);
 
 
-  rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED, 1);
-  test_compare(MEMCACHED_SUCCESS, rc);
+  test_compare(MEMCACHED_SUCCESS,
+               memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED, true));
 
   uint64_t value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED);
-  test_true(value == 1);
+  test_compare(value, uint64_t(1));
 
-  rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_HASH, MEMCACHED_HASH_MD5);
-  test_compare(MEMCACHED_SUCCESS, rc);
+  test_compare(MEMCACHED_SUCCESS,
+               memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_HASH, MEMCACHED_HASH_MD5));
 
   value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_KETAMA_HASH);
   test_true(value == MEMCACHED_HASH_MD5);
@@ -3132,30 +3117,26 @@ static test_return_t output_ketama_weighted_keys(memcached_st *trash)
 static test_return_t result_static(memcached_st *memc)
 {
   memcached_result_st result;
-  memcached_result_st *result_ptr;
-
-  result_ptr= memcached_result_create(memc, &result);
-  test_true(result.options.is_allocated == false);
-  test_true(memcached_is_initialized(&result) == true);
+  memcached_result_st *result_ptr= memcached_result_create(memc, &result);
+  test_false(result.options.is_allocated);
+  test_true(memcached_is_initialized(&result));
   test_true(result_ptr);
   test_true(result_ptr == &result);
 
   memcached_result_free(&result);
 
-  test_true(result.options.is_allocated == false);
-  test_true(memcached_is_initialized(&result) == false);
+  test_false(result.options.is_allocated);
+  test_false(memcached_is_initialized(&result));
 
   return TEST_SUCCESS;
 }
 
 static test_return_t result_alloc(memcached_st *memc)
 {
-  memcached_result_st *result_ptr;
-
-  result_ptr= memcached_result_create(memc, NULL);
+  memcached_result_st *result_ptr= memcached_result_create(memc, NULL);
   test_true(result_ptr);
-  test_true(result_ptr->options.is_allocated == true);
-  test_true(memcached_is_initialized(result_ptr) == true);
+  test_true(result_ptr->options.is_allocated);
+  test_true(memcached_is_initialized(result_ptr));
   memcached_result_free(result_ptr);
 
   return TEST_SUCCESS;
@@ -3169,9 +3150,8 @@ static test_return_t cleanup_pairs(memcached_st *memc)
   return TEST_SUCCESS;
 }
 
-static test_return_t generate_pairs(memcached_st *memc)
+static test_return_t generate_pairs(memcached_st *)
 {
-  (void)memc;
   global_pairs= pairs_generate(GLOBAL_COUNT, 400);
   global_count= GLOBAL_COUNT;
 
@@ -3238,10 +3218,7 @@ static test_return_t generate_data_with_stats(memcached_st *memc)
 }
 static test_return_t generate_buffer_data(memcached_st *memc)
 {
-  size_t latch= 0;
-
-  latch= 1;
-  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, latch);
+  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, true);
   generate_data(memc);
 
   return TEST_SUCCESS;
@@ -3316,7 +3293,7 @@ static test_return_t mget_read(memcached_st *memc)
     unsigned int keys_returned;
     test_compare(TEST_SUCCESS, fetch_all_results(memc, keys_returned, MEMCACHED_SUCCESS));
     test_true(keys_returned > 0);
-    test_compare_got(global_count, keys_returned, "Possible false, positive, memcached may have ejected key/value based on memory needs");
+    test_compare_warn_hint(global_count, keys_returned, "Possible false, positive, memcached may have ejected key/value based on memory needs");
   }
 
   return TEST_SUCCESS;
@@ -3334,6 +3311,7 @@ static test_return_t mget_read_result(memcached_st *memc)
   {
     memcached_result_st results_obj;
     memcached_result_st *results= memcached_result_create(memc, &results_obj);
+    test_true(results);
 
     memcached_return_t rc;
     while ((results= memcached_fetch_result(memc, &results_obj, &rc)))
@@ -3404,6 +3382,8 @@ static test_return_t mget_read_partial_result(memcached_st *memc)
   {
     memcached_result_st results_obj;
     memcached_result_st *results= memcached_result_create(memc, &results_obj);
+    test_true(results);
+    test_false(memcached_is_allocated(results));
 
     memcached_return_t rc;
     while ((results= memcached_fetch_result(memc, &results_obj, &rc)))
@@ -3446,8 +3426,7 @@ static test_return_t delete_generate(memcached_st *memc)
 
 static test_return_t delete_buffer_generate(memcached_st *memc)
 {
-  uint64_t latch= 1;
-  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, latch);
+  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, true);
 
   for (size_t x= 0; x < global_count; x++)
   {
@@ -3622,7 +3601,7 @@ static test_return_t pre_behavior_ketama(memcached_st *memc)
   test_compare(MEMCACHED_SUCCESS, rc);
 
   uint64_t value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_KETAMA);
-  test_true(value == 1);
+  test_compare(value, uint64_t(1));
 
   return TEST_SUCCESS;
 }
@@ -3633,13 +3612,13 @@ static test_return_t pre_behavior_ketama_weighted(memcached_st *memc)
   test_compare(MEMCACHED_SUCCESS, rc);
 
   uint64_t value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED);
-  test_true(value == 1);
+  test_compare(value, uint64_t(1));
 
-  rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_HASH, MEMCACHED_HASH_MD5);
-  test_compare(MEMCACHED_SUCCESS, rc);
+  test_compare(MEMCACHED_SUCCESS,
+               memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_HASH, MEMCACHED_HASH_MD5));
 
   value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_KETAMA_HASH);
-  test_true(value == MEMCACHED_HASH_MD5);
+  test_compare(MEMCACHED_HASH_MD5, memcached_hash_t(value));
 
   return TEST_SUCCESS;
 }
@@ -3764,6 +3743,7 @@ static test_return_t selection_of_namespace_tests(memcached_st *memc)
 
   /* Make sure be default none exists */
   value= (char*)memcached_callback_get(memc, MEMCACHED_CALLBACK_NAMESPACE, &rc);
+  test_null(value);
   test_compare_got(MEMCACHED_FAILURE, rc, memcached_strerror(NULL, rc));
 
   /* Test a clean set */
@@ -3835,6 +3815,7 @@ static test_return_t set_namespace(memcached_st *memc)
 
   /* Make sure be default none exists */
   value= (char*)memcached_callback_get(memc, MEMCACHED_CALLBACK_NAMESPACE, &rc);
+  test_null(value);
   test_compare_got(MEMCACHED_FAILURE, rc, memcached_strerror(NULL, rc));
 
   /* Test a clean set */
@@ -3958,7 +3939,9 @@ static test_return_t enable_consistent_hsieh(memcached_st *memc)
   memcached_hash_t hash;
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, value);
   if ((rc= pre_hsieh(memc)) != TEST_SUCCESS)
+  {
     return rc;
+  }
 
   value= (memcached_server_distribution_t)memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION);
   test_true(value == MEMCACHED_DISTRIBUTION_CONSISTENT);
@@ -4033,13 +4016,12 @@ static test_return_t pre_settimer(memcached_st *memc)
   return TEST_SUCCESS;
 }
 
-static test_return_t poll_timeout(memcached_st *memc)
+static test_return_t MEMCACHED_BEHAVIOR_POLL_TIMEOUT_test(memcached_st *memc)
 {
   const uint64_t timeout= 100; // Not using, just checking that it sets
 
   memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT, timeout);
 
-
   test_compare(timeout, memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_POLL_TIMEOUT));
 
   return TEST_SUCCESS;
@@ -4047,18 +4029,18 @@ static test_return_t poll_timeout(memcached_st *memc)
 
 static test_return_t noreply_test(memcached_st *memc)
 {
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NOREPLY, 1));
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, 1));
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, 1));
+  test_compare(1LLU, memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NOREPLY));
+  test_compare(1LLU, memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS));
+  test_compare(1LLU, memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS));
+
   memcached_return_t ret;
-  ret= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NOREPLY, 1);
-  test_true(ret == MEMCACHED_SUCCESS);
-  ret= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, 1);
-  test_true(ret == MEMCACHED_SUCCESS);
-  ret= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, 1);
-  test_true(ret == MEMCACHED_SUCCESS);
-  test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NOREPLY) == 1);
-  test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS) == 1);
-  test_true(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS) == 1);
-
-  for (int count=0; count < 5; ++count)
+  for (int count= 0; count < 5; ++count)
   {
     for (size_t x= 0; x < 100; ++x)
     {
@@ -4089,7 +4071,7 @@ static test_return_t noreply_test(memcached_st *memc)
         test_true(count);
         break;
       }
-      test_true(ret == MEMCACHED_SUCCESS || ret == MEMCACHED_BUFFERED);
+      test_true_got(ret == MEMCACHED_SUCCESS or ret == MEMCACHED_BUFFERED, memcached_strerror(NULL, ret));
     }
 
     /*
@@ -4106,7 +4088,7 @@ static test_return_t noreply_test(memcached_st *memc)
     }
 
     test_true(no_msg == 0);
-    test_true(memcached_flush_buffers(memc) == MEMCACHED_SUCCESS);
+    test_compare(MEMCACHED_SUCCESS, memcached_flush_buffers(memc));
 
     /*
      ** Now validate that all items was set properly!
@@ -4124,7 +4106,7 @@ static test_return_t noreply_test(memcached_st *memc)
       uint32_t flags;
       char* value=memcached_get(memc, key, strlen(key),
                                 &length, &flags, &ret);
-      test_true(ret == MEMCACHED_SUCCESS && value != NULL);
+      test_true_got(ret == MEMCACHED_SUCCESS && value != NULL, memcached_strerror(NULL, ret));
       switch (count)
       {
       case 0: /* FALLTHROUGH */
@@ -4156,26 +4138,26 @@ static test_return_t noreply_test(memcached_st *memc)
   uint32_t flags;
   memcached_result_st results_obj;
   memcached_result_st *results;
-  ret= memcached_mget(memc, keys, lengths, 1);
-  test_true(ret == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_mget(memc, keys, lengths, 1));
 
   results= memcached_result_create(memc, &results_obj);
   test_true(results);
   results= memcached_fetch_result(memc, &results_obj, &ret);
   test_true(results);
-  test_true(ret == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS, ret);
   uint64_t cas= memcached_result_cas(results);
   memcached_result_free(&results_obj);
 
-  ret= memcached_cas(memc, keys[0], lengths[0], keys[0], lengths[0], 0, 0, cas);
-  test_true(ret == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_cas(memc, keys[0], lengths[0], keys[0], lengths[0], 0, 0, cas));
 
   /*
    * The item will have a new cas value, so try to set it again with the old
    * value. This should fail!
    */
-  ret= memcached_cas(memc, keys[0], lengths[0], keys[0], lengths[0], 0, 0, cas);
-  test_true(ret == MEMCACHED_SUCCESS);
+  test_compare(MEMCACHED_SUCCESS, 
+               memcached_cas(memc, keys[0], lengths[0], keys[0], lengths[0], 0, 0, cas));
   test_true(memcached_flush_buffers(memc) == MEMCACHED_SUCCESS);
   char* value=memcached_get(memc, keys[0], lengths[0], &length, &flags, &ret);
   test_true(ret == MEMCACHED_SUCCESS && value != NULL);
@@ -4343,20 +4325,32 @@ static test_return_t util_version_test(memcached_st *memc)
   test_true(if_successful == true);
 
   if (instance->micro_version > 0)
+  {
     if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, (uint8_t)(instance->micro_version -1));
+  }
   else if (instance->minor_version > 0)
+  {
     if_successful= libmemcached_util_version_check(memc, instance->major_version, (uint8_t)(instance->minor_version - 1), instance->micro_version);
+  }
   else if (instance->major_version > 0)
+  {
     if_successful= libmemcached_util_version_check(memc, (uint8_t)(instance->major_version -1), instance->minor_version, instance->micro_version);
+  }
 
   test_true(if_successful == true);
 
   if (instance->micro_version > 0)
+  {
     if_successful= libmemcached_util_version_check(memc, instance->major_version, instance->minor_version, (uint8_t)(instance->micro_version +1));
+  }
   else if (instance->minor_version > 0)
+  {
     if_successful= libmemcached_util_version_check(memc, instance->major_version, (uint8_t)(instance->minor_version +1), instance->micro_version);
+  }
   else if (instance->major_version > 0)
+  {
     if_successful= libmemcached_util_version_check(memc, (uint8_t)(instance->major_version +1), instance->minor_version, instance->micro_version);
+  }
 
   test_true(if_successful == false);
 
@@ -4749,10 +4743,9 @@ static test_return_t memcached_get_MEMCACHED_NOTFOUND(memcached_st *memc)
   size_t len;
   uint32_t flags;
   memcached_return rc;
-  char *value;
 
   // See if memcached is reachable.
-  value= memcached_get(memc, key, strlen(key), &len, &flags, &rc);
+  char *value= memcached_get(memc, key, strlen(key), &len, &flags, &rc);
 
   test_false(value);
   test_zero(len);
@@ -5594,7 +5587,7 @@ static test_return_t regression_bug_655423(memcached_st *memc)
 
     test_compare(MEMCACHED_SUCCESS, rc);
     test_true(value);
-    test_compare(100UL, value_length);
+    test_compare(100LLU, value_length);
     free(value);
   }
 
@@ -5847,6 +5840,10 @@ test_st tests[] ={
   {"test_get_last_disconnect", true, (test_callback_fn*)test_get_last_disconnect},
   {"verbosity", true, (test_callback_fn*)test_verbosity},
   {"memcached_stat_execute", true, (test_callback_fn*)memcached_stat_execute_test},
+  {"memcached_exist(MEMCACHED_NOTFOUND)", true, (test_callback_fn*)memcached_exist_NOTFOUND },
+  {"memcached_exist(MEMCACHED_SUCCESS)", true, (test_callback_fn*)memcached_exist_SUCCESS },
+  {"memcached_exist_by_key(MEMCACHED_NOTFOUND)", true, (test_callback_fn*)memcached_exist_by_key_NOTFOUND },
+  {"memcached_exist_by_key(MEMCACHED_SUCCESS)", true, (test_callback_fn*)memcached_exist_by_key_SUCCESS },
   {0, 0, 0}
 };
 
@@ -5857,6 +5854,7 @@ test_st behavior_tests[] ={
   {"MEMCACHED_BEHAVIOR_CORK", false, (test_callback_fn*)MEMCACHED_BEHAVIOR_CORK_test},
   {"MEMCACHED_BEHAVIOR_TCP_KEEPALIVE", false, (test_callback_fn*)MEMCACHED_BEHAVIOR_TCP_KEEPALIVE_test},
   {"MEMCACHED_BEHAVIOR_TCP_KEEPIDLE", false, (test_callback_fn*)MEMCACHED_BEHAVIOR_TCP_KEEPIDLE_test},
+  {"MEMCACHED_BEHAVIOR_POLL_TIMEOUT", false, (test_callback_fn*)MEMCACHED_BEHAVIOR_POLL_TIMEOUT_test},
   {0, 0, 0}
 };
 
@@ -6141,7 +6139,6 @@ collection_st collection[] ={
   {"ketama_auto_eject_hosts", (test_callback_fn*)pre_behavior_ketama, 0, ketama_auto_eject_hosts},
   {"unix_socket", (test_callback_fn*)pre_unix_socket, 0, tests},
   {"unix_socket_nodelay", (test_callback_fn*)pre_nodelay, 0, tests},
-  {"poll_timeout", (test_callback_fn*)poll_timeout, 0, tests},
   {"gets", (test_callback_fn*)enable_cas, 0, tests},
   {"consistent_crc", (test_callback_fn*)enable_consistent_crc, 0, tests},
   {"consistent_hsieh", (test_callback_fn*)enable_consistent_hsieh, 0, tests},