diff --git a/test/const_vector/const_vector_constructor.test.cpp b/test/const_vector/const_vector_constructor.test.cpp index b028ad1..d9646cd 100644 --- a/test/const_vector/const_vector_constructor.test.cpp +++ b/test/const_vector/const_vector_constructor.test.cpp @@ -6,11 +6,17 @@ #include "test_args.h" -#define ASSERT_ALL_VEC_EQ(vec, eq) ASSERT_ALL_EQ((vec).begin(), (vec).end(), eq) -#define ASSERT_RANGE_VEC_EQ(vec, startI, endI, eq) ASSERT_ALL_EQ(((vec).data() + startI), ((vec).data() + endI), eq) -#define ASSERT_VEC_ARR_EQ(vec, eq) ASSERT_C_ARR_EQ((vec).data(), (vec).data() + (vec).size(), std::begin(eq)) -#define ASSERT_VEC_EQ(vec1, vec2) ASSERT_C_ARR_EQ((vec1).data(), (vec1).data() + (vec1).size(), (vec2).data()) -#define ASSERT_RANGE_VEC_ARR_EQ(vec, startI, endI, eq) ASSERT_C_ARR_EQ(((vec).begin() + startI), ((vec).begin() + endI), std::begin(eq)) +#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)) + +#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) +#define ASSERT_VEC_ARR_EQ(vec, eq) ASSERT_TYPE_VEC_ARR_EQ(vec, eq, std::nullptr_t) +#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 { @@ -638,6 +644,7 @@ constexpr test_suite tests = define_tests("Tests") return TEST_PASS(); }, EvalFlag::RUNTIME_CONSTEVAL) + ("const_vector::operator=(const const_vector& other)", []() constexpr { cc::const_vector vi1(test_defs::get::arr<1>); @@ -1110,11 +1117,40 @@ constexpr test_suite tests = define_tests("Tests") return TEST_PASS(); }, EvalFlag::RUNTIME_CONSTEVAL) + + ("const_vector::assign(size_type count, const value_type& value)", []() constexpr { + + REPEAT_FOR_TYPES(([]() constexpr { + + cc::const_vector v1(test_defs::get::template arr<1>); + cc::const_vector v2(test_defs::get::template arr<2>); + cc::const_vector::template capacity<1>()> v3; + + auto count1 = test_defs::get::template arr_len<1>() / 2; + auto count2 = test_defs::get::template arr_len<2>() / 2; + + v1.assign(count1, test_defs::get::template value<1>()); + v2.assign(count2, test_defs::get::template value<2>()); + v3.assign(test_defs::get::template capacity<1>() + 1, test_defs::get::template value<1>()); + + ASSERT_TYPE(v1.size() == count1, T); + ASSERT_TYPE(v2.size() == count2, T); + ASSERT_TYPE_ALL_VEC_EQ(v1, test_defs::get::template value<1>(), T); + ASSERT_TYPE_ALL_VEC_EQ(v2, test_defs::get::template value<2>(), T); + + ASSERT_TYPE(v3.size() == test_defs::get::template capacity<1>(), T); + ASSERT_TYPE_ALL_VEC_EQ(v1, test_defs::get::template value<1>(), T); + + return TEST_PASS(); + }), int, char, const char*, TestStruct) + + return TEST_PASS(); + }, EvalFlag::RUNTIME_CONSTEVAL) /*("const_vector(const_vector&& other)", []() constexpr { return TEST_PASS(); - }, EvalFlag::RUNTIME_CONSTEVAL)*/ - ; + }, EvalFlag::RUNTIME_CONSTEVAL) + */; int main() { return tests.run();