Blender V5.0
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
6#include "BLI_span.hh"
7#include "BLI_vector.hh"
8
9#include "testing/testing.h"
10
12
13static bool value_pass(const bool value)
14{
15 return value;
16}
17
23
25{
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
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
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
static bool value_pass(const bool value)
static int64_t first_if(Iterator begin, Iterator end, Predicate &&predicate)
static int64_t last_if(Iterator begin, Iterator end, Predicate &&predicate)