#include #include #include #include #include #include #include "kv.h" static void test_kv_int_create() { kv_params_t params = { .nslots = 32, .keyops = &int_key_ops, .datakiller = NULL }; var tab = makeInstance(&kvtab_type, ¶ms); TEST_ASSERT_TRUE(tab != NULL); destroy(tab); } static void test_kv_int1() { kv_params_t params = { .nslots = 32, .keyops = &int_key_ops, .datakiller = NULL }; var tab = makeInstance(&kvtab_type, ¶ms); int i; int rc; TEST_ASSERT_TRUE(tab != NULL); for (i = 0; i < 9; i++) { rc = key_add(tab, (void*)(long)i, (void*)(long)(i * i)); TEST_ASSERT_TRUE(rc >= 0); } for (i = 0; i < 9; i++) { void* v; rc = key_find(tab, (void*)(long)i, &v); TEST_ASSERT_TRUE(rc > 0); TEST_ASSERT_TRUE((int)(long)v == i * i); } for (i = 100; i < 199; i++) { void* v = NULL; rc = key_find(tab, (void*)(long)i, &v); TEST_ASSERT_TRUE(rc == -ENOENT); } for (i = 0; i < 9; i++) { void* v; rc = key_del(tab, (void*)(long)i); TEST_ASSERT_TRUE(rc >= 0); rc = key_find(tab, (void*)(long)i, &v); TEST_ASSERT_TRUE(rc == -ENOENT); } destroy(tab); } static void my_free(void* p) { if (p == NULL) { return; } free(p); } static void test_kv_int2() { kv_params_t params = { .nslots = 32, .keyops = &int_key_ops, .datakiller = my_free }; var tab = makeInstance(&kvtab_type, ¶ms); int i; int rc; char buf[128]; TEST_ASSERT_TRUE(tab != NULL); for (i = 0; i < 9; i++) { char* p = NULL; sprintf(buf, "value#%d", i); p = strdup(buf); TEST_ASSERT_TRUE(p != NULL); rc = key_add(tab, (void*)(long)i, (void*)p); TEST_ASSERT_TRUE(rc >= 0); } for (i = 0; i < 9; i++) { void* v; rc = key_find(tab, (void*)(long)i, &v); TEST_ASSERT_TRUE(rc > 0); sprintf(buf, "value#%d", i); TEST_ASSERT_TRUE(strcmp(buf, (char*)v) == 0); } destroy(tab); } static void test_kv_string1() { kv_params_t params = { .nslots = 32, .keyops = &string_key_ops, .datakiller = NULL }; var tab = makeInstance(&kvtab_type, ¶ms); int i; int rc; char buf[64]; TEST_ASSERT_TRUE(tab != NULL); for (i = 0; i < 9; i++) { sprintf(buf, "key#%d", i); rc = key_add(tab, (void*)buf, (void*)(long)(i * i)); TEST_ASSERT_TRUE(rc >= 0); } for (i = 0; i < 9; i++) { void* v; sprintf(buf, "key#%d", i); rc = key_find(tab, (void*)buf, &v); TEST_ASSERT_TRUE(rc > 0); TEST_ASSERT_TRUE((int)(long)v == i * i); } for (i = 100; i < 199; i++) { void* v = NULL; sprintf(buf, "key#%d", i); rc = key_find(tab, (void*)buf, &v); TEST_ASSERT_TRUE(rc == -ENOENT); } for (i = 0; i < 9; i++) { void* v; sprintf(buf, "key#%d", i); rc = key_del(tab, (void*)buf); TEST_ASSERT_TRUE(rc >= 0); rc = key_find(tab, (void*)buf, &v); TEST_ASSERT_TRUE(rc == -ENOENT); } destroy(tab); } static void test_kv_string_create() { kv_params_t params = { .nslots = 32, .keyops = &string_key_ops, .datakiller = NULL }; var tab = makeInstance(&kvtab_type, ¶ms); TEST_ASSERT_TRUE(tab != NULL); destroy(tab); } void test_kv(void) { printf("\n>> kv test\n\n"); RUN_TEST(test_kv_int_create); RUN_TEST(test_kv_string_create); RUN_TEST(test_kv_int1); RUN_TEST(test_kv_int2); RUN_TEST(test_kv_string1); }