+#include <string>
+#include <iostream>
+
+using namespace std;
+using namespace memcache;
+
+extern "C" {
+ test_return_t basic_test(memcached_st *memc);
+ test_return_t increment_test(memcached_st *memc);
+ test_return_t basic_master_key_test(memcached_st *memc);
+ test_return_t mget_result_function(memcached_st *memc);
+ test_return_t basic_behavior(memcached_st *memc);
+ test_return_t mget_test(memcached_st *memc);
+ memcached_return_t callback_counter(const memcached_st *,
+ memcached_result_st *,
+ void *context);
+}
+
+static void populate_vector(vector<char> &vec, const string &str)
+{
+ vec.reserve(str.length());
+ vec.assign(str.begin(), str.end());
+}
+
+static void copy_vec_to_string(vector<char> &vec, string &str)
+{
+ str.clear();
+ if (! vec.empty())
+ {
+ str.assign(vec.begin(), vec.end());
+ }
+}
+
+test_return_t basic_test(memcached_st *memc)
+{
+ Memcache foo(memc);
+ const string value_set("This is some data");
+ std::vector<char> value;
+ std::vector<char> test_value;
+
+ populate_vector(value, value_set);
+
+ foo.set("mine", value, 0, 0);
+ foo.get("mine", test_value);
+
+ assert((memcmp(&test_value[0], &value[0], test_value.size()) == 0));
+
+ /*
+ * Simple test of the exceptions here...this should throw an exception
+ * saying that the key is empty.
+ */
+ try
+ {
+ foo.set("", value, 0, 0);
+ }
+ catch (Error &err)
+ {
+ return TEST_SUCCESS;
+ }
+
+ return TEST_FAILURE;
+}
+
+test_return_t increment_test(memcached_st *memc)