support limit
This commit is contained in:
parent
bef32ace38
commit
ecf1916d78
33 changed files with 3036 additions and 243 deletions
139
src/lib/testsuite/test_xlist.c
Normal file
139
src/lib/testsuite/test_xlist.c
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unity.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "xlist.h"
|
||||
|
||||
static void test_xlist1(void)
|
||||
{
|
||||
xlist_t lst;
|
||||
char* hello = "Hello";
|
||||
void* p = NULL;
|
||||
int idx;
|
||||
|
||||
xlist_init(&lst, 2);
|
||||
idx = xlist_store(&lst, (void*)hello);
|
||||
|
||||
TEST_ASSERT_TRUE(idx >= 0);
|
||||
p = xlist_get(&lst, idx);
|
||||
|
||||
TEST_ASSERT_TRUE(p == hello);
|
||||
xlist_fini(&lst);
|
||||
}
|
||||
|
||||
static int find_check_(void* data, va_list ap)
|
||||
{
|
||||
char* p = va_arg(ap, char*);
|
||||
|
||||
if (data == p) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (p == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (data == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp((char*)data, p) == 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void test_xlist_find(void)
|
||||
{
|
||||
xlist_t lst;
|
||||
char* hello = "Hello";
|
||||
void* p = NULL;
|
||||
int idx;
|
||||
|
||||
xlist_init(&lst, 2);
|
||||
idx = xlist_store(&lst, (void*)hello);
|
||||
|
||||
TEST_ASSERT_TRUE(idx >= 0);
|
||||
|
||||
p = xlist_find(&lst, (xlist_find_fn_t)find_check_, "Hello");
|
||||
|
||||
TEST_ASSERT_TRUE(p != NULL);
|
||||
|
||||
TEST_ASSERT_TRUE(strcmp((char*)p, "Hello") == 0);
|
||||
|
||||
xlist_fini(&lst);
|
||||
}
|
||||
|
||||
static void test_xlist_del(void)
|
||||
{
|
||||
xlist_t lst;
|
||||
char* hello = "Hello";
|
||||
void* p = NULL;
|
||||
int idx;
|
||||
int i;
|
||||
|
||||
xlist_init(&lst, 2);
|
||||
for (i = 0; i < 5; i++) {
|
||||
idx = xlist_store(&lst, (void*)hello);
|
||||
TEST_ASSERT_TRUE(idx >= 0);
|
||||
}
|
||||
|
||||
p = xlist_find(&lst, (xlist_find_fn_t)find_check_, "Hello");
|
||||
|
||||
TEST_ASSERT_TRUE(p != NULL);
|
||||
|
||||
TEST_ASSERT_TRUE(strcmp((char*)p, "Hello") == 0);
|
||||
|
||||
xlist_del(&lst, (void*)hello);
|
||||
|
||||
p = xlist_find(&lst, (xlist_find_fn_t)find_check_, "Hello");
|
||||
|
||||
TEST_ASSERT_TRUE(p == NULL);
|
||||
TEST_ASSERT_TRUE(lst.count == 0);
|
||||
|
||||
xlist_fini(&lst);
|
||||
}
|
||||
|
||||
static int do_iter_(void* arg1, void* arg2)
|
||||
{
|
||||
int* count = (int*)arg2;
|
||||
int i = (int)(long)arg1;
|
||||
|
||||
(*count) += i;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void test_xlist_iter(void)
|
||||
{
|
||||
xlist_t lst;
|
||||
int idx;
|
||||
int i;
|
||||
int count = 0;
|
||||
|
||||
xlist_init(&lst, 2);
|
||||
for (i = 0; i < 5; i++) {
|
||||
idx = xlist_store(&lst, (void*)(long)i);
|
||||
TEST_ASSERT_TRUE(idx >= 0);
|
||||
}
|
||||
|
||||
xlist_iter(&lst, (xlist_iter_fn_t)do_iter_, &count);
|
||||
|
||||
TEST_ASSERT_TRUE(count == 10);
|
||||
|
||||
xlist_fini(&lst);
|
||||
}
|
||||
|
||||
void test_xlist(void)
|
||||
{
|
||||
printf("\n>> xlist test\n\n");
|
||||
|
||||
RUN_TEST(test_xlist1);
|
||||
RUN_TEST(test_xlist_find);
|
||||
RUN_TEST(test_xlist_del);
|
||||
RUN_TEST(test_xlist_iter);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue