diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2021-09-21 21:57:26 +0200 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2021-09-21 21:57:26 +0200 |
commit | 13293d178731bba7d77123e57bc08925d285d522 (patch) | |
tree | 8f016fa188cec8a0215c961c1cc832c2b4bdcd4a | |
parent | ca197d7fc187e205a0e733be1722e6e8e03515c2 (diff) | |
download | dns-13293d178731bba7d77123e57bc08925d285d522.tar.gz |
list: add length and tests
-rw-r--r-- | src/list.c | 15 | ||||
-rw-r--r-- | src/list.h | 2 | ||||
-rw-r--r-- | tests/list.c | 6 |
3 files changed, 17 insertions, 6 deletions
@@ -28,8 +28,19 @@ int list_sort ( list_element_t** _root ) { return -1; } -int list_length ( list_element_t* _root ) { - return -1; +int list_length ( list_element_t** _root ) { + list_element_t** iter = _root; + int ret = 0; + + if( !_root ) + return -1; + + while(*iter) { + ret ++; + iter = & (*iter)->next; + } + + return ret; } void* list_pop_front ( list_element_t** _root ) { @@ -20,6 +20,6 @@ int list_add( list_element_t** _root, void* _data ); int list_sort ( list_element_t** _root ); -int list_length ( list_element_t* _root ); +int list_length ( list_element_t** _root ); void* list_pop_front ( list_element_t** _root ); diff --git a/tests/list.c b/tests/list.c index 25fa323..722568b 100644 --- a/tests/list.c +++ b/tests/list.c @@ -20,14 +20,14 @@ START_TEST ( test_list_all ) { /* Not implemented list_sort(&root); - - ck_assert_int_eq( list_length(root), 9 ); */ + ck_assert_int_ne( list_sort(&root), 0 ); + ck_assert_int_eq( list_length(&root), 9 ); for ( i=0; i<=8; i++ ) ck_assert_int_eq(*(int*)list_pop_front(&root), i); - /*ck_assert_int_eq( list_length(root), 0 );*/ + ck_assert_int_eq( list_length(&root), 0 ); } END_TEST |