7#include "testing/testing.h"
33 char *
ptr = &(*vec)[0];
36 const char magic = 42;
68 std::array<float, 5> values = {5.4f, 7.3f, -8.1f, 5.0f, 0.0f};
107 std::forward_list<int> list;
140 EXPECT_NE(vec1.
data(), vec2.
data());
154 EXPECT_NE(vec1.
data(), vec2.
data());
165 EXPECT_NE(vec1.
data(), vec2.
data());
299 std::forward_list<int> list = {8, 9};
300 vec.
extend(list.begin(), list.end());
302 EXPECT_EQ_SPAN<int>(vec,
Span({3, 4, 5, 8, 9}));
309 for (
int value : vec) {
318 for (
int i = 0;
i < 100;
i++) {
322 for (
int i = 0;
i < 100;
i++) {
432 EXPECT_EQ_SPAN<int>(vec, expected_vec);
442 vec.
remove_if([&](
const auto & ) {
return true; });
461 int array[] = {3, 4, 5, 6};
491 EXPECT_TRUE(
b.is_empty());
499 a.
append(std::make_unique<int>(0));
500 a.
append(std::make_unique<int>(1));
501 a.
append(std::make_unique<int>(2));
503 for (std::unique_ptr<int> &
i : a) {
508 b.append(std::make_unique<int>(7));
509 b.append(std::make_unique<int>(8));
510 b.append(std::make_unique<int>(9));
511 b.append(std::make_unique<int>(20));
513 for (std::unique_ptr<int> &
i :
b) {
517 ASSERT_EQ(a.
size(), 3);
518 ASSERT_EQ(
b.size(), 4);
522 std::array<int, 7> values = {0, 1, 2, 7, 8, 9, 20};
524 ASSERT_EQ(
size_t(a.
size()), values.size());
525 ASSERT_TRUE(
b.is_empty());
526 ASSERT_EQ(a.
size(), ptr_vec.
size());
529 ASSERT_EQ(*a[
i], values[
size_t(
i)]);
530 ASSERT_EQ(a[
i].get(), ptr_vec[
i]);
559 vec.
append(std::make_unique<int>());
560 vec.
append(std::make_unique<int>());
561 vec.
append(std::make_unique<int>());
562 vec.
append(std::make_unique<int>());
565 std::unique_ptr<int> &a = vec.
last();
575class TypeConstructMock {
591 if (
this == &other) {
601 if (
this == &other) {
613 EXPECT_TRUE(vec[0].default_constructed);
614 EXPECT_TRUE(vec[1].default_constructed);
615 EXPECT_TRUE(vec[2].default_constructed);
621 EXPECT_TRUE(vec[0].copy_constructed);
622 EXPECT_TRUE(vec[1].copy_constructed);
623 EXPECT_TRUE(vec[2].copy_constructed);
631 EXPECT_TRUE(vec[0].copy_constructed);
638 EXPECT_TRUE(vec[0].move_constructed);
645 EXPECT_TRUE(dst[0].copy_constructed);
646 EXPECT_TRUE(dst[1].copy_constructed);
653 EXPECT_TRUE(dst[0].copy_constructed);
654 EXPECT_TRUE(dst[1].copy_constructed);
661 EXPECT_TRUE(dst[0].move_constructed);
662 EXPECT_TRUE(dst[1].move_constructed);
670 EXPECT_TRUE(dst[0].default_constructed);
671 EXPECT_FALSE(dst[0].move_constructed);
672 EXPECT_FALSE(dst[0].copy_constructed);
677 std::string long_string =
"012345678901234567890123456789";
684 vec.
resize(5, long_string);
717 for (
int i = 0;
i < 100;
i++) {
749 EXPECT_EQ_SPAN<int>(vec,
Span({6, 7, 1, 2, 3}));
757 EXPECT_EQ_SPAN<int>(vec,
Span({1, 2, 3, 6, 7}));
765 EXPECT_EQ_SPAN<int>(vec,
Span({1, 6, 7, 2, 3}));
774 EXPECT_EQ_SPAN<std::string>(vec,
Span<std::string>({
"1",
"hello",
"world",
"2",
"3"}));
780 vec.
append(std::make_unique<int>(1));
781 vec.
append(std::make_unique<int>(2));
782 vec.
insert(1, std::make_unique<int>(30));
794 EXPECT_EQ_SPAN<int>(vec,
Span({7, 8, 1, 2, 3}));
799 std::string s =
"test";
812 for (
auto it = vec.
rbegin(); it != vec.
rend(); ++it) {
816 EXPECT_EQ_SPAN<int>(reversed_vec,
Span({7, 6, 5, 4}));
828 std::array<ExceptionThrower, 5> values;
829 values[3].throw_during_copy =
true;
836 vec[2].throw_during_move =
true;
846 EXPECT_ANY_THROW({ vec.
append(value); });
855 std::array<ExceptionThrower, 10> values;
856 values[6].throw_during_copy =
true;
857 EXPECT_ANY_THROW({ vec.
extend(values); });
864 std::array<ExceptionThrower, 5> values;
865 values[3].throw_during_copy =
true;
866 EXPECT_ANY_THROW({ vec.
insert(7, values); });
873 vec[8].throw_during_move =
true;
874 std::array<ExceptionThrower, 5> values;
875 EXPECT_ANY_THROW({ vec.
insert(3, values); });
881 vec.
last().throw_during_move =
true;
882 EXPECT_ANY_THROW({ vec.
pop_last(); });
889 vec.
last().throw_during_move =
true;
897 vec[8].throw_during_move =
true;
898 EXPECT_ANY_THROW({ vec.
remove(2); });
929 vec[5].throw_during_move =
true;
930 EXPECT_ANY_THROW({ vec.
remove(2, 3); });
977 const int *data_ptr = vec.
data();
984 EXPECT_NE(
data.data,
nullptr);
993 const int *inline_data_ptr = vec.
data();
1001 EXPECT_NE(
data.data, inline_data_ptr);
1009 const int *data_ptr = vec.
data();
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v
constexpr const T * begin() const
std::reverse_iterator< T * > rbegin()
void remove_and_reorder(const int64_t index)
int64_t remove_if(Predicate &&predicate)
int64_t append_and_get_index(const T &value)
void prepend(const T &value)
void append(const T &value)
void insert(const int64_t insert_index, const T &value)
const T & last(const int64_t n=0) const
void remove(const int64_t index)
void remove_first_occurrence_and_reorder(const T &value)
void resize(const int64_t new_size)
int64_t first_index_of(const T &value) const
void reserve(const int64_t min_capacity)
std::reverse_iterator< T * > rend()
void extend(Span< T > array)
void extend_non_duplicates(Span< T > array)
void append_non_duplicates(const T &value)
void fill(const T &value) const
void append_as(ForwardValue &&...value)
VectorData< T, Allocator > release()
int64_t first_index_of_try(const T &value) const
void append_n_times(const T &value, const int64_t n)
TypeConstructMock(const TypeConstructMock &)
TypeConstructMock(TypeConstructMock &&) noexcept
TypeConstructMock & operator=(TypeConstructMock &&other) noexcept
TypeConstructMock & operator=(const TypeConstructMock &other)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
static VectorList< int > return_by_value_helper()
Vector< RecursiveType, 0 > my_vector
static int magic(const Tex *tex, const float texvec[3], TexResult *texres)