Blender
V5.0
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
begin
iter begin(iter)
data
BMesh const char void * data
Definition
bmesh_iterators_inline.hh:37
blender::Vector
Definition
BLI_vector.hh:76
blender::Vector::size
int64_t size() const
Definition
BLI_vector.hh:771
blender::Vector::append
void append(const T &value)
Definition
BLI_vector.hh:489
blender::iterator::RandomAccessIteratorMixin
Definition
BLI_random_access_iterator_mixin.hh:27
T
#define T
Definition
mball_tessellate.cc:274
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
for Blender by
doxygen
1.16.1