tests/test_list.cpp

changeset 655
7340c4255f1f
parent 654
c9d008861178
child 662
d0d95740071b
     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);

mercurial