added type asserts and tests vor const_vector::assign it und il
This commit is contained in:
parent
0d4b15c266
commit
96554418e0
|
|
@ -3,14 +3,21 @@
|
|||
#include <const_vector.hpp>
|
||||
|
||||
#include "test.hpp"
|
||||
|
||||
#include "test_args.h"
|
||||
|
||||
#define ASSERT_TYPE_ALL_VEC_EQ(vec, eq, type) ASSERT_ALL_EQ((vec).begin(), (vec).end(), eq)
|
||||
#define ASSERT_TYPE_RANGE_VEC_EQ(vec, startI, endI, eq, type) ASSERT_ALL_EQ(((vec).data() + startI), ((vec).data() + endI), eq)
|
||||
#define ASSERT_TYPE_VEC_ARR_EQ(vec, eq, type) ASSERT_C_ARR_EQ((vec).data(), (vec).data() + (vec).size(), std::begin(eq))
|
||||
#define ASSERT_TYPE_VEC_EQ(vec1, vec2, type) ASSERT_C_ARR_EQ((vec1).data(), (vec1).data() + (vec1).size(), (vec2).data())
|
||||
#define ASSERT_TYPE_RANGE_VEC_ARR_EQ(vec, startI, endI, eq, type) ASSERT_C_ARR_EQ(((vec).begin() + startI), ((vec).begin() + endI), std::begin(eq))
|
||||
#include <vector>
|
||||
|
||||
#define ASSERT_TYPE_NUM_ALL_VEC_EQ(vec, eq, type, num) ASSERT_TYPE_NUM_ALL_EQ((vec).begin(), (vec).end(), eq, type, num)
|
||||
#define ASSERT_TYPE_NUM_RANGE_VEC_EQ(vec, startI, endI, eq, type, num) ASSERT_TYPE_NUM_ALL_EQ(((vec).data() + startI), ((vec).data() + endI), eq, type, num)
|
||||
#define ASSERT_TYPE_NUM_VEC_ARR_EQ(vec, eq, type, num) ASSERT_TYPE_NUM_C_ARR_EQ((vec).data(), (vec).data() + (vec).size(), std::begin(eq), type, num)
|
||||
#define ASSERT_TYPE_NUM_VEC_EQ(vec1, vec2, type, num) ASSERT_TYPE_NUM_C_ARR_EQ((vec1).data(), (vec1).data() + (vec1).size(), (vec2).data(), type, num)
|
||||
#define ASSERT_TYPE_NUM_RANGE_VEC_ARR_EQ(vec, startI, endI, eq, type, num) ASSERT_TYPE_NUM_C_ARR_EQ(((vec).begin() + startI), ((vec).begin() + endI), std::begin(eq), type, num)
|
||||
|
||||
#define ASSERT_TYPE_ALL_VEC_EQ(vec, eq, type) ASSERT_TYPE_ALL_EQ((vec).begin(), (vec).end(), eq, type)
|
||||
#define ASSERT_TYPE_RANGE_VEC_EQ(vec, startI, endI, eq, type) ASSERT_TYPE_ALL_EQ(((vec).data() + startI), ((vec).data() + endI), eq, type)
|
||||
#define ASSERT_TYPE_VEC_ARR_EQ(vec, eq, type) ASSERT_TYPE_C_ARR_EQ((vec).data(), (vec).data() + (vec).size(), std::begin(eq), type)
|
||||
#define ASSERT_TYPE_VEC_EQ(vec1, vec2, type) ASSERT_TYPE_C_ARR_EQ((vec1).data(), (vec1).data() + (vec1).size(), (vec2).data(), type)
|
||||
#define ASSERT_TYPE_RANGE_VEC_ARR_EQ(vec, startI, endI, eq, type) ASSERT_TYPE_C_ARR_EQ(((vec).begin() + startI), ((vec).begin() + endI), std::begin(eq), type)
|
||||
|
||||
#define ASSERT_ALL_VEC_EQ(vec, eq) ASSERT_TYPE_ALL_VEC_EQ(vec, eq, std::nullptr_t)
|
||||
#define ASSERT_RANGE_VEC_EQ(vec, startI, endI, eq) ASSERT_TYPE_RANGE_VEC_EQ(vec, startI, endI, eq, std::nullptr_t)
|
||||
|
|
@ -18,6 +25,7 @@
|
|||
#define ASSERT_VEC_EQ(vec1, vec2) ASSERT_TYPE_VEC_EQ(vec1, vec2, std::nullptr_t)
|
||||
#define ASSERT_RANGE_VEC_ARR_EQ(vec, startI, endI, eq) ASSERT_TYPE_RANGE_VEC_ARR_EQ(vec, startI, endI, eq, std::nullptr_t)
|
||||
|
||||
|
||||
constexpr test_suite tests = define_tests("Tests")
|
||||
("const_vector()", []() constexpr {
|
||||
|
||||
|
|
@ -1142,10 +1150,61 @@ constexpr test_suite tests = define_tests("Tests")
|
|||
ASSERT_TYPE_ALL_VEC_EQ(v1, test_defs::get<T>::template value<1>(), T);
|
||||
|
||||
return TEST_PASS();
|
||||
}), int, char, const char*, TestStruct)
|
||||
}), int, char, const char*, TestStruct);
|
||||
|
||||
return TEST_PASS();
|
||||
}, EvalFlag::RUNTIME_CONSTEVAL)
|
||||
("const_vector::assign(InputIt first, InputIt last)", []() constexpr {
|
||||
|
||||
REPEAT_FOR_TYPES_N(([]<typename T, std::size_t N>() constexpr {
|
||||
|
||||
cc::const_vector<T, test_defs::get<T>::template arr_len<N>()> v1;
|
||||
cc::const_vector<T, test_defs::get<T>::template il_len<N>()> v2;
|
||||
cc::const_vector<T, test_defs::get<T>::template il_len<N>()> v3;
|
||||
cc::const_vector<T, test_defs::get<T>::template arr_len<N>() - 1> v4;
|
||||
|
||||
std::vector<T> container = test_defs::get<T>::template i_list<N>;
|
||||
|
||||
v1.assign(std::begin(test_defs::get<T>::template arr<N>), std::end(test_defs::get<T>::template arr<N>));
|
||||
v2.assign(container.begin(), container.end());
|
||||
v3.assign(container.begin(), std::next(container.begin(), test_defs::get<T>::template il_len<N>() / 2));
|
||||
|
||||
ASSERT_TYPE_NUM_THROWS(
|
||||
(v4.assign(std::begin(test_defs::get<T>::template arr<N>),
|
||||
std::end(test_defs::get<T>::template arr<N>))), std::invalid_argument, T, N);
|
||||
|
||||
ASSERT_TYPE_NUM_VEC_ARR_EQ(v1, test_defs::get<T>::template arr<N>, T, N);
|
||||
ASSERT_TYPE_NUM(v1.size() == test_defs::get<T>::template arr_len<N>(), T, N);
|
||||
ASSERT_TYPE_NUM_VEC_ARR_EQ(v2, container, T, N);
|
||||
ASSERT_TYPE_NUM(v2.size() == container.size(), T, N);
|
||||
ASSERT_TYPE_NUM_VEC_ARR_EQ(v3, container, T, N);
|
||||
ASSERT_TYPE_NUM(v3.size() == container.size() / 2, T, N);
|
||||
|
||||
return TEST_PASS();
|
||||
}), 3, int, char, const char *, TestStruct);
|
||||
|
||||
return TEST_PASS();
|
||||
}, EvalFlag::RUNTIME_CONSTEVAL)
|
||||
("const_vector::assign(std::initializer_list<value_type> values)", []() constexpr {
|
||||
|
||||
REPEAT_FOR_TYPES_N(([]<typename T, std::size_t N>() constexpr {
|
||||
|
||||
cc::const_vector v1(test_defs::get<T>::template arr<1>);
|
||||
cc::const_vector v2(test_defs::get<T>::template arr<2>);
|
||||
cc::const_vector<T, test_defs::get<T>::template capacity<1>()> v3;
|
||||
|
||||
|
||||
|
||||
return TEST_PASS();
|
||||
}), 2, int, char, const char *, TestStruct);
|
||||
|
||||
return TEST_PASS();
|
||||
}, EvalFlag::RUNTIME_CONSTEVAL)
|
||||
/*("const_vector", []() constexpr {
|
||||
|
||||
|
||||
return TEST_PASS();
|
||||
}, EvalFlag::RUNTIME_CONSTEVAL)*/
|
||||
/*("const_vector(const_vector&& other)", []() constexpr {
|
||||
|
||||
return TEST_PASS();
|
||||
|
|
@ -1155,4 +1214,5 @@ constexpr test_suite tests = define_tests("Tests")
|
|||
int main() {
|
||||
return tests.run();
|
||||
}
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
Loading…
Reference in New Issue