]> git.seodisparate.com - UDPConnection/commitdiff
Minor fix to HashMap_itercall(), add to unit test
authorStephen Seo <seo.disparate@gmail.com>
Fri, 15 Feb 2019 05:43:16 +0000 (14:43 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Fri, 15 Feb 2019 05:43:16 +0000 (14:43 +0900)
src/UDPC_HashMap.c
src/test/UDPC_UnitTest.c

index 502ac8708983badf206497b7a0f67a94efebc59a..8fdabbbe73d74c618313e0c26a7a8bb9ee932b57 100644 (file)
@@ -349,14 +349,16 @@ void UDPC_HashMap_itercall(UDPC_HashMap *hm, void (*fn)(void*, char*), void *use
         {
             char *data = UDPC_Deque_index_ptr(
                 hm->buckets[x], 4 + hm->unitSize, y);
-            fn(userData, data + 4);
+            if(hm->unitSize > 0) { fn(userData, data + 4); }
+            else { fn(userData, data); }
         }
     }
     for(int x = 0; x * (4 + hm->unitSize) < hm->overflow->size; ++x)
     {
         char *data = UDPC_Deque_index_ptr(
             hm->overflow, 4 + hm->unitSize, x);
-        fn(userData, data + 4);
+        if(hm->unitSize > 0) { fn(userData, data + 4); }
+        else { fn(userData, data); }
     }
 }
 
index 9da1f86ef388a8cabf35ed57ec66c60b2843ae75..e4835eb3bdb33b697b5723bc139ff8c24f3276fb 100644 (file)
@@ -232,6 +232,12 @@ void TEST_ATOSTR()
     UNITTEST_REPORT(ATOSTR);
 }
 
+void TEST_HASHMAP_itercall_comp(void *unused, char *data)
+{
+    int temp = *((int*)(data)) / 100;
+    ASSERT_EQ_MEM(&temp, data - 4, 4);
+}
+
 void TEST_HASHMAP()
 {
     UDPC_HashMap *hm = UDPC_HashMap_init(0, sizeof(int));
@@ -312,6 +318,8 @@ void TEST_HASHMAP()
         ASSERT_EQ_MEM(UDPC_HashMap_get(hm, x), &temp, sizeof(int));
     }
 
+    UDPC_HashMap_itercall(hm, TEST_HASHMAP_itercall_comp, NULL);
+
     // TODO DEBUG
     /*
     printf("Size = %d\n", hm->size);