#include "test_str8_list.h" #include "wapp.h" WpTestFuncResult test_str8_list_get(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8 s4 = wpStr8Lit("4"); WpStr8 s5 = wpStr8Lit("5"); WpStr8List list = wpDblList(WpStr8); wpDblListPushBack(WpStr8, &list, &s1); wpDblListPushBack(WpStr8, &list, &s2); wpDblListPushBack(WpStr8, &list, &s3); wpDblListPushBack(WpStr8, &list, &s4); wpDblListPushBack(WpStr8, &list, &s5); WpStr8 *node = wpDblListGet(WpStr8, &list, 0); result = node == &s1 && wpStr8Equal(node, &s1); node = wpDblListGet(WpStr8, &list, 1); result = result && node == &s2 && wpStr8Equal(node, &s2); node = wpDblListGet(WpStr8, &list, 2); result = result && node == &s3 && wpStr8Equal(node, &s3); node = wpDblListGet(WpStr8, &list, 3); result = result && node == &s4 && wpStr8Equal(node, &s4); node = wpDblListGet(WpStr8, &list, 4); result = result && node == &s5 && wpStr8Equal(node, &s5); return wpTesterResult(result); } WpTestFuncResult test_str8_list_push_front(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8List list = wpDblList(WpStr8); wpDblListPushFront(WpStr8, &list, &s1); result = list.first == list.last && list.first->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1; wpDblListPushFront(WpStr8, &list, &s2); result = result && list.first->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2; wpDblListPushFront(WpStr8, &list, &s3); result = result && list.first->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3; return wpTesterResult(result); } WpTestFuncResult test_str8_list_push_back(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8List list = wpDblList(WpStr8); wpDblListPushBack(WpStr8, &list, &s1); result = list.first == list.last && list.last->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1; wpDblListPushBack(WpStr8, &list, &s2); result = result && list.last->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2; wpDblListPushBack(WpStr8, &list, &s3); result = result && list.last->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3; return wpTesterResult(result); } WpTestFuncResult test_str8_list_insert(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8 s4 = wpStr8Lit("4"); WpStr8 s5 = wpStr8Lit("5"); WpStr8 s6 = wpStr8Lit("6"); WpStr8 s7 = wpStr8Lit("7"); WpStr8List list = wpDblList(WpStr8); wpDblListPushBack(WpStr8, &list, &s1); wpDblListPushBack(WpStr8, &list, &s2); wpDblListPushBack(WpStr8, &list, &s3); wpDblListPushBack(WpStr8, &list, &s4); wpDblListPushBack(WpStr8, &list, &s5); WpStr8 *node; wpDblListInsert(WpStr8, &list, &s6, 2); node = wpDblListGet(WpStr8, &list, 2); result = node != NULL && node == &s6 && wpStr8ListTotalSize(&list) == 6 && list.node_count == 6; wpDblListInsert(WpStr8, &list, &s7, 5); node = wpDblListGet(WpStr8, &list, 5); result = result && node != NULL && node == &s7 && wpStr8ListTotalSize(&list) == 7 && list.node_count == 7; return wpTesterResult(result); } WpTestFuncResult test_str8_list_pop_front(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8 s4 = wpStr8Lit("4"); WpStr8 s5 = wpStr8Lit("5"); WpStr8List list = wpDblList(WpStr8); wpDblListPushBack(WpStr8, &list, &s1); wpDblListPushBack(WpStr8, &list, &s2); wpDblListPushBack(WpStr8, &list, &s3); wpDblListPushBack(WpStr8, &list, &s4); wpDblListPushBack(WpStr8, &list, &s5); WpStr8 *node = wpDblListPopFront(WpStr8, &list); result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4; node = wpDblListPopFront(WpStr8, &list); result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3; node = wpDblListPopFront(WpStr8, &list); result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2; node = wpDblListPopFront(WpStr8, &list); result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1; node = wpDblListPopFront(WpStr8, &list); result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0; return wpTesterResult(result); } WpTestFuncResult test_str8_list_pop_back(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8 s4 = wpStr8Lit("4"); WpStr8 s5 = wpStr8Lit("5"); WpStr8List list = wpDblList(WpStr8); wpDblListPushFront(WpStr8, &list, &s1); wpDblListPushFront(WpStr8, &list, &s2); wpDblListPushFront(WpStr8, &list, &s3); wpDblListPushFront(WpStr8, &list, &s4); wpDblListPushFront(WpStr8, &list, &s5); WpStr8 *node = wpDblListPopBack(WpStr8, &list); result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4; node = wpDblListPopBack(WpStr8, &list); result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3; node = wpDblListPopBack(WpStr8, &list); result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2; node = wpDblListPopBack(WpStr8, &list); result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1; node = wpDblListPopBack(WpStr8, &list); result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0; return wpTesterResult(result); } WpTestFuncResult test_str8_list_remove(void) { b8 result; WpStr8 s1 = wpStr8Lit("1"); WpStr8 s2 = wpStr8Lit("2"); WpStr8 s3 = wpStr8Lit("3"); WpStr8 s4 = wpStr8Lit("4"); WpStr8 s5 = wpStr8Lit("5"); WpStr8List list = wpDblList(WpStr8); wpDblListPushBack(WpStr8, &list, &s1); wpDblListPushBack(WpStr8, &list, &s2); wpDblListPushBack(WpStr8, &list, &s3); wpDblListPushBack(WpStr8, &list, &s4); wpDblListPushBack(WpStr8, &list, &s5); WpStr8 *node = wpDblListRemove(WpStr8, &list, 0); result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4; node = wpDblListRemove(WpStr8, &list, 0); result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3; node = wpDblListRemove(WpStr8, &list, 0); result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2; node = wpDblListRemove(WpStr8, &list, 0); result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1; node = wpDblListRemove(WpStr8, &list, 0); result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0; return wpTesterResult(result); } WpTestFuncResult test_str8_list_empty(void) { b8 result; WpStr8List list = wpDblList(WpStr8); WpStr8 hello = wpStr8Lit("Hello"); wpDblListPushBack(WpStr8, &list, &hello); WpStr8 from = wpStr8Lit("from"); wpDblListPushBack(WpStr8, &list, &from); WpStr8 wizapp = wpStr8Lit("wizapp"); wpDblListPushBack(WpStr8, &list, &wizapp); WpStr8 stdlib = wpStr8Lit("stdlib"); wpDblListPushBack(WpStr8, &list, &stdlib); wpDblListEmpty(WpStr8, &list); result = list.first == NULL && list.last == NULL && list.node_count == 0 && wpStr8ListTotalSize(&list) == 0; return wpTesterResult(result); }