Blender
V5.0
source
blender
blenlib
tests
BLI_array_state_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 "testing/testing.h"
6
7
#include "
BLI_array_state.hh
"
8
9
namespace
blender::tests
{
10
11
TEST
(array_state, Empty)
12
{
13
ArrayState<int>
state
{};
14
EXPECT_TRUE(
state
.is_empty());
15
EXPECT_TRUE(
state
.same_as({},
nullptr
));
16
EXPECT_FALSE(
state
.same_as(
VArray<int>::from_span
({3, 4}),
nullptr
));
17
}
18
19
TEST
(array_state, NoSharing)
20
{
21
ArrayState<int>
state
{
VArray<int>::from_span
({1, 2, 3}),
nullptr
};
22
EXPECT_FALSE(
state
.is_empty());
23
EXPECT_TRUE(
state
.same_as(
VArray<int>::from_span
({1, 2, 3}),
nullptr
));
24
EXPECT_FALSE(
state
.same_as(
VArray<int>::from_span
({1, 2, 4}),
nullptr
));
25
EXPECT_FALSE(
state
.same_as(
VArray<int>::from_span
({1, 2, 3, 4}),
nullptr
));
26
}
27
28
TEST
(array_state, WithSharing)
29
{
30
int
*
data
=
MEM_calloc_arrayN<int>
(3, __func__);
31
data
[0] = 0;
32
data
[1] = 10;
33
data
[2] = 20;
34
ImplicitSharingPtr
sharing_info{
implicit_sharing::info_for_mem_free
(
data
)};
35
36
ArrayState<int>
state
{
VArray<int>::from_span
({
data
, 3}), sharing_info.
get
()};
37
EXPECT_FALSE(
state
.is_empty());
38
EXPECT_TRUE(
state
.same_as(
VArray<int>::from_span
({data, 3}), sharing_info.
get
()));
39
EXPECT_TRUE(
state
.same_as(
VArray<int>::from_span
({0, 10, 20}),
nullptr
));
40
EXPECT_FALSE(
state
.same_as(
VArray<int>::from_span
({0, 1, 2}),
nullptr
));
41
}
42
43
TEST
(array_state, DifferentSharingInfoButSameData)
44
{
45
int
*data1 =
MEM_calloc_arrayN<int>
(3, __func__);
46
data1[0] = 0;
47
data1[1] = 10;
48
data1[2] = 20;
49
ImplicitSharingPtr
sharing_info1{
implicit_sharing::info_for_mem_free
(data1)};
50
51
int
*data2 =
MEM_calloc_arrayN<int>
(3, __func__);
52
data2[0] = 0;
53
data2[1] = 10;
54
data2[2] = 20;
55
ImplicitSharingPtr
sharing_info2{
implicit_sharing::info_for_mem_free
(data2)};
56
57
ArrayState<int>
state
{
VArray<int>::from_span
({data1, 3}), sharing_info1.
get
()};
58
EXPECT_TRUE(
state
.same_as(
VArray<int>::from_span
({data2, 3}), sharing_info2.
get
()));
59
}
60
61
}
// namespace blender::tests
BLI_array_state.hh
data
BMesh const char void * data
Definition
bmesh_iterators_inline.hh:37
blender::ArrayState
Definition
BLI_array_state.hh:27
blender::ImplicitSharingPtr
Definition
BLI_implicit_sharing_ptr.hh:24
blender::ImplicitSharingPtr::get
const T * get() const
Definition
BLI_implicit_sharing_ptr.hh:94
blender::VArray::from_span
static VArray from_span(Span< T > values)
Definition
BLI_virtual_array.hh:903
MEM_calloc_arrayN
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
Definition
mallocn.cc:123
state
static ulong state[N]
Definition
mathutils_noise.cc:56
blender::implicit_sharing::info_for_mem_free
const ImplicitSharingInfo * info_for_mem_free(void *data)
Definition
implicit_sharing.cc:35
blender::tests
Definition
BLF_tests.cc:9
blender::tests::TEST
TEST(blf_load, load)
Definition
BLF_tests.cc:34
Generated on
for Blender by
doxygen
1.16.1