diff --git a/test/const_vector/const_vector_constructor.test.cpp b/test/const_vector/const_vector_constructor.test.cpp index 27095e6..4a616f5 100644 --- a/test/const_vector/const_vector_constructor.test.cpp +++ b/test/const_vector/const_vector_constructor.test.cpp @@ -1225,6 +1225,27 @@ constexpr test_suite tests = define_tests("Tests") ("const_vector::at(size_type pos)", []() constexpr { + REPEAT_FOR_TYPES_N(([]() constexpr { + + cc::const_vector::get_arr_len() + 1> v(test_context_params::template value<"arr">); + const cc::const_vector::get_arr_len() + 1> cv(test_context_params::template value<"arr">); + + for (int i = 0; i < test_params<"arr", Ctx>::get_arr_len(); ++i) { + ASSERT_TYPE_NUM((v.at(i) == test_params<"arr", Ctx>::get()[i]), T, N); + ASSERT_TYPE_NUM((cv.at(i) == test_params<"arr", Ctx>::get()[i]), T, N); + } + + ASSERT_TYPE_NUM_THROWS(v.at(test_params<"arr", Ctx>::get_arr_len()), std::out_of_range, T, N); + ASSERT_TYPE_NUM_THROWS(cv.at(test_params<"arr", Ctx>::get_arr_len()), std::out_of_range, T, N); + + v.at(v.size() / 2) = test_params<"value", Ctx>::get(); + + ASSERT_TYPE_NUM((v.data()[v.size() / 2] == test_params<"value", Ctx>::get()), T, N); + + return TEST_PASS(); + }), 2, int, char, const char *, TestObj); + + return TEST_PASS(); }, EvalFlag::RUNTIME_CONSTEVAL)