diff --git a/test/common_helper/test.hpp b/test/common_helper/test.hpp index 1a7395e..ac199ec 100644 --- a/test/common_helper/test.hpp +++ b/test/common_helper/test.hpp @@ -247,9 +247,14 @@ inline std::ostream& operator<<(std::ostream& os, ReturnCode rc) { } } -template il> typename Callee> -constexpr void expand_from_ilist() { - return Callee { }; -} + + +#define CREATE_FROM_IL(type, il, len) \ +([](std::initializer_list args) { \ + auto creator = [&args] (std::index_sequence<_idx...>) { \ + return type { (*std::next(std::begin(args), _idx))... }; \ + }; \ + return creator(std::make_index_sequence()); \ +}).operator()(il) #endif //CONST_CONTAINER_TEST_HPP_ diff --git a/test/const_vector/const_vector_constructor.test.cpp b/test/const_vector/const_vector_constructor.test.cpp index 4d55d6d..205f8f2 100644 --- a/test/const_vector/const_vector_constructor.test.cpp +++ b/test/const_vector/const_vector_constructor.test.cpp @@ -272,8 +272,8 @@ constexpr test_suite tests = define_tests("Tests") ASSERT_RANGE_VEC_EQ(vi4, test_defs::get::arr_len<2>(), test_defs::get::capacity<2>(), int()); - cc::const_vector vc1(test_defs::get::i_list<1>); - cc::const_vector vc2(test_defs::get::i_list<2>); + auto vc1 = CREATE_FROM_IL(cc::const_vector, test_defs::get::i_list<1>, test_defs::get::il_len<1>()); + auto vc2 = CREATE_FROM_IL(cc::const_vector, test_defs::get::i_list<2>, test_defs::get::il_len<2>()); cc::const_vector::capacity<1>()> vc3(test_defs::get::i_list<1>); cc::const_vector::capacity<2>()> vc4(test_defs::get::i_list<2>); @@ -293,8 +293,8 @@ constexpr test_suite tests = define_tests("Tests") ASSERT_RANGE_VEC_EQ(vc4, test_defs::get::arr_len<2>(), test_defs::get::capacity<2>(), char()); - cc::const_vector vs1(test_defs::get::i_list<1>); - cc::const_vector vs2(test_defs::get::i_list<2>); + auto vs1 = CREATE_FROM_IL(cc::const_vector, test_defs::get::i_list<1>, test_defs::get::il_len<1>()); + auto vs2 = CREATE_FROM_IL(cc::const_vector, test_defs::get::i_list<2>, test_defs::get::il_len<2>()); cc::const_vector::capacity<1>()> vs3(test_defs::get::i_list<1>); cc::const_vector::capacity<2>()> vs4(test_defs::get::i_list<2>); @@ -312,8 +312,8 @@ constexpr test_suite tests = define_tests("Tests") ASSERT_RANGE_VEC_ARR_EQ(vs4, 0, test_defs::get::arr_len<2>(), test_defs::get::i_list<2>); - cc::const_vector vo1(test_defs::get::i_list<1>); - cc::const_vector vo2(test_defs::get::i_list<2>); + auto vo1 = CREATE_FROM_IL(cc::const_vector, test_defs::get::i_list<1>, test_defs::get::il_len<1>()); + auto vo2 = CREATE_FROM_IL(cc::const_vector, test_defs::get::i_list<2>, test_defs::get::il_len<2>()); cc::const_vector::capacity<1>()> vo3(test_defs::get::i_list<1>); cc::const_vector::capacity<2>()> vo4(test_defs::get::i_list<2>); diff --git a/test/const_vector/test_args.h b/test/const_vector/test_args.h index 65401d9..71eb556 100644 --- a/test/const_vector/test_args.h +++ b/test/const_vector/test_args.h @@ -58,6 +58,9 @@ struct test_defs { template static consteval std::size_t arr_len(); + template + static consteval std::size_t il_len(); + template static consteval std::size_t capacity(); @@ -117,6 +120,9 @@ template consteval std::size_t test_defs::get::arr_len() { return C_ARR_LEN(arr); } template template +consteval std::size_t test_defs::get::il_len() { return i_list.size(); } +template +template consteval std::size_t test_defs::get::capacity() { return 0; } template template