1.1 --- a/tests/test_list.cpp Wed Feb 08 20:26:26 2023 +0100 1.2 +++ b/tests/test_list.cpp Wed Feb 15 16:48:11 2023 +0100 1.3 @@ -735,13 +735,13 @@ 1.4 result = cxListSwap(list, 16, 17); 1.5 EXPECT_NE(0, result); 1.6 1.7 - auto iter = cxListBegin(list); 1.8 + auto iter = cxListIterator(list); 1.9 cx_foreach(int*, e, iter) { 1.10 EXPECT_EQ(*e, swapped[iter.index]); 1.11 } 1.12 - // TODO: replace with backward iterator 1.13 - cx_for_n(i, 16) { 1.14 - EXPECT_EQ(*((int *) cxListAt(list, i)), swapped[i]); 1.15 + iter = cxListBackwardsIterator(list); 1.16 + cx_foreach(int*, e, iter) { 1.17 + EXPECT_EQ(*e, swapped[iter.index]); 1.18 } 1.19 } 1.20 1.21 @@ -777,16 +777,44 @@ 1.22 } 1.23 1.24 void verifyIterator(CxList *list) const { 1.25 - int i = 0; 1.26 - auto iter = cxListBeginMut(list); 1.27 + auto iter = cxListIterator(list); 1.28 + size_t i = 0; 1.29 cx_foreach(int*, x, iter) { 1.30 - ASSERT_EQ(iter.index, (size_t) (i + 1) / 2); 1.31 - ASSERT_EQ(*x, testdata.data[i]); 1.32 - if (i % 2 == 1) cxIteratorFlagRemoval(iter); 1.33 + ASSERT_EQ(i, iter.index); 1.34 + EXPECT_EQ(*x, testdata.data[iter.index]); 1.35 i++; 1.36 } 1.37 + ASSERT_EQ(i, list->size); 1.38 + iter = cxListBackwardsIterator(list); 1.39 + cx_foreach(int*, x, iter) { 1.40 + ASSERT_EQ(i - 1, iter.index); 1.41 + EXPECT_EQ(*x, testdata.data[iter.index]); 1.42 + i--; 1.43 + } 1.44 + ASSERT_EQ(i, 0); 1.45 auto len = testdata_len; 1.46 - EXPECT_EQ(i, len); 1.47 + i = len / 2; 1.48 + auto mut_iter = cxListMutIteratorAt(list, i); 1.49 + size_t j = 0; 1.50 + cx_foreach(int*, x, mut_iter) { 1.51 + ASSERT_EQ(mut_iter.index, len / 2 + j / 2); 1.52 + ASSERT_EQ(*x, testdata.data[i]); 1.53 + if (i % 2 == 1) cxIteratorFlagRemoval(mut_iter); 1.54 + i++; 1.55 + j++; 1.56 + } 1.57 + ASSERT_EQ(i, len); 1.58 + i = len / 2; 1.59 + j = 0; 1.60 + mut_iter = cxListMutBackwardsIteratorAt(list, i - 1); 1.61 + cx_foreach(int*, x, mut_iter) { 1.62 + ASSERT_EQ(mut_iter.index, len / 2 - 1 - j); 1.63 + ASSERT_EQ(*x, testdata.data[i - 1]); 1.64 + if (i % 2 == 0) cxIteratorFlagRemoval(mut_iter); 1.65 + i--; 1.66 + j++; 1.67 + } 1.68 + ASSERT_EQ(i, 0); 1.69 ASSERT_EQ(list->size, len / 2); 1.70 cx_for_n(j, len / 2) ASSERT_EQ(*(int *) cxListAt(list, j), testdata.data[j * 2]); 1.71 } 1.72 @@ -794,7 +822,7 @@ 1.73 static void verifyInsertViaIterator(CxList *list) { 1.74 int newdata[] = {10, 20, 30, 40, 50}; 1.75 1.76 - auto iter = cxListMutIterator(list, 2); 1.77 + auto iter = cxListMutIteratorAt(list, 2); 1.78 EXPECT_TRUE(cxIteratorValid(iter)); 1.79 EXPECT_EQ(iter.index, 2); 1.80 EXPECT_EQ(*(int *) cxIteratorCurrent(iter), 2); 1.81 @@ -807,16 +835,16 @@ 1.82 EXPECT_EQ(iter.index, 3); 1.83 EXPECT_EQ(*(int *) cxIteratorCurrent(iter), 2); 1.84 1.85 - iter = cxListBeginMut(list); 1.86 + iter = cxListMutIterator(list); 1.87 cxListInsertBefore(&iter, &newdata[2]); 1.88 EXPECT_TRUE(cxIteratorValid(iter)); 1.89 EXPECT_EQ(iter.index, 1); 1.90 EXPECT_EQ(*(int *) cxIteratorCurrent(iter), 0); 1.91 - iter = cxListMutIterator(list, list->size); 1.92 + iter = cxListMutIteratorAt(list, list->size); 1.93 cxListInsertBefore(&iter, &newdata[3]); 1.94 EXPECT_FALSE(cxIteratorValid(iter)); 1.95 EXPECT_EQ(iter.index, 9); 1.96 - iter = cxListMutIterator(list, list->size); 1.97 + iter = cxListMutIteratorAt(list, list->size); 1.98 cxListInsertAfter(&iter, &newdata[4]); 1.99 EXPECT_FALSE(cxIteratorValid(iter)); 1.100 EXPECT_EQ(iter.index, 10);