Sat, 16 Apr 2022 22:12:47 +0200
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 +