Blender
V5.0
source
blender
blenlib
tests
BLI_binary_search_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 "
BLI_binary_search.hh
"
6
#include "
BLI_span.hh
"
7
#include "
BLI_vector.hh
"
8
9
#include "testing/testing.h"
10
11
namespace
blender::binary_search::tests
{
12
13
static
bool
value_pass
(
const
bool
value)
14
{
15
return
value;
16
}
17
18
TEST
(
binary_search
, Empty)
19
{
20
EXPECT_EQ
(
first_if
(
Span<bool>
{},
value_pass
), 0);
21
EXPECT_EQ
(
last_if
(
Span<bool>
{},
value_pass
), -1);
22
}
23
24
TEST
(
binary_search
, One)
25
{
26
EXPECT_EQ
(
first_if
(
Span
{
true
},
value_pass
), 0);
27
EXPECT_EQ
(
last_if
(
Span
{
true
},
value_pass
), 0);
28
29
EXPECT_EQ
(
first_if
(
Span
{
false
},
value_pass
), 1);
30
EXPECT_EQ
(
last_if
(
Span
{
false
},
value_pass
), -1);
31
}
32
33
TEST
(
binary_search
, Multiple)
34
{
35
EXPECT_EQ
(
first_if
(
Span
{
true
,
true
,
true
,
true
,
true
,
true
},
value_pass
), 0);
36
EXPECT_EQ
(
first_if
(
Span
{
false
,
true
,
true
,
true
,
true
,
true
},
value_pass
), 1);
37
EXPECT_EQ
(
first_if
(
Span
{
false
,
false
,
true
,
true
,
true
,
true
},
value_pass
), 2);
38
EXPECT_EQ
(
first_if
(
Span
{
false
,
false
,
false
,
true
,
true
,
true
},
value_pass
), 3);
39
EXPECT_EQ
(
first_if
(
Span
{
false
,
false
,
false
,
false
,
true
,
true
},
value_pass
), 4);
40
EXPECT_EQ
(
first_if
(
Span
{
false
,
false
,
false
,
false
,
false
,
true
},
value_pass
), 5);
41
EXPECT_EQ
(
first_if
(
Span
{
false
,
false
,
false
,
false
,
false
,
false
},
value_pass
), 6);
42
43
EXPECT_EQ
(
last_if
(
Span
{
false
,
false
,
false
,
false
,
false
,
false
},
value_pass
), -1);
44
EXPECT_EQ
(
last_if
(
Span
{
true
,
false
,
false
,
false
,
false
,
false
},
value_pass
), 0);
45
EXPECT_EQ
(
last_if
(
Span
{
true
,
true
,
false
,
false
,
false
,
false
},
value_pass
), 1);
46
EXPECT_EQ
(
last_if
(
Span
{
true
,
true
,
true
,
false
,
false
,
false
},
value_pass
), 2);
47
EXPECT_EQ
(
last_if
(
Span
{
true
,
true
,
true
,
true
,
false
,
false
},
value_pass
), 3);
48
EXPECT_EQ
(
last_if
(
Span
{
true
,
true
,
true
,
true
,
true
,
false
},
value_pass
), 4);
49
EXPECT_EQ
(
last_if
(
Span
{
true
,
true
,
true
,
true
,
true
,
true
},
value_pass
), 5);
50
}
51
52
}
// namespace blender::binary_search::tests
BLI_binary_search.hh
EXPECT_EQ
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
BLI_span.hh
BLI_vector.hh
blender::Span
Definition
BLI_span.hh:74
blender::binary_search::tests
Definition
BLI_binary_search_test.cc:11
blender::binary_search::tests::TEST
TEST(binary_search, Empty)
Definition
BLI_binary_search_test.cc:18
blender::binary_search::tests::value_pass
static bool value_pass(const bool value)
Definition
BLI_binary_search_test.cc:13
blender::binary_search
Definition
BLI_binary_search.hh:13
blender::binary_search::first_if
static int64_t first_if(Iterator begin, Iterator end, Predicate &&predicate)
Definition
BLI_binary_search.hh:21
blender::binary_search::last_if
static int64_t last_if(Iterator begin, Iterator end, Predicate &&predicate)
Definition
BLI_binary_search.hh:35
Generated on
for Blender by
doxygen
1.16.1