Sun, 06 Nov 2022 14:17:33 +0100
use ucx compare function in list tests
test/test_list.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/test/test_list.cpp Sat Nov 05 17:50:04 2022 +0100 1.2 +++ b/test/test_list.cpp Sun Nov 06 14:17:33 2022 +0100 1.3 @@ -28,6 +28,7 @@ 1.4 1.5 #include "cx/linked_list.h" 1.6 #include "cx/utils.h" 1.7 +#include "cx/compare.h" 1.8 #include "util_allocator.h" 1.9 1.10 #include <gtest/gtest.h> 1.11 @@ -36,16 +37,6 @@ 1.12 #include <unordered_set> 1.13 #include <algorithm> 1.14 1.15 -static int cmp_int_impl( 1.16 - int const *l, 1.17 - int const *r 1.18 -) { 1.19 - int left = *l, right = *r; 1.20 - return left == right ? 0 : (left < right ? -1 : 1); 1.21 -} 1.22 - 1.23 -#define cmp_int ((CxListComparator) cmp_int_impl) 1.24 - 1.25 struct node { 1.26 node *next = nullptr; 1.27 node *prev = nullptr; 1.28 @@ -177,17 +168,17 @@ 1.29 int s; 1.30 1.31 s = 2; 1.32 - EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cmp_int, &s), 0); 1.33 + EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 0); 1.34 s = 4; 1.35 - EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cmp_int, &s), 1); 1.36 + EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 1); 1.37 s = 6; 1.38 - EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cmp_int, &s), 2); 1.39 + EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 2); 1.40 s = 8; 1.41 - EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cmp_int, &s), 3); 1.42 + EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 3); 1.43 s = 10; 1.44 - EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cmp_int, &s), 4); 1.45 + EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 4); 1.46 s = -2; 1.47 - EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cmp_int, &s), 4); 1.48 + EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 4); 1.49 } 1.50 1.51 TEST(LinkedList_LowLevel, cx_linked_list_compare) { 1.52 @@ -196,11 +187,11 @@ 1.53 auto tc = create_nodes_test_data({2, 4, 6, 9}); 1.54 auto la = ta.begin, lb = tb.begin, lc = tc.begin; 1.55 1.56 - EXPECT_GT(cx_linked_list_compare(la, lb, loc_next, loc_data, false, false, cmp_int), 0); 1.57 - EXPECT_LT(cx_linked_list_compare(lb, la, loc_next, loc_data, false, false, cmp_int), 0); 1.58 - EXPECT_GT(cx_linked_list_compare(lc, la, loc_next, loc_data, false, false, cmp_int), 0); 1.59 - EXPECT_LT(cx_linked_list_compare(la, lc, loc_next, loc_data, false, false, cmp_int), 0); 1.60 - EXPECT_EQ(cx_linked_list_compare(la, la, loc_next, loc_data, false, false, cmp_int), 0); 1.61 + EXPECT_GT(cx_linked_list_compare(la, lb, loc_next, loc_data, false, false, cx_cmp_int), 0); 1.62 + EXPECT_LT(cx_linked_list_compare(lb, la, loc_next, loc_data, false, false, cx_cmp_int), 0); 1.63 + EXPECT_GT(cx_linked_list_compare(lc, la, loc_next, loc_data, false, false, cx_cmp_int), 0); 1.64 + EXPECT_LT(cx_linked_list_compare(la, lc, loc_next, loc_data, false, false, cx_cmp_int), 0); 1.65 + EXPECT_EQ(cx_linked_list_compare(la, la, loc_next, loc_data, false, false, cx_cmp_int), 0); 1.66 } 1.67 1.68 TEST(LinkedList_LowLevel, cx_linked_list_add) { 1.69 @@ -527,7 +518,7 @@ 1.70 void *end = cx_linked_list_last(begin, loc_next); 1.71 1.72 cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data, 1.73 - false, cmp_int); 1.74 + false, cx_cmp_int); 1.75 1.76 node *check = reinterpret_cast<node *>(begin); 1.77 node *check_last = nullptr; 1.78 @@ -555,7 +546,7 @@ 1.79 cx_linked_list_reverse(&begin, &end, loc_prev, loc_next); 1.80 EXPECT_EQ(end, orig_begin); 1.81 EXPECT_EQ(begin, orig_end); 1.82 - EXPECT_EQ(cx_linked_list_compare(begin, expected.begin, loc_next, loc_data, false, false, cmp_int), 0); 1.83 + EXPECT_EQ(cx_linked_list_compare(begin, expected.begin, loc_next, loc_data, false, false, cx_cmp_int), 0); 1.84 } 1.85 1.86 class HighLevelTest : public ::testing::Test { 1.87 @@ -580,7 +571,7 @@ 1.88 return autofree( 1.89 cxLinkedListFromArray( 1.90 &testingAllocator, 1.91 - cmp_int, 1.92 + cx_cmp_int, 1.93 sizeof(int), 1.94 testdata_len, 1.95 testdata.data.data() 1.96 @@ -589,7 +580,7 @@ 1.97 } 1.98 1.99 auto pointerLinkedListFromTestData() const -> CxList * { 1.100 - auto list = autofree(cxPointerLinkedListCreate(&testingAllocator, cmp_int)); 1.101 + auto list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int)); 1.102 cx_for_n(i, testdata_len) cxListAdd(list, &testdata.data[i]); 1.103 return list; 1.104 } 1.105 @@ -599,7 +590,7 @@ 1.106 EXPECT_EQ(list->size, 0); 1.107 EXPECT_EQ(list->capacity, (size_t) -1); 1.108 EXPECT_EQ(list->allocator, &testingAllocator); 1.109 - EXPECT_EQ(list->cmpfunc, cmp_int); 1.110 + EXPECT_EQ(list->cmpfunc, cx_cmp_int); 1.111 } 1.112 1.113 void verifyAdd( 1.114 @@ -779,41 +770,41 @@ 1.115 }; 1.116 1.117 TEST_F(LinkedList, cxLinkedListCreate) { 1.118 - CxList *list = autofree(cxLinkedListCreate(&testingAllocator, cmp_int, sizeof(int))); 1.119 + CxList *list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int))); 1.120 EXPECT_EQ(list->itemsize, sizeof(int)); 1.121 verifyCreate(list); 1.122 } 1.123 1.124 TEST_F(PointerLinkedList, cxPointerLinkedListCreate) { 1.125 - CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cmp_int)); 1.126 + CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int)); 1.127 EXPECT_EQ(list->itemsize, sizeof(void *)); 1.128 verifyCreate(list); 1.129 } 1.130 1.131 TEST_F(LinkedList, cxLinkedListFromArray) { 1.132 - CxList *expected = autofree(cxLinkedListCreate(&testingAllocator, cmp_int, sizeof(int))); 1.133 + CxList *expected = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int))); 1.134 cx_for_n (i, testdata_len) cxListAdd(expected, &testdata.data[i]); 1.135 - CxList *list = autofree(cxLinkedListFromArray(&testingAllocator, cmp_int, sizeof(int), 1.136 + CxList *list = autofree(cxLinkedListFromArray(&testingAllocator, cx_cmp_int, sizeof(int), 1.137 testdata_len, testdata.data.data())); 1.138 EXPECT_EQ(cxListCompare(list, expected), 0); 1.139 } 1.140 1.141 TEST_F(LinkedList, cxListAdd) { 1.142 - CxList *list = autofree(cxLinkedListCreate(&testingAllocator, cmp_int, sizeof(int))); 1.143 + CxList *list = autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int))); 1.144 verifyAdd(list, false); 1.145 } 1.146 1.147 TEST_F(PointerLinkedList, cxListAdd) { 1.148 - CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cmp_int)); 1.149 + CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int)); 1.150 verifyAdd(list, true); 1.151 } 1.152 1.153 TEST_F(LinkedList, cxListInsert) { 1.154 - verifyInsert(autofree(cxLinkedListCreate(&testingAllocator, cmp_int, sizeof(int)))); 1.155 + verifyInsert(autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int)))); 1.156 } 1.157 1.158 TEST_F(PointerLinkedList, cxListInsert) { 1.159 - verifyInsert(autofree(cxPointerLinkedListCreate(&testingAllocator, cmp_int))); 1.160 + verifyInsert(autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int))); 1.161 } 1.162 1.163 TEST_F(LinkedList, cxListRemove) { 1.164 @@ -858,13 +849,13 @@ 1.165 1.166 TEST_F(LinkedList, InsertViaIterator) { 1.167 int fivenums[] = {0, 1, 2, 3, 4, 5}; 1.168 - CxList *list = autofree(cxLinkedListFromArray(&testingAllocator, cmp_int, sizeof(int), 5, fivenums)); 1.169 + CxList *list = autofree(cxLinkedListFromArray(&testingAllocator, cx_cmp_int, sizeof(int), 5, fivenums)); 1.170 verifyInsertViaIterator(list); 1.171 } 1.172 1.173 TEST_F(PointerLinkedList, InsertViaIterator) { 1.174 int fivenums[] = {0, 1, 2, 3, 4, 5}; 1.175 - CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cmp_int)); 1.176 + CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int)); 1.177 cx_for_n (i, 5) cxListAdd(list, &fivenums[i]); 1.178 verifyInsertViaIterator(list); 1.179 } 1.180 @@ -903,7 +894,7 @@ 1.181 1.182 TEST_F(PointerLinkedList, NoDestructor) { 1.183 void *item = cxMalloc(&testingAllocator, sizeof(int)); 1.184 - auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cmp_int); 1.185 + auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cx_cmp_int); 1.186 cxListAdd(list, item); 1.187 ASSERT_FALSE(testingAllocator.verify()); 1.188 cxListDestroy(list); 1.189 @@ -914,7 +905,7 @@ 1.190 1.191 TEST_F(PointerLinkedList, SimpleDestructor) { 1.192 int item = 0; 1.193 - auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cmp_int); 1.194 + auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cx_cmp_int); 1.195 list->content_destructor_type = CX_DESTRUCTOR_SIMPLE; 1.196 list->simple_destructor = [](void *elem) { *(int *) elem = 42; }; 1.197 cxListAdd(list, &item); 1.198 @@ -924,7 +915,7 @@ 1.199 1.200 TEST_F(PointerLinkedList, AdvancedDestructor) { 1.201 void *item = cxMalloc(&testingAllocator, sizeof(int)); 1.202 - auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cmp_int); 1.203 + auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cx_cmp_int); 1.204 list->content_destructor_type = CX_DESTRUCTOR_ADVANCED; 1.205 list->advanced_destructor.data = &testingAllocator; 1.206 list->advanced_destructor.func = (cx_destructor_func2) cxFree;