X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=tests%2Ftest-list.c;h=6f1fb059bc9bc8559b112a92c2ba4fffd6ed0439;hb=aa1fc8017ff4da75e5008d1891f80543d66a643f;hp=d413f30a2ba06f23222d4efa1c2d719f51ee871f;hpb=5b2cdc3fbbad739c09f47f420cd4f1c54c0399fb;p=cascardo%2Fovs.git diff --git a/tests/test-list.c b/tests/test-list.c index d413f30a2..6f1fb059b 100644 --- a/tests/test-list.c +++ b/tests/test-list.c @@ -185,6 +185,46 @@ test_list_for_each_pop(void) } } +/* Tests the transplant of one list into another */ +static void +test_list_push_back_all(void) +{ + struct ovs_list list_a, list_b; + struct element a, b, c, d; + + a.value = 0; + b.value = 1; + c.value = 2; + d.value = 3; + + ovs_list_init(&list_a); + ovs_list_init(&list_b); + + ovs_list_insert(&list_a, &a.node); + ovs_list_insert(&list_a, &b.node); + ovs_list_insert(&list_b, &c.node); + ovs_list_insert(&list_b, &d.node); + + /* Check test preconditions */ + assert(2 == ovs_list_size(&list_a)); + assert(2 == ovs_list_size(&list_b)); + + /* Perform transplant */ + ovs_list_push_back_all(&list_a, &list_b); + + /* Check expected result */ + assert(4 == ovs_list_size(&list_a)); + assert(0 == ovs_list_size(&list_b)); + + struct element *node; + int n = 0; + LIST_FOR_EACH(node, node, &list_a) { + assert(n == node->value); + n++; + } + assert(n == 4); +} + static void run_test(void (*function)(void)) { @@ -198,6 +238,7 @@ test_list_main(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) run_test(test_list_construction); run_test(test_list_for_each_safe); run_test(test_list_for_each_pop); + run_test(test_list_push_back_all); printf("\n"); }