add test for cxListCompare

Sat, 16 Apr 2022 22:12:47 +0200

author
Mike Becker <universe@uap-core.de>
date
Sat, 16 Apr 2022 22:12:47 +0200
changeset 521
e5dc54131d55
parent 520
f937c6d11d1f
child 522
b91c50d023f4

add test for cxListCompare

Also increases size for low level sort test in order to
exceed the SBO limit.

src/linked_list.c file | annotate | diff | comparison | revisions
test/test_list.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/linked_list.c	Sat Apr 16 21:12:02 2022 +0200
     1.2 +++ b/src/linked_list.c	Sat Apr 16 22:12:47 2022 +0200
     1.3 @@ -625,7 +625,7 @@
     1.4  
     1.5  static void cx_ll_reverse(struct cx_list_s *list) {
     1.6      cx_linked_list *ll = (cx_linked_list *) list;
     1.7 -    cx_linked_list_reverse((void **) &ll->begin, (void **) ll->end, CX_LL_LOC_PREV, CX_LL_LOC_NEXT);
     1.8 +    cx_linked_list_reverse((void **) &ll->begin, (void **) &ll->end, CX_LL_LOC_PREV, CX_LL_LOC_NEXT);
     1.9  }
    1.10  
    1.11  static int cx_ll_compare(
     2.1 --- a/test/test_list.cpp	Sat Apr 16 21:12:02 2022 +0200
     2.2 +++ b/test/test_list.cpp	Sat Apr 16 22:12:47 2022 +0200
     2.3 @@ -515,8 +515,8 @@
     2.4  }
     2.5  
     2.6  TEST(LinkedList_LowLevel, cx_linked_list_sort) {
     2.7 -    int_test_data<1000> testdata;
     2.8 -    std::array<int, 1000> sorted{};
     2.9 +    int_test_data<1500> testdata;
    2.10 +    std::array<int, 1500> sorted{};
    2.11      std::partial_sort_copy(testdata.data.begin(), testdata.data.end(), sorted.begin(), sorted.end());
    2.12  
    2.13      auto scrambled = create_nodes_test_data(testdata.data.begin(), testdata.data.end());
    2.14 @@ -657,7 +657,9 @@
    2.15      void verifyAt(CxList *list) const {
    2.16          auto len = testdata_len;
    2.17          EXPECT_EQ(list->size, len);
    2.18 -        cx_for_n (i, list->size) EXPECT_EQ(*(int *) cxListAt(list, i), testdata.data[i]);
    2.19 +        cx_for_n (i, len) {
    2.20 +            EXPECT_EQ(*(int *) cxListAt(list, i), testdata.data[i]);
    2.21 +        }
    2.22          EXPECT_EQ(cxListAt(list, list->size), nullptr);
    2.23      }
    2.24  
    2.25 @@ -731,6 +733,33 @@
    2.26          int expdata[] = {30, 0, 1, 20, 2, 10, 3, 4, 40, 50};
    2.27          cx_for_n (j, 10) EXPECT_EQ(*(int *) cxListAt(list, j), expdata[j]);
    2.28      }
    2.29 +
    2.30 +    void verifyReverse(CxList *list) const {
    2.31 +        cxListReverse(list);
    2.32 +        cx_for_n(i, testdata_len) {
    2.33 +            ASSERT_EQ(*(int *) cxListAt(list, i), testdata.data[testdata_len - 1 - i]);
    2.34 +        }
    2.35 +    }
    2.36 +
    2.37 +    static void verifyCompare(CxList *left, CxList *right) {
    2.38 +        EXPECT_EQ(cxListCompare(left, right), 0);
    2.39 +        int x = 42;
    2.40 +        cxListAdd(left, &x);
    2.41 +        ASSERT_GT(left->size, right->size);
    2.42 +        EXPECT_GT(cxListCompare(left, right), 0);
    2.43 +        EXPECT_LT(cxListCompare(right, left), 0);
    2.44 +        cxListAdd(right, &x);
    2.45 +        ASSERT_EQ(left->size, right->size);
    2.46 +        EXPECT_EQ(cxListCompare(left, right), 0);
    2.47 +        int a = 5, b = 10;
    2.48 +        cxListInsert(left, 15, &a);
    2.49 +        cxListInsert(right, 15, &b);
    2.50 +        ASSERT_EQ(left->size, right->size);
    2.51 +        EXPECT_LT(cxListCompare(left, right), 0);
    2.52 +        EXPECT_GT(cxListCompare(right, left), 0);
    2.53 +        *(int*)cxListAt(left, 15) = 10;
    2.54 +        EXPECT_EQ(cxListCompare(left, right), 0);
    2.55 +    }
    2.56  };
    2.57  
    2.58  class LinkedList : public HighLevelTest {
    2.59 @@ -829,3 +858,24 @@
    2.60      cx_for_n (i, 5) cxListAdd(list, &fivenums[i]);
    2.61      verifyInsertViaIterator(list);
    2.62  }
    2.63 +
    2.64 +TEST_F(LinkedList, cxListReverse) {
    2.65 +    verifyReverse(linkedListFromTestData());
    2.66 +}
    2.67 +
    2.68 +TEST_F(PointerLinkedList, cxListReverse) {
    2.69 +    verifyReverse(pointerLinkedListFromTestData());
    2.70 +}
    2.71 +
    2.72 +TEST_F(LinkedList, cxListCompare) {
    2.73 +    auto left = linkedListFromTestData();
    2.74 +    auto right = linkedListFromTestData();
    2.75 +    verifyCompare(left, right);
    2.76 +}
    2.77 +
    2.78 +TEST_F(PointerLinkedList, cxListCompare) {
    2.79 +    auto left = pointerLinkedListFromTestData();
    2.80 +    auto right = pointerLinkedListFromTestData();
    2.81 +    verifyCompare(left, right);
    2.82 +}
    2.83 +

mercurial