Browse Source

Test struct in list, swap args for struct init

Kajetan Johannes Hammerle 10 months ago
parent
commit
dd9cc95647
2 changed files with 46 additions and 35 deletions
  1. 3 3
      include/core/List.h
  2. 43 32
      test/modules/ListTests.c

+ 3 - 3
include/core/List.h

@@ -18,10 +18,10 @@ void coreListReserve(CoreList* l, size_t n);
 void coreShrinkList(CoreList* l);
 void coreResizeList(CoreList* l, size_t n);
 void coreResizeListPointer(CoreList* l, size_t n, const void* data);
-#define coreResizeListV(l, n, data, type)                                      \
-    coreResizeListPointer(l, n, &(type){data})
+#define coreResizeListV(l, n, type, ...)                                       \
+    coreResizeListPointer(l, n, &(type){__VA_ARGS__})
 CoreList* coreListAddPointer(CoreList* l, const void* data);
-#define coreListAdd(l, data, type) coreListAddPointer(l, &(type){data})
+#define coreListAdd(l, type, ...) coreListAddPointer(l, &(type){__VA_ARGS__})
 void* coreListGetPointer(CoreList* l, size_t index);
 #define coreListGet(l, index, type) *(type*)coreListGetPointer(l, index)
 const void* coreListGetPointerC(const CoreList* l, size_t index);

+ 43 - 32
test/modules/ListTests.c

@@ -1,10 +1,11 @@
 #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, 5, 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);
@@ -13,9 +14,9 @@ static void testAdd() {
 
 static void testMultipleAdd() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 4, size_t);
-    coreListAdd(&list, 3, size_t);
-    coreListAdd(&list, 2, 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));
@@ -28,7 +29,7 @@ static void testMultipleAdd() {
 
 static void testAddReplace() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 5, size_t);
+    coreListAdd(&list, size_t, 5);
     coreListGet(&list, 0, size_t) = 3;
     CORE_TEST_SIZE(3, coreListGet(&list, 0, size_t));
     coreDestroyList(&list);
@@ -36,8 +37,8 @@ static void testAddReplace() {
 
 static void testClear() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 5, size_t);
-    coreListAdd(&list, 4, size_t);
+    coreListAdd(&list, size_t, 5);
+    coreListAdd(&list, size_t, 4);
     coreClearList(&list);
     CORE_TEST_SIZE(0, list.length);
     coreDestroyList(&list);
@@ -45,9 +46,9 @@ static void testClear() {
 
 static void testShrink() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 5, size_t);
-    coreListAdd(&list, 4, size_t);
-    coreListAdd(&list, 3, 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);
@@ -62,7 +63,7 @@ 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, i, size_t);
+        coreListAdd(&list, size_t, i);
     }
     for(size_t i = 0; i < list.length; i++) {
         CORE_TEST_SIZE(i, coreListGet(&list, i, size_t));
@@ -73,9 +74,9 @@ static void testBigAdd(bool light) {
 
 static void testCopy() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 1, size_t);
-    coreListAdd(&list, 2, size_t);
-    coreListAdd(&list, 3, size_t);
+    coreListAdd(&list, size_t, 1);
+    coreListAdd(&list, size_t, 2);
+    coreListAdd(&list, size_t, 3);
 
     CoreList copy = CORE_LIST(0);
     coreCopyList(&copy, &list);
@@ -92,9 +93,9 @@ static void testCopy() {
 
 static void testMove() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 1, size_t);
-    coreListAdd(&list, 2, size_t);
-    coreListAdd(&list, 3, 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);
@@ -109,9 +110,9 @@ static void testMove() {
 
 static void testToString1() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 1, size_t);
-    coreListAdd(&list, 243, size_t);
-    coreListAdd(&list, 423, 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);
@@ -122,7 +123,7 @@ static void testToString1() {
 
 static void testToString2() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 1, size_t);
+    coreListAdd(&list, size_t, 1);
     char buffer[128];
     size_t n =
         coreToStringList(&list, buffer, sizeof(buffer), coreToStringSize);
@@ -143,9 +144,9 @@ static void testToString3() {
 
 static void testRemoveBySwap() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 4, size_t);
-    coreListAdd(&list, 3, size_t);
-    coreListAdd(&list, 2, 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));
@@ -160,9 +161,9 @@ static void testRemoveBySwap() {
 
 static void testRemove() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 4, size_t);
-    coreListAdd(&list, 3, size_t);
-    coreListAdd(&list, 2, 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));
@@ -177,9 +178,9 @@ static void testRemove() {
 
 static void testRemoveLast() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreListAdd(&list, 4, size_t);
-    coreListAdd(&list, 3, size_t);
-    coreListAdd(&list, 2, 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));
@@ -194,7 +195,7 @@ static void testRemoveLast() {
 
 static void testResize() {
     CoreList list = CORE_LIST(sizeof(size_t));
-    coreResizeListV(&list, 5, 10, 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));
@@ -229,7 +230,7 @@ static void testShrinkResize() {
     CoreList list = CORE_LIST(sizeof(size_t));
     coreResizeList(&list, 50);
     CORE_TEST_SIZE(50, list.length);
-    coreResizeListV(&list, 20, 5, size_t);
+    coreResizeListV(&list, 20, size_t, 5);
     CORE_TEST_SIZE(20, list.length);
     coreResizeList(&list, 10);
     CORE_TEST_SIZE(10, list.length);
@@ -244,6 +245,15 @@ static void testCopyEmpty() {
     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();
@@ -265,4 +275,5 @@ void coreTestList(bool light) {
     testShrinkExact();
     testShrinkResize();
     testCopyEmpty();
+    testStruct();
 }