123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- #include "../Tests.h"
- #include "core/LinkedList.h"
- #include "core/Utility.h"
- static void testAdd() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 5);
- CoreLinkedListNode* current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(5, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(1, list.length);
- coreDestroyLinkedList(&list);
- }
- static void testMultipleAdd() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 4);
- coreLinkedListAdd(&list, size_t, 3);
- coreLinkedListAdd(&list, size_t, 2);
- CoreLinkedListNode* current = list.first;
- CORE_TEST_SIZE(4, coreLinkedListGet(current, size_t));
- current = current->next;
- CORE_TEST_SIZE(3, coreLinkedListGet(current, size_t));
- current = current->next;
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- CORE_TEST_SIZE(3, list.length);
- coreDestroyLinkedList(&list);
- }
- static void testClear() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 5);
- coreLinkedListAdd(&list, size_t, 4);
- coreClearLinkedList(&list);
- CORE_TEST_SIZE(0, list.length);
- CORE_TEST_NULL(list.first);
- CORE_TEST_NULL(list.last);
- coreDestroyLinkedList(&list);
- }
- static void testBigAdd(bool light) {
- size_t limit = light ? 10000 : 100000;
- CoreLinkedList list = CORE_LINKED_LIST;
- for(size_t i = 0; i < limit; i++) {
- coreLinkedListAdd(&list, size_t, i);
- }
- CoreLinkedListNode* current = list.first;
- for(size_t i = 0; i < list.length; i++) {
- CORE_TEST_SIZE(i, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- CORE_TEST_SIZE(limit, list.length);
- coreDestroyLinkedList(&list);
- }
- static void testToString1() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 1);
- coreLinkedListAdd(&list, size_t, 243);
- coreLinkedListAdd(&list, size_t, 423);
- char buffer[128];
- size_t n =
- coreToStringLinkedList(&list, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_SIZE(13, n);
- CORE_TEST_STRING("[1, 243, 423]", buffer);
- coreDestroyLinkedList(&list);
- }
- static void testToString2() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 1);
- char buffer[128];
- size_t n =
- coreToStringLinkedList(&list, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_SIZE(3, n);
- CORE_TEST_STRING("[1]", buffer);
- coreDestroyLinkedList(&list);
- }
- static void testToString3() {
- CoreLinkedList list = CORE_LINKED_LIST;
- char buffer[128];
- size_t n =
- coreToStringLinkedList(&list, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_SIZE(2, n);
- CORE_TEST_STRING("[]", buffer);
- coreDestroyLinkedList(&list);
- }
- static void testRemove() {
- CoreLinkedList list = CORE_LINKED_LIST;
- CoreLinkedListNode* a = coreLinkedListAdd(&list, size_t, 4u);
- CoreLinkedListNode* b = coreLinkedListAdd(&list, size_t, 3u);
- CoreLinkedListNode* c = coreLinkedListAdd(&list, size_t, 2u);
- CoreLinkedListNode* d = coreLinkedListAdd(&list, size_t, 1u);
- CORE_TEST_NOT_NULL(a);
- CORE_TEST_NOT_NULL(b);
- CORE_TEST_NOT_NULL(c);
- CORE_TEST_NOT_NULL(d);
- coreLinkedListRemove(&list, b);
- CoreLinkedListNode* current = list.first;
- CORE_TEST_SIZE(4, coreLinkedListGet(current, size_t));
- current = current->next;
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- current = current->next;
- CORE_TEST_SIZE(1, coreLinkedListGet(current, size_t));
- CORE_TEST_SIZE(3, list.length);
- coreLinkedListRemove(&list, a);
- current = list.first;
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- current = current->next;
- CORE_TEST_SIZE(1, coreLinkedListGet(current, size_t));
- CORE_TEST_SIZE(2, list.length);
- coreLinkedListRemove(&list, d);
- current = list.first;
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- CORE_TEST_SIZE(1, list.length);
- coreLinkedListRemove(&list, c);
- CORE_TEST_NULL(list.first);
- CORE_TEST_NULL(list.last);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyLinkedList(&list);
- }
- static void testRemoveFirst() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 4u);
- coreLinkedListAdd(&list, size_t, 3u);
- coreLinkedListAdd(&list, size_t, 2u);
- coreLinkedListAdd(&list, size_t, 1u);
- coreLinkedListRemoveFirst(&list);
- CoreLinkedListNode* current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(3, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(1, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(3, list.length);
- coreLinkedListRemoveFirst(&list);
- current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(1, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(2, list.length);
- coreLinkedListRemoveFirst(&list);
- current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(1, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(1, list.length);
- coreLinkedListRemoveFirst(&list);
- CORE_TEST_NULL(list.first);
- CORE_TEST_NULL(list.last);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyLinkedList(&list);
- }
- static void testRemoveLast() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 4u);
- coreLinkedListAdd(&list, size_t, 3u);
- coreLinkedListAdd(&list, size_t, 2u);
- coreLinkedListAdd(&list, size_t, 1u);
- coreLinkedListRemoveLast(&list);
- CoreLinkedListNode* current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(4, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(3, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(2, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(3, list.length);
- coreLinkedListRemoveLast(&list);
- current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(4, coreLinkedListGet(current, size_t));
- current = current->next;
- }
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(3, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(2, list.length);
- coreLinkedListRemoveLast(&list);
- current = list.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(4, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(1, list.length);
- coreLinkedListRemoveLast(&list);
- CORE_TEST_NULL(list.first);
- CORE_TEST_NULL(list.last);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyLinkedList(&list);
- }
- static void testSwap() {
- CoreLinkedList list = CORE_LINKED_LIST;
- coreLinkedListAdd(&list, size_t, 5);
- CoreLinkedList swap = CORE_LINKED_LIST;
- coreSwapLinkedList(&list, &swap);
- CoreLinkedListNode* current = swap.first;
- if(CORE_TEST_NOT_NULL(current)) {
- CORE_TEST_SIZE(5, coreLinkedListGet(current, size_t));
- }
- CORE_TEST_SIZE(0, list.length);
- CORE_TEST_SIZE(1, swap.length);
- coreDestroyLinkedList(&swap);
- coreDestroyLinkedList(&list);
- }
- void coreTestLinkedList(bool light) {
- testAdd();
- testMultipleAdd();
- testClear();
- testBigAdd(light);
- testToString1();
- testToString2();
- testToString3();
- testRemove();
- testRemoveFirst();
- testRemoveLast();
- testSwap();
- }
|