Files
wizapp-stdlib/tests/str8/test_str8_list.c
T
2026-06-26 17:16:27 +01:00

231 lines
7.5 KiB
C

#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);
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("Hello"));
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("from"));
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("wizapp"));
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("stdlib"));
wpDblListEmpty(WpStr8, &list);
result = list.first == NULL && list.last == NULL && list.node_count == 0 && wpStr8ListTotalSize(&list) == 0;
return wpTesterResult(result);
}