introduce kv
This commit is contained in:
parent
48ea4a0205
commit
15fac3cda1
6 changed files with 504 additions and 4 deletions
|
|
@ -23,6 +23,7 @@ extern void test_limit(void);
|
|||
extern void test_xvec(void);
|
||||
extern void test_resreq(void);
|
||||
extern void test_bitset(void);
|
||||
extern void test_kv(void);
|
||||
|
||||
void setUp(void) { return; }
|
||||
|
||||
|
|
@ -115,6 +116,7 @@ int main(int argc, char* argv[])
|
|||
TEST(test_xvec);
|
||||
TEST(test_resreq);
|
||||
TEST(test_bitset);
|
||||
TEST(test_kv);
|
||||
|
||||
return UNITY_END();
|
||||
}
|
||||
|
|
|
|||
172
src/lib/testsuite/test_kv.c
Normal file
172
src/lib/testsuite/test_kv.c
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
#include <errno.h>
|
||||
#include <rtti.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <unity/unity.h>
|
||||
|
||||
#include "kv.h"
|
||||
|
||||
static void test_kv_int_create()
|
||||
{
|
||||
var tab = makeInstance(&kvtab_int64_type, 31, NULL);
|
||||
|
||||
TEST_ASSERT_TRUE(tab != NULL);
|
||||
|
||||
destroy(tab);
|
||||
}
|
||||
|
||||
static void test_kv_int1()
|
||||
{
|
||||
var tab = makeInstance(&kvtab_int64_type, 31, NULL);
|
||||
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()
|
||||
{
|
||||
var tab = makeInstance(&kvtab_int64_type, 31, my_free);
|
||||
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()
|
||||
{
|
||||
var tab = makeInstance(&kvtab_string_type, 31, NULL);
|
||||
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()
|
||||
{
|
||||
var tab = makeInstance(&kvtab_string_type, 31, NULL);
|
||||
|
||||
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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue