Blender V4.3
BLI_generic_span_test.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "testing/testing.h"
6
7#include "BLI_generic_span.hh"
8
9namespace blender::tests {
10
11TEST(generic_span, TypeConstructor)
12{
14 EXPECT_EQ(span.size(), 0);
15 EXPECT_EQ(span.typed<float>().size(), 0);
16 EXPECT_TRUE(span.is_empty());
17}
18
19TEST(generic_span, BufferAndSizeConstructor)
20{
21 int values[4] = {6, 7, 3, 2};
22 void *buffer = (void *)values;
23 GSpan span(CPPType::get<int32_t>(), buffer, 4);
24 EXPECT_EQ(span.size(), 4);
25 EXPECT_FALSE(span.is_empty());
26 EXPECT_EQ(span.typed<int>().size(), 4);
27 EXPECT_EQ(span[0], &values[0]);
28 EXPECT_EQ(span[1], &values[1]);
29 EXPECT_EQ(span[2], &values[2]);
30 EXPECT_EQ(span[3], &values[3]);
31}
32
33TEST(generic_mutable_span, TypeConstructor)
34{
36 EXPECT_EQ(span.size(), 0);
37 EXPECT_TRUE(span.is_empty());
38}
39
40TEST(generic_mutable_span, BufferAndSizeConstructor)
41{
42 int values[4] = {4, 7, 3, 5};
43 void *buffer = (void *)values;
44 GMutableSpan span(CPPType::get<int32_t>(), buffer, 4);
45 EXPECT_EQ(span.size(), 4);
46 EXPECT_FALSE(span.is_empty());
47 EXPECT_EQ(span.typed<int>().size(), 4);
48 EXPECT_EQ(values[2], 3);
49 *(int *)span[2] = 10;
50 EXPECT_EQ(values[2], 10);
51 span.typed<int>()[2] = 20;
52 EXPECT_EQ(values[2], 20);
53}
54
55} // namespace blender::tests
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
static const CPPType & get()
MutableSpan< T > typed() const
Span< T > typed() const
bool is_empty() const
int64_t size() const
TEST(any, DefaultConstructor)