Blender
V4.3
source
blender
blenlib
tests
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
9
#include "
BLI_random_access_iterator_mixin.hh
"
10
#include "
BLI_vector.hh
"
11
12
namespace
blender::iterator::tests
{
13
14
template
<
typename
T>
15
struct
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
33
TEST
(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
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
BLI_random_access_iterator_mixin.hh
BLI_vector.hh
blender::Vector
Definition
BLI_vector.hh:65
blender::Vector::append
void append(const T &value)
Definition
BLI_vector.hh:430
blender::iterator::RandomAccessIteratorMixin
Definition
BLI_random_access_iterator_mixin.hh:23
blender::iterator::tests
Definition
BLI_random_access_iterator_mixin_test.cc:12
blender::iterator::tests::TEST
TEST(random_access_iterator_mixin, DoublingIterator)
Definition
BLI_random_access_iterator_mixin_test.cc:33
blender::iterator::tests::DoublingIterator
Definition
BLI_random_access_iterator_mixin_test.cc:15
blender::iterator::tests::DoublingIterator::operator*
T operator*() const
Definition
BLI_random_access_iterator_mixin_test.cc:22
blender::iterator::tests::DoublingIterator::iter_prop
const T *const & iter_prop() const
Definition
BLI_random_access_iterator_mixin_test.cc:27
blender::iterator::tests::DoublingIterator::DoublingIterator
DoublingIterator(const T *data)
Definition
BLI_random_access_iterator_mixin_test.cc:20
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0