Blender V4.3
BLI_random_access_iterator_mixin_test.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2024 Blender Authors
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include <array>
6
7#include "testing/testing.h"
8
10#include "BLI_vector.hh"
11
13
14template<typename T>
15struct DoublingIterator : public RandomAccessIteratorMixin<DoublingIterator<T>> {
16 private:
17 const T *data_;
18
19 public:
20 DoublingIterator(const T *data) : data_(data) {}
21
22 T operator*() const
23 {
24 return *data_ * 2;
25 }
26
27 const T *const &iter_prop() const
28 {
29 return data_;
30 }
31};
32
33TEST(random_access_iterator_mixin, DoublingIterator)
34{
35 std::array<int, 4> my_array = {3, 6, 1, 2};
36
37 const DoublingIterator<int> begin = DoublingIterator<int>(&*my_array.begin());
38 const DoublingIterator<int> end = begin + my_array.size();
39
40 Vector<int> values;
41 for (DoublingIterator<int> it = begin; it != end; ++it) {
42 values.append(*it);
43 }
44
45 EXPECT_EQ(values.size(), 4);
46 EXPECT_EQ(values[0], 6);
47 EXPECT_EQ(values[1], 12);
48 EXPECT_EQ(values[2], 2);
49 EXPECT_EQ(values[3], 4);
50}
51
52} // namespace blender::iterator::tests
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
void append(const T &value)
TEST(random_access_iterator_mixin, DoublingIterator)