#include "test_str8_list.h" #include "wapp.h" WpTestFuncResult test_str8_list_get(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8 s4 = wapp_str8_lit("4"); WpStr8 s5 = wapp_str8_lit("5"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &list, &s1); wapp_dbl_list_push_back(WpStr8, &list, &s2); wapp_dbl_list_push_back(WpStr8, &list, &s3); wapp_dbl_list_push_back(WpStr8, &list, &s4); wapp_dbl_list_push_back(WpStr8, &list, &s5); WpStr8 *node = wapp_dbl_list_get(WpStr8, &list, 0); result = node == &s1 && wapp_str8_equal(node, &s1); node = wapp_dbl_list_get(WpStr8, &list, 1); result = result && node == &s2 && wapp_str8_equal(node, &s2); node = wapp_dbl_list_get(WpStr8, &list, 2); result = result && node == &s3 && wapp_str8_equal(node, &s3); node = wapp_dbl_list_get(WpStr8, &list, 3); result = result && node == &s4 && wapp_str8_equal(node, &s4); node = wapp_dbl_list_get(WpStr8, &list, 4); result = result && node == &s5 && wapp_str8_equal(node, &s5); return wpTesterResult(result); } WpTestFuncResult test_str8_list_push_front(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_front(WpStr8, &list, &s1); result = list.first == list.last && list.first->item == &s1 && wapp_str8_list_total_size(&list) == 1 && list.node_count == 1; wapp_dbl_list_push_front(WpStr8, &list, &s2); result = result && list.first->item == &s2 && wapp_str8_list_total_size(&list) == 2 && list.node_count == 2; wapp_dbl_list_push_front(WpStr8, &list, &s3); result = result && list.first->item == &s3 && wapp_str8_list_total_size(&list) == 3 && list.node_count == 3; return wpTesterResult(result); } WpTestFuncResult test_str8_list_push_back(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &list, &s1); result = list.first == list.last && list.last->item == &s1 && wapp_str8_list_total_size(&list) == 1 && list.node_count == 1; wapp_dbl_list_push_back(WpStr8, &list, &s2); result = result && list.last->item == &s2 && wapp_str8_list_total_size(&list) == 2 && list.node_count == 2; wapp_dbl_list_push_back(WpStr8, &list, &s3); result = result && list.last->item == &s3 && wapp_str8_list_total_size(&list) == 3 && list.node_count == 3; return wpTesterResult(result); } WpTestFuncResult test_str8_list_insert(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8 s4 = wapp_str8_lit("4"); WpStr8 s5 = wapp_str8_lit("5"); WpStr8 s6 = wapp_str8_lit("6"); WpStr8 s7 = wapp_str8_lit("7"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &list, &s1); wapp_dbl_list_push_back(WpStr8, &list, &s2); wapp_dbl_list_push_back(WpStr8, &list, &s3); wapp_dbl_list_push_back(WpStr8, &list, &s4); wapp_dbl_list_push_back(WpStr8, &list, &s5); WpStr8 *node; wapp_dbl_list_insert(WpStr8, &list, &s6, 2); node = wapp_dbl_list_get(WpStr8, &list, 2); result = node != NULL && node == &s6 && wapp_str8_list_total_size(&list) == 6 && list.node_count == 6; wapp_dbl_list_insert(WpStr8, &list, &s7, 5); node = wapp_dbl_list_get(WpStr8, &list, 5); result = result && node != NULL && node == &s7 && wapp_str8_list_total_size(&list) == 7 && list.node_count == 7; return wpTesterResult(result); } WpTestFuncResult test_str8_list_pop_front(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8 s4 = wapp_str8_lit("4"); WpStr8 s5 = wapp_str8_lit("5"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &list, &s1); wapp_dbl_list_push_back(WpStr8, &list, &s2); wapp_dbl_list_push_back(WpStr8, &list, &s3); wapp_dbl_list_push_back(WpStr8, &list, &s4); wapp_dbl_list_push_back(WpStr8, &list, &s5); WpStr8 *node = wapp_dbl_list_pop_front(WpStr8, &list); result = node == &s1 && wapp_str8_equal(node, &s1) && wapp_str8_list_total_size(&list) == 4 && list.node_count == 4; node = wapp_dbl_list_pop_front(WpStr8, &list); result = result && node == &s2 && wapp_str8_equal(node, &s2) && wapp_str8_list_total_size(&list) == 3 && list.node_count == 3; node = wapp_dbl_list_pop_front(WpStr8, &list); result = result && node == &s3 && wapp_str8_equal(node, &s3) && wapp_str8_list_total_size(&list) == 2 && list.node_count == 2; node = wapp_dbl_list_pop_front(WpStr8, &list); result = result && node == &s4 && wapp_str8_equal(node, &s4) && wapp_str8_list_total_size(&list) == 1 && list.node_count == 1; node = wapp_dbl_list_pop_front(WpStr8, &list); result = result && node == &s5 && wapp_str8_equal(node, &s5) && wapp_str8_list_total_size(&list) == 0 && list.node_count == 0; return wpTesterResult(result); } WpTestFuncResult test_str8_list_pop_back(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8 s4 = wapp_str8_lit("4"); WpStr8 s5 = wapp_str8_lit("5"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_front(WpStr8, &list, &s1); wapp_dbl_list_push_front(WpStr8, &list, &s2); wapp_dbl_list_push_front(WpStr8, &list, &s3); wapp_dbl_list_push_front(WpStr8, &list, &s4); wapp_dbl_list_push_front(WpStr8, &list, &s5); WpStr8 *node = wapp_dbl_list_pop_back(WpStr8, &list); result = node == &s1 && wapp_str8_equal(node, &s1) && wapp_str8_list_total_size(&list) == 4 && list.node_count == 4; node = wapp_dbl_list_pop_back(WpStr8, &list); result = result && node == &s2 && wapp_str8_equal(node, &s2) && wapp_str8_list_total_size(&list) == 3 && list.node_count == 3; node = wapp_dbl_list_pop_back(WpStr8, &list); result = result && node == &s3 && wapp_str8_equal(node, &s3) && wapp_str8_list_total_size(&list) == 2 && list.node_count == 2; node = wapp_dbl_list_pop_back(WpStr8, &list); result = result && node == &s4 && wapp_str8_equal(node, &s4) && wapp_str8_list_total_size(&list) == 1 && list.node_count == 1; node = wapp_dbl_list_pop_back(WpStr8, &list); result = result && node == &s5 && wapp_str8_equal(node, &s5) && wapp_str8_list_total_size(&list) == 0 && list.node_count == 0; return wpTesterResult(result); } WpTestFuncResult test_str8_list_remove(void) { b8 result; WpStr8 s1 = wapp_str8_lit("1"); WpStr8 s2 = wapp_str8_lit("2"); WpStr8 s3 = wapp_str8_lit("3"); WpStr8 s4 = wapp_str8_lit("4"); WpStr8 s5 = wapp_str8_lit("5"); WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &list, &s1); wapp_dbl_list_push_back(WpStr8, &list, &s2); wapp_dbl_list_push_back(WpStr8, &list, &s3); wapp_dbl_list_push_back(WpStr8, &list, &s4); wapp_dbl_list_push_back(WpStr8, &list, &s5); WpStr8 *node = wapp_dbl_list_remove(WpStr8, &list, 0); result = node == &s1 && wapp_str8_equal(node, &s1) && wapp_str8_list_total_size(&list) == 4 && list.node_count == 4; node = wapp_dbl_list_remove(WpStr8, &list, 0); result = result && node == &s2 && wapp_str8_equal(node, &s2) && wapp_str8_list_total_size(&list) == 3 && list.node_count == 3; node = wapp_dbl_list_remove(WpStr8, &list, 0); result = result && node == &s3 && wapp_str8_equal(node, &s3) && wapp_str8_list_total_size(&list) == 2 && list.node_count == 2; node = wapp_dbl_list_remove(WpStr8, &list, 0); result = result && node == &s4 && wapp_str8_equal(node, &s4) && wapp_str8_list_total_size(&list) == 1 && list.node_count == 1; node = wapp_dbl_list_remove(WpStr8, &list, 0); result = result && node == &s5 && wapp_str8_equal(node, &s5) && wapp_str8_list_total_size(&list) == 0 && list.node_count == 0; return wpTesterResult(result); } WpTestFuncResult test_str8_list_empty(void) { b8 result; WpStr8List list = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &list, &wapp_str8_lit("Hello")); wapp_dbl_list_push_back(WpStr8, &list, &wapp_str8_lit("from")); wapp_dbl_list_push_back(WpStr8, &list, &wapp_str8_lit("wizapp")); wapp_dbl_list_push_back(WpStr8, &list, &wapp_str8_lit("stdlib")); wapp_dbl_list_empty(WpStr8, &list); result = list.first == NULL && list.last == NULL && list.node_count == 0 && wapp_str8_list_total_size(&list) == 0; return wpTesterResult(result); }