123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- #include "../Tests.h"
- #include "core/List.h"
- #include "core/Utility.h"
- #include "core/Vector.h"
- static void testAdd() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 5);
- CORE_TEST_SIZE(5, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(5, coreListGetC(&list, 0, size_t));
- CORE_TEST_SIZE(1, list.length);
- coreDestroyList(&list);
- }
- static void testMultipleAdd() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 4);
- coreListAdd(&list, size_t, 3);
- coreListAdd(&list, size_t, 2);
- CORE_TEST_SIZE(4, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(3, coreListGet(&list, 1, size_t));
- CORE_TEST_SIZE(2, coreListGet(&list, 2, size_t));
- CORE_TEST_SIZE(4, coreListGetC(&list, 0, size_t));
- CORE_TEST_SIZE(3, coreListGetC(&list, 1, size_t));
- CORE_TEST_SIZE(2, coreListGetC(&list, 2, size_t));
- CORE_TEST_SIZE(3, list.length);
- coreDestroyList(&list);
- }
- static void testAddReplace() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 5);
- coreListGet(&list, 0, size_t) = 3;
- CORE_TEST_SIZE(3, coreListGet(&list, 0, size_t));
- coreDestroyList(&list);
- }
- static void testClear() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 5);
- coreListAdd(&list, size_t, 4);
- coreClearList(&list);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyList(&list);
- }
- static void testShrink() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 5);
- coreListAdd(&list, size_t, 4);
- coreListAdd(&list, size_t, 3);
- CORE_TEST_TRUE(list.capacity >= 3);
- coreShrinkList(&list);
- CORE_TEST_SIZE(3, list.length);
- CORE_TEST_SIZE(3, list.capacity);
- CORE_TEST_SIZE(5, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(4, coreListGet(&list, 1, size_t));
- CORE_TEST_SIZE(3, coreListGet(&list, 2, size_t));
- coreDestroyList(&list);
- }
- static void testBigAdd(bool light) {
- size_t limit = light ? 10000 : 100000;
- CoreList list = CORE_LIST(sizeof(size_t));
- for(size_t i = 0; i < limit; i++) {
- coreListAdd(&list, size_t, i);
- }
- for(size_t i = 0; i < list.length; i++) {
- CORE_TEST_SIZE(i, coreListGet(&list, i, size_t));
- }
- CORE_TEST_SIZE(limit, list.length);
- coreDestroyList(&list);
- }
- static void testCopy() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 1);
- coreListAdd(&list, size_t, 2);
- coreListAdd(&list, size_t, 3);
- CoreList copy = CORE_LIST(0);
- coreCopyList(©, &list);
- coreCopyList(©, ©);
- CORE_TEST_SIZE(list.length, copy.length);
- size_t limit = coreMinSize(copy.length, list.length);
- for(size_t i = 0; i < limit; i++) {
- CORE_TEST_SIZE(coreListGet(&list, i, size_t),
- coreListGet(©, i, size_t));
- }
- coreDestroyList(©);
- coreDestroyList(&list);
- }
- static void testMove() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 1);
- coreListAdd(&list, size_t, 2);
- coreListAdd(&list, size_t, 3);
- CoreList move = CORE_LIST(0);
- coreMoveList(&move, &list);
- coreMoveList(&move, &move);
- CORE_TEST_SIZE(0, list.length);
- CORE_TEST_SIZE(3, move.length);
- CORE_TEST_SIZE(1, coreListGet(&move, 0, size_t));
- CORE_TEST_SIZE(2, coreListGet(&move, 1, size_t));
- CORE_TEST_SIZE(3, coreListGet(&move, 2, size_t));
- coreDestroyList(&move);
- }
- static void testToString1() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 1);
- coreListAdd(&list, size_t, 243);
- coreListAdd(&list, size_t, 423);
- char buffer[128];
- size_t n =
- coreToStringList(&list, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_SIZE(13, n);
- CORE_TEST_STRING("[1, 243, 423]", buffer);
- coreDestroyList(&list);
- }
- static void testToString2() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 1);
- char buffer[128];
- size_t n =
- coreToStringList(&list, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_SIZE(3, n);
- CORE_TEST_STRING("[1]", buffer);
- coreDestroyList(&list);
- }
- static void testToString3() {
- CoreList list = CORE_LIST(sizeof(size_t));
- char buffer[128];
- size_t n =
- coreToStringList(&list, buffer, sizeof(buffer), coreToStringSize);
- CORE_TEST_SIZE(2, n);
- CORE_TEST_STRING("[]", buffer);
- coreDestroyList(&list);
- }
- static void testRemoveBySwap() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 4);
- coreListAdd(&list, size_t, 3);
- coreListAdd(&list, size_t, 2);
- coreListRemoveBySwap(&list, 0);
- CORE_TEST_SIZE(2, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(3, coreListGet(&list, 1, size_t));
- CORE_TEST_SIZE(2, list.length);
- coreListRemoveBySwap(&list, 1);
- CORE_TEST_SIZE(2, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(1, list.length);
- coreListRemoveBySwap(&list, 0);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyList(&list);
- }
- static void testRemove() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 4);
- coreListAdd(&list, size_t, 3);
- coreListAdd(&list, size_t, 2);
- coreListRemove(&list, 0);
- CORE_TEST_SIZE(3, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(2, coreListGet(&list, 1, size_t));
- CORE_TEST_SIZE(2, list.length);
- coreListRemove(&list, 1);
- CORE_TEST_SIZE(3, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(1, list.length);
- coreListRemove(&list, 0);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyList(&list);
- }
- static void testRemoveLast() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListAdd(&list, size_t, 4);
- coreListAdd(&list, size_t, 3);
- coreListAdd(&list, size_t, 2);
- coreListRemoveLast(&list);
- CORE_TEST_SIZE(4, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(3, coreListGet(&list, 1, size_t));
- CORE_TEST_SIZE(2, list.length);
- coreListRemoveLast(&list);
- CORE_TEST_SIZE(4, coreListGet(&list, 0, size_t));
- CORE_TEST_SIZE(1, list.length);
- coreListRemoveLast(&list);
- CORE_TEST_SIZE(0, list.length);
- coreDestroyList(&list);
- }
- static void testResize() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreResizeListV(&list, 5, size_t, 10);
- CORE_TEST_SIZE(5, list.length);
- for(size_t i = 0; i < 5; i++) {
- CORE_TEST_SIZE(10, coreListGet(&list, i, size_t));
- }
- coreDestroyList(&list);
- }
- static void testDefaultResize() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreResizeList(&list, 5);
- CORE_TEST_SIZE(5, list.length);
- for(size_t i = 0; i < 5; i++) {
- CORE_TEST_SIZE(0, coreListGet(&list, i, size_t));
- }
- coreDestroyList(&list);
- }
- static void testInvalidReserve() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreListReserve(&list, 0);
- coreDestroyList(&list);
- }
- static void testShrinkExact() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreResizeList(&list, 50);
- coreShrinkList(&list);
- coreDestroyList(&list);
- }
- static void testShrinkResize() {
- CoreList list = CORE_LIST(sizeof(size_t));
- coreResizeList(&list, 50);
- CORE_TEST_SIZE(50, list.length);
- coreResizeListV(&list, 20, size_t, 5);
- CORE_TEST_SIZE(20, list.length);
- coreResizeList(&list, 10);
- CORE_TEST_SIZE(10, list.length);
- coreDestroyList(&list);
- }
- static void testCopyEmpty() {
- CoreList list = CORE_LIST(sizeof(size_t));
- CoreList copy = CORE_LIST(0);
- coreCopyList(©, &list);
- coreDestroyList(©);
- coreDestroyList(&list);
- }
- static void testStruct() {
- CoreList list = CORE_LIST(sizeof(CoreVector3));
- CoreVector3 v = {{1, 2, 3}};
- coreListAddPointer(&list, &v);
- coreListAdd(&list, CoreVector3, {2, 3, 4});
- CORE_TEST_V3(&v, coreListGetPointer(&list, 0));
- coreDestroyList(&list);
- }
- void coreTestList(bool light) {
- testAdd();
- testMultipleAdd();
- testAddReplace();
- testClear();
- testShrink();
- testBigAdd(light);
- testCopy();
- testMove();
- testToString1();
- testToString2();
- testToString3();
- testRemoveBySwap();
- testRemove();
- testRemoveLast();
- testResize();
- testDefaultResize();
- testInvalidReserve();
- testShrinkExact();
- testShrinkResize();
- testCopyEmpty();
- testStruct();
- }
|