X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Ftest-list.c;h=50748184af2ce45a78bb85f8ea1df7d0e0841e56;hb=bdcc59259553133f25a1c9759fa4bfa302adc365;hp=0aa0f8b2ad6896eaf3f49612a01a599d02fd79b3;hpb=a14bc59fb8f27db193d74662dc9c5cb8237177ef;p=sliver-openvswitch.git diff --git a/tests/test-list.c b/tests/test-list.c index 0aa0f8b2a..50748184a 100644 --- a/tests/test-list.c +++ b/tests/test-list.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,10 +34,10 @@ struct element { * elements in order into 'list'. */ static void make_list(struct list *list, struct element elements[], - int values[], size_t n) + int values[], size_t n) { size_t i; - + list_init(list); for (i = 0; i < n; i++) { elements[i].value = i; @@ -49,13 +49,13 @@ make_list(struct list *list, struct element elements[], /* Verifies that 'list' contains exactly the 'n' values in 'values', in the * specified order. */ static void -check_list(struct list *list, const int values[], size_t n) +check_list(struct list *list, const int values[], size_t n) { struct element *e; size_t i; - + i = 0; - LIST_FOR_EACH (e, struct element, node, list) { + LIST_FOR_EACH (e, node, list) { assert(i < n); assert(e->value == values[i]); i++; @@ -64,7 +64,7 @@ check_list(struct list *list, const int values[], size_t n) assert(i == n); i = 0; - LIST_FOR_EACH_REVERSE (e, struct element, node, list) { + LIST_FOR_EACH_REVERSE (e, node, list) { assert(i < n); assert(e->value == values[n - i - 1]); i++; @@ -73,18 +73,20 @@ check_list(struct list *list, const int values[], size_t n) assert(i == n); assert(list_is_empty(list) == !n); + assert(list_is_singleton(list) == (n == 1)); + assert(list_is_short(list) == (n < 2)); assert(list_size(list) == n); } #if 0 /* Prints the values in 'list', plus 'name' as a title. */ static void -print_list(const char *name, struct list *list) +print_list(const char *name, struct list *list) { struct element *e; - + printf("%s:", name); - LIST_FOR_EACH (e, struct element, node, list) { + LIST_FOR_EACH (e, node, list) { printf(" %d", e->value); } printf("\n"); @@ -93,7 +95,7 @@ print_list(const char *name, struct list *list) /* Tests basic list construction. */ static void -test_list_construction(void) +test_list_construction(void) { enum { MAX_ELEMS = 100 }; size_t n; @@ -102,7 +104,7 @@ test_list_construction(void) struct element elements[MAX_ELEMS]; int values[MAX_ELEMS]; struct list list; - + make_list(&list, elements, values, n); check_list(&list, values, n); } @@ -111,7 +113,7 @@ test_list_construction(void) /* Tests that LIST_FOR_EACH_SAFE properly allows for deletion of the current * element of a list. */ static void -test_list_for_each_safe(void) +test_list_for_each_safe(void) { enum { MAX_ELEMS = 10 }; size_t n; @@ -125,13 +127,13 @@ test_list_for_each_safe(void) struct element *e, *next; size_t values_idx, n_remaining; int i; - + make_list(&list, elements, values, n); i = 0; values_idx = 0; n_remaining = n; - LIST_FOR_EACH_SAFE (e, next, struct element, node, &list) { + LIST_FOR_EACH_SAFE (e, next, node, &list) { assert(i < n); if (pattern & (1ul << i)) { list_remove(&e->node); @@ -158,14 +160,14 @@ test_list_for_each_safe(void) } static void -run_test(void (*function)(void)) +run_test(void (*function)(void)) { function(); printf("."); } int -main(void) +main(void) { run_test(test_list_construction); run_test(test_list_for_each_safe);