+/* Count the results */
+memcached_return_t callback_counter(const memcached_st *,
+ memcached_result_st *,
+ void *context)
+{
+ unsigned int *counter= static_cast<unsigned int *>(context);
+
+ *counter= *counter +1;
+
+ return MEMCACHED_SUCCESS;
+}
+
+test_return_t mget_test(memcached_st *original)
+{
+ Memcache memc(original);
+ memcached_return_t mc_rc;
+ vector<string> keys;
+ vector< vector<char> *> values;
+ keys.reserve(3);
+ keys.push_back("fudge");
+ keys.push_back("son");
+ keys.push_back("food");
+ vector<char> val1;
+ vector<char> val2;
+ vector<char> val3;
+ populate_vector(val1, "fudge");
+ populate_vector(val2, "son");
+ populate_vector(val3, "food");
+ values.reserve(3);
+ values.push_back(&val1);
+ values.push_back(&val2);
+ values.push_back(&val3);
+
+ string return_key;
+ vector<char> return_value;
+
+ /* We need to empty the server before we continue the test */
+ test_true(memc.flush());
+
+ test_true(memc.mget(keys));
+
+ test_compare(MEMCACHED_NOTFOUND,
+ memc.fetch(return_key, return_value));
+
+ test_true(memc.setAll(keys, values, 50, 9));
+
+ test_true(memc.mget(keys));
+ size_t count= 0;
+ while (memcached_success(mc_rc= memc.fetch(return_key, return_value)))
+ {
+ test_compare(return_key.length(), return_value.size());
+ test_memcmp(&return_value[0], return_key.c_str(), return_value.size());
+ count++;
+ }
+ test_compare(values.size(), count);
+
+ return TEST_SUCCESS;
+}
+
+test_return_t basic_behavior(memcached_st *original)
+{
+ Memcache memc(original);
+ uint64_t value= 1;
+ test_true(memc.setBehavior(MEMCACHED_BEHAVIOR_VERIFY_KEY, value));
+ uint64_t behavior= memc.getBehavior(MEMCACHED_BEHAVIOR_VERIFY_KEY);
+ test_compare(behavior, value);
+
+ return TEST_SUCCESS;
+}