30 #include <gtest/gtest.h>
38 unsigned len = 1 + (rand() % 3);
39 std::unique_ptr<char[]>
ret(
new char[
len + 1]);
41 for (
unsigned i = 0;
i <
len;
i++) {
42 ret[
i] =
'0' + (rand() & 7);
56 auto iter = dummy_lh->find(
key);
57 if (
iter == dummy_lh->end()) {
60 return iter->second.get();
71 std::map<std::string, std::unique_ptr<char[]>> dummy_lh;
73 for (
unsigned i = 0;
i < 100000;
i++) {
74 EXPECT_EQ(dummy_lh.size(), lh_char_num_items(lh.get()));
82 using ValueList = std::vector<const char *>;
83 ValueList expected, actual;
84 for (
const auto &
pair : dummy_lh) {
85 expected.push_back(
pair.second.get());
87 std::sort(expected.begin(), expected.end());
89 lh_char_doall_arg(lh.get(),
91 ValueList *out = reinterpret_cast<ValueList *>(arg);
95 std::sort(actual.begin(), actual.end());
105 Action
action =
static_cast<Action
>(rand() % 3);
109 char *
value = lh_char_retrieve(lh.get(),
key.get());
113 value = lh_char_retrieve_key(
115 [](
const void *key_ptr,
const char *
data) ->
int {
116 const char *key_data =
117 reinterpret_cast<const std::unique_ptr<char[]> *>(key_ptr)
119 return strcmp(key_data, data);
136 char *
value = lh_char_delete(lh.get(),
key.get());
138 dummy_lh.erase(
key.get());