test/test_list.cpp

changeset 639
309e8b08c60e
parent 638
eafb45eefc51
child 641
d402fead3386
     1.1 --- a/test/test_list.cpp	Mon Jan 23 20:22:11 2023 +0100
     1.2 +++ b/test/test_list.cpp	Mon Jan 23 20:34:18 2023 +0100
     1.3 @@ -169,17 +169,17 @@
     1.4      int s;
     1.5  
     1.6      s = 2;
     1.7 -    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 0);
     1.8 +    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s), 0);
     1.9      s = 4;
    1.10 -    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 1);
    1.11 +    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s), 1);
    1.12      s = 6;
    1.13 -    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 2);
    1.14 +    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s), 2);
    1.15      s = 8;
    1.16 -    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 3);
    1.17 +    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s), 3);
    1.18      s = 10;
    1.19 -    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 4);
    1.20 +    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s), 4);
    1.21      s = -2;
    1.22 -    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, false, cx_cmp_int, &s), 4);
    1.23 +    EXPECT_EQ(cx_linked_list_find(list, loc_next, loc_data, cx_cmp_int, &s), 4);
    1.24  }
    1.25  
    1.26  TEST(LinkedList_LowLevel, cx_linked_list_compare) {
    1.27 @@ -188,11 +188,11 @@
    1.28      auto tc = create_nodes_test_data({2, 4, 6, 9});
    1.29      auto la = ta.begin, lb = tb.begin, lc = tc.begin;
    1.30  
    1.31 -    EXPECT_GT(cx_linked_list_compare(la, lb, loc_next, loc_data, false, false, cx_cmp_int), 0);
    1.32 -    EXPECT_LT(cx_linked_list_compare(lb, la, loc_next, loc_data, false, false, cx_cmp_int), 0);
    1.33 -    EXPECT_GT(cx_linked_list_compare(lc, la, loc_next, loc_data, false, false, cx_cmp_int), 0);
    1.34 -    EXPECT_LT(cx_linked_list_compare(la, lc, loc_next, loc_data, false, false, cx_cmp_int), 0);
    1.35 -    EXPECT_EQ(cx_linked_list_compare(la, la, loc_next, loc_data, false, false, cx_cmp_int), 0);
    1.36 +    EXPECT_GT(cx_linked_list_compare(la, lb, loc_next, loc_data, cx_cmp_int), 0);
    1.37 +    EXPECT_LT(cx_linked_list_compare(lb, la, loc_next, loc_data, cx_cmp_int), 0);
    1.38 +    EXPECT_GT(cx_linked_list_compare(lc, la, loc_next, loc_data, cx_cmp_int), 0);
    1.39 +    EXPECT_LT(cx_linked_list_compare(la, lc, loc_next, loc_data, cx_cmp_int), 0);
    1.40 +    EXPECT_EQ(cx_linked_list_compare(la, la, loc_next, loc_data, cx_cmp_int), 0);
    1.41  }
    1.42  
    1.43  TEST(LinkedList_LowLevel, cx_linked_list_add) {
    1.44 @@ -518,8 +518,7 @@
    1.45      void *begin = scrambled.begin;
    1.46      void *end = cx_linked_list_last(begin, loc_next);
    1.47  
    1.48 -    cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data,
    1.49 -                        false, cx_cmp_int);
    1.50 +    cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data, cx_cmp_int);
    1.51  
    1.52      node *check = reinterpret_cast<node *>(begin);
    1.53      node *check_last = nullptr;
    1.54 @@ -547,7 +546,7 @@
    1.55      cx_linked_list_reverse(&begin, &end, loc_prev, loc_next);
    1.56      EXPECT_EQ(end, orig_begin);
    1.57      EXPECT_EQ(begin, orig_end);
    1.58 -    EXPECT_EQ(cx_linked_list_compare(begin, expected.begin, loc_next, loc_data, false, false, cx_cmp_int), 0);
    1.59 +    EXPECT_EQ(cx_linked_list_compare(begin, expected.begin, loc_next, loc_data, cx_cmp_int), 0);
    1.60  }
    1.61  
    1.62  class HighLevelTest : public ::testing::Test {
    1.63 @@ -574,13 +573,6 @@
    1.64          return list;
    1.65      }
    1.66  
    1.67 -    auto pointerLinkedListFromTestData() const -> CxList * {
    1.68 -        auto list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int));
    1.69 -        // note: cannot use cxListAddArray() because we don't have a list of pointers
    1.70 -        cx_for_n(i, testdata_len) cxListAdd(list, &testdata.data[i]);
    1.71 -        return list;
    1.72 -    }
    1.73 -
    1.74      auto arrayListFromTestData() const -> CxList * {
    1.75          auto list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), testdata_len));
    1.76          cxListAddArray(list, testdata.data.data(), testdata_len);
    1.77 @@ -795,9 +787,6 @@
    1.78  class LinkedList : public HighLevelTest {
    1.79  };
    1.80  
    1.81 -class PointerLinkedList : public HighLevelTest {
    1.82 -};
    1.83 -
    1.84  class ArrayList : public HighLevelTest {
    1.85  };
    1.86  
    1.87 @@ -809,14 +798,6 @@
    1.88      verifyCreate(list);
    1.89  }
    1.90  
    1.91 -TEST_F(PointerLinkedList, cxPointerLinkedListCreate) {
    1.92 -    CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int));
    1.93 -    ASSERT_NE(list, nullptr);
    1.94 -    EXPECT_EQ(list->itemsize, sizeof(void *));
    1.95 -    EXPECT_EQ(list->capacity, (size_t) -1);
    1.96 -    verifyCreate(list);
    1.97 -}
    1.98 -
    1.99  TEST_F(ArrayList, cxArrayListCreate) {
   1.100      CxList *list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 8));
   1.101      ASSERT_NE(list, nullptr);
   1.102 @@ -830,11 +811,6 @@
   1.103      verifyAdd(list, false);
   1.104  }
   1.105  
   1.106 -TEST_F(PointerLinkedList, cxListAdd) {
   1.107 -    CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int));
   1.108 -    verifyAdd(list, true);
   1.109 -}
   1.110 -
   1.111  TEST_F(ArrayList, cxListAdd) {
   1.112      CxList *list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 8));
   1.113      verifyAdd(list, false);
   1.114 @@ -844,10 +820,6 @@
   1.115      verifyInsert(autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int))));
   1.116  }
   1.117  
   1.118 -TEST_F(PointerLinkedList, cxListInsert) {
   1.119 -    verifyInsert(autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int)));
   1.120 -}
   1.121 -
   1.122  TEST_F(ArrayList, cxListInsert) {
   1.123      verifyInsert(autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 2)));
   1.124  }
   1.125 @@ -856,11 +828,6 @@
   1.126      verifyInsertArray(autofree(cxLinkedListCreate(&testingAllocator, cx_cmp_int, sizeof(int))));
   1.127  }
   1.128  
   1.129 -TEST_F(PointerLinkedList, cxListInsertArray) {
   1.130 -    //TODO: this is unfixably broken - solve with issue #234
   1.131 -    //verifyInsertArray(autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int)));
   1.132 -}
   1.133 -
   1.134  TEST_F(ArrayList, cxListInsertArray) {
   1.135      verifyInsertArray(autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 4)));
   1.136  }
   1.137 @@ -869,10 +836,6 @@
   1.138      verifyRemove(linkedListFromTestData());
   1.139  }
   1.140  
   1.141 -TEST_F(PointerLinkedList, cxListRemove) {
   1.142 -    verifyRemove(pointerLinkedListFromTestData());
   1.143 -}
   1.144 -
   1.145  TEST_F(ArrayList, cxListRemove) {
   1.146      verifyRemove(arrayListFromTestData());
   1.147  }
   1.148 @@ -881,10 +844,6 @@
   1.149      verifyAt(linkedListFromTestData());
   1.150  }
   1.151  
   1.152 -TEST_F(PointerLinkedList, cxListAt) {
   1.153 -    verifyAt(pointerLinkedListFromTestData());
   1.154 -}
   1.155 -
   1.156  TEST_F(ArrayList, cxListAt) {
   1.157      verifyAt(arrayListFromTestData());
   1.158  }
   1.159 @@ -893,10 +852,6 @@
   1.160      verifyFind(linkedListFromTestData());
   1.161  }
   1.162  
   1.163 -TEST_F(PointerLinkedList, cxListFind) {
   1.164 -    verifyFind(pointerLinkedListFromTestData());
   1.165 -}
   1.166 -
   1.167  TEST_F(ArrayList, cxListFind) {
   1.168      verifyFind(arrayListFromTestData());
   1.169  }
   1.170 @@ -905,10 +860,6 @@
   1.171      verifySort(linkedListFromTestData());
   1.172  }
   1.173  
   1.174 -TEST_F(PointerLinkedList, cxListSort) {
   1.175 -    verifySort(pointerLinkedListFromTestData());
   1.176 -}
   1.177 -
   1.178  TEST_F(ArrayList, cxListSort) {
   1.179      verifySort(arrayListFromTestData());
   1.180  }
   1.181 @@ -917,10 +868,6 @@
   1.182      verifyIterator(linkedListFromTestData());
   1.183  }
   1.184  
   1.185 -TEST_F(PointerLinkedList, Iterator) {
   1.186 -    verifyIterator(pointerLinkedListFromTestData());
   1.187 -}
   1.188 -
   1.189  TEST_F(ArrayList, Iterator) {
   1.190      verifyIterator(arrayListFromTestData());
   1.191  }
   1.192 @@ -932,14 +879,6 @@
   1.193      verifyInsertViaIterator(list);
   1.194  }
   1.195  
   1.196 -TEST_F(PointerLinkedList, InsertViaIterator) {
   1.197 -    int fivenums[] = {0, 1, 2, 3, 4, 5};
   1.198 -    CxList *list = autofree(cxPointerLinkedListCreate(&testingAllocator, cx_cmp_int));
   1.199 -    // note: don't use cxListAddArray() here, because we don't have a list of pointers
   1.200 -    cx_for_n (i, 5) cxListAdd(list, &fivenums[i]);
   1.201 -    verifyInsertViaIterator(list);
   1.202 -}
   1.203 -
   1.204  TEST_F(ArrayList, InsertViaIterator) {
   1.205      int fivenums[] = {0, 1, 2, 3, 4, 5};
   1.206      CxList *list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 4));
   1.207 @@ -951,10 +890,6 @@
   1.208      verifyReverse(linkedListFromTestData());
   1.209  }
   1.210  
   1.211 -TEST_F(PointerLinkedList, cxListReverse) {
   1.212 -    verifyReverse(pointerLinkedListFromTestData());
   1.213 -}
   1.214 -
   1.215  TEST_F(ArrayList, cxListReverse) {
   1.216      verifyReverse(arrayListFromTestData());
   1.217  }
   1.218 @@ -965,83 +900,20 @@
   1.219      verifyCompare(left, right);
   1.220  }
   1.221  
   1.222 -TEST_F(LinkedList, cxListCompareWithPtrList) {
   1.223 -    auto left = linkedListFromTestData();
   1.224 -    auto right = pointerLinkedListFromTestData();
   1.225 -    verifyCompare(left, right);
   1.226 -}
   1.227 -
   1.228  TEST_F(LinkedList, cxListCompareWithArrayList) {
   1.229      auto left = linkedListFromTestData();
   1.230      auto right = arrayListFromTestData();
   1.231      verifyCompare(left, right);
   1.232  }
   1.233  
   1.234 -TEST_F(PointerLinkedList, cxListCompare) {
   1.235 -    auto left = pointerLinkedListFromTestData();
   1.236 -    auto right = pointerLinkedListFromTestData();
   1.237 -    verifyCompare(left, right);
   1.238 -}
   1.239 -
   1.240 -TEST_F(PointerLinkedList, cxListCompareWithNormalList) {
   1.241 -    auto left = pointerLinkedListFromTestData();
   1.242 -    auto right = linkedListFromTestData();
   1.243 -    verifyCompare(left, right);
   1.244 -}
   1.245 -
   1.246 -TEST_F(PointerLinkedList, cxListCompareWithArrayList) {
   1.247 -    auto left = pointerLinkedListFromTestData();
   1.248 -    auto right = arrayListFromTestData();
   1.249 -    verifyCompare(left, right);
   1.250 -}
   1.251 -
   1.252  TEST_F(ArrayList, cxListCompare) {
   1.253      auto left = arrayListFromTestData();
   1.254      auto right = arrayListFromTestData();
   1.255      verifyCompare(left, right);
   1.256  }
   1.257  
   1.258 -TEST_F(ArrayList, cxListCompareWithPtrList) {
   1.259 -    auto left = arrayListFromTestData();
   1.260 -    auto right = pointerLinkedListFromTestData();
   1.261 -    verifyCompare(left, right);
   1.262 -}
   1.263 -
   1.264 -TEST_F(ArrayList, cxListCompareWithNormalList) {
   1.265 +TEST_F(ArrayList, cxListCompareWithLinkedList) {
   1.266      auto left = arrayListFromTestData();
   1.267      auto right = linkedListFromTestData();
   1.268      verifyCompare(left, right);
   1.269  }
   1.270 -
   1.271 -TEST_F(PointerLinkedList, NoDestructor) {
   1.272 -    void *item = cxMalloc(&testingAllocator, sizeof(int));
   1.273 -    auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cx_cmp_int);
   1.274 -    cxListAdd(list, item);
   1.275 -    ASSERT_FALSE(testingAllocator.verify());
   1.276 -    cxListDestroy(list);
   1.277 -    EXPECT_FALSE(testingAllocator.verify());
   1.278 -    cxFree(&testingAllocator, item);
   1.279 -    EXPECT_TRUE(testingAllocator.verify());
   1.280 -}
   1.281 -
   1.282 -TEST_F(PointerLinkedList, SimpleDestructor) {
   1.283 -    int item = 0;
   1.284 -    auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cx_cmp_int);
   1.285 -    list->content_destructor_type = CX_DESTRUCTOR_SIMPLE;
   1.286 -    list->simple_destructor = [](void *elem) { *(int *) elem = 42; };
   1.287 -    cxListAdd(list, &item);
   1.288 -    cxListDestroy(list);
   1.289 -    EXPECT_EQ(item, 42);
   1.290 -}
   1.291 -
   1.292 -TEST_F(PointerLinkedList, AdvancedDestructor) {
   1.293 -    void *item = cxMalloc(&testingAllocator, sizeof(int));
   1.294 -    auto list = cxPointerLinkedListCreate(cxDefaultAllocator, cx_cmp_int);
   1.295 -    list->content_destructor_type = CX_DESTRUCTOR_ADVANCED;
   1.296 -    list->advanced_destructor.data = &testingAllocator;
   1.297 -    list->advanced_destructor.func = (cx_destructor_func2) cxFree;
   1.298 -    cxListAdd(list, item);
   1.299 -    ASSERT_FALSE(testingAllocator.verify());
   1.300 -    cxListDestroy(list);
   1.301 -    EXPECT_TRUE(testingAllocator.verify());
   1.302 -}

mercurial