Added test for list search.
authorSteven Schronk <[email protected]>
Wed, 2 Feb 2011 20:01:29 +0000 (2 14:01 -0600)
committerSteven Schronk <[email protected]>
Wed, 2 Feb 2011 20:01:29 +0000 (2 14:01 -0600)
Fixed error of list search. Did not always return
correct results with small lists.

lib_ll.c
lib_test.c

index 31ec082..b59b925 100644 (file)
--- a/lib_ll.c
+++ b/lib_ll.c
@@ -45,7 +45,7 @@ int list_search(List_Head *pHead, List_Node *pNode)
        assert(pHead != NULL);
        if(pHead->count == 0) return 0;
        pTemp = pHead->pNext;
-       while(pTemp->pNext != NULL) {
+       while(pTemp != NULL) {
                if(pTemp == pNode) return 1;
                pTemp = pTemp->pNext;
        }
@@ -329,8 +329,6 @@ int list_node_array(List_Head *pHead, void *pArr[], int len)
        return 0;
 }
 
-/* void* tempArray = malloc(width*elementsNeeded); */
-
 void list_clear(List_Head *pHead)
 {
        List_Node *pTemp = pHead->pNext;
index 40c9330..1ca0354 100644 (file)
@@ -430,6 +430,29 @@ int test_linked_list()
                if(pArr[5] != NULL) result++;
        test_msg_end(result);
 
+       test_msg_start("Test Linked List - Search List");
+               list_clear(test_list1);
+               if(list_search(test_list1, test_node1) != 0) result++;
+               test_node1 = list_ins_head(test_list1);
+               if(list_search(test_list1, test_node1) != 1) result++;
+               if(list_search(test_list1, test_node2) != 0) result++;
+               if(list_search(test_list1, test_node3) != 0) result++;
+               if(list_search(test_list1, NULL) != 0) result++;
+               if(list_search(test_list1, (List_Node *)test_list1) != 0) result++;
+               test_node2 = list_ins_head(test_list1);
+               if(list_search(test_list1, test_node1) != 1) result++;
+               if(list_search(test_list1, test_node2) != 1) result++;
+               if(list_search(test_list1, test_node3) != 0) result++;
+               if(list_search(test_list1, NULL) != 0) result++;
+               if(list_search(test_list1, (List_Node *)test_list1) != 0) result++;
+               list_clear(test_list1);
+               if(list_search(test_list1, test_node1) != 0) result++;
+               if(list_search(test_list1, test_node2) != 0) result++;
+               if(list_search(test_list1, test_node3) != 0) result++;
+               if(list_search(test_list1, NULL) != 0) result++;
+               if(list_search(test_list1, (List_Node *)test_list1) != 0) result++;
+       test_msg_end(result);
+
        return result;
 }