Add test for _splice_at for Intrusive list.
This commit is contained in:
1 parent
c4548c4355
commit
d40d23a50e
1 file changed
+48
@@ -32,6 +32,7 @@ typedef struct test_s {
|
|||||||
ILIST_INTERFACE (ilist_free, struct test_s);
|
ILIST_INTERFACE (ilist_free, struct test_s);
|
||||||
} test_t;
|
} test_t;
|
||||||
|
|
||||||
|
|
||||||
#include "coverage.h"
|
#include "coverage.h"
|
||||||
START_COVERAGE
|
START_COVERAGE
|
||||||
ILIST_DEF(ilist_tname, test_t)
|
ILIST_DEF(ilist_tname, test_t)
|
||||||
@@ -111,6 +112,52 @@ static void test(void)
|
|||||||
ilist_tname_clear(list);
|
ilist_tname_clear(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define NUM 10
|
||||||
|
static void test2(void)
|
||||||
|
{
|
||||||
|
test_t x[NUM];
|
||||||
|
M_LET(list1, list2, ILIST_OPLIST(ilist_tname)) {
|
||||||
|
for(int i = 0; i < NUM; i++)
|
||||||
|
x[i].n = i;
|
||||||
|
for(int i = 0; i < NUM; i++) {
|
||||||
|
ilist_tname_push_back(list1, &x[i]);
|
||||||
|
}
|
||||||
|
assert (ilist_tname_size(list1) == NUM);
|
||||||
|
assert (ilist_tname_size(list2) == 0);
|
||||||
|
ilist_tname_it_t it;
|
||||||
|
ilist_tname_it (it, list1);
|
||||||
|
for(int i = 0; i < NUM; i++) {
|
||||||
|
assert (ilist_tname_cref(it)->n == i);
|
||||||
|
ilist_tname_splice_back (list2, list1, it);
|
||||||
|
}
|
||||||
|
assert (ilist_tname_size(list1) == 0);
|
||||||
|
assert (ilist_tname_size(list2) == NUM);
|
||||||
|
int n = 0;
|
||||||
|
for M_EACH(item, list2, ILIST_OPLIST(ilist_tname)) {
|
||||||
|
assert (n == item->n);
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
assert (n == NUM);
|
||||||
|
|
||||||
|
ilist_tname_it_t it2;
|
||||||
|
ilist_tname_it_end (it, list1);
|
||||||
|
ilist_tname_it (it2, list2);
|
||||||
|
for(int i = 0; i < NUM; i++) {
|
||||||
|
assert (ilist_tname_cref(it2)->n == i);
|
||||||
|
ilist_tname_splice_at (list1, it, list2, it2);
|
||||||
|
assert (ilist_tname_cref(it)->n == i);
|
||||||
|
}
|
||||||
|
assert (ilist_tname_size(list1) == NUM);
|
||||||
|
assert (ilist_tname_size(list2) == 0);
|
||||||
|
n = 0;
|
||||||
|
for M_EACH(item, list1, ILIST_OPLIST(ilist_tname)) {
|
||||||
|
assert (n == item->n);
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
assert (n == NUM);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void test_free(void)
|
static void test_free(void)
|
||||||
{
|
{
|
||||||
ilist_free_t list;
|
ilist_free_t list;
|
||||||
@@ -138,6 +185,7 @@ static void test_free(void)
|
|||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
test();
|
test();
|
||||||
|
test2();
|
||||||
test_free();
|
test_free();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user