added tests for operator= initializer list
This commit is contained in:
parent
a2de08b14d
commit
bb335bd9c3
|
|
@ -739,70 +739,130 @@ class test_const_vector : public test_defs {
|
||||||
|
|
||||||
#pragma message("Testing operator=")
|
#pragma message("Testing operator=")
|
||||||
|
|
||||||
|
constexpr auto int_applicator = []()consteval {
|
||||||
#define DEFINE_APPLICATOR(type) DEFINE_APPLICATOR_EXT(type, type)
|
constexpr auto &arr1 = int_defs::get_arr_for_type<1>();
|
||||||
#define DEFINE_APPLICATOR_EXT(type_abbr, type) constexpr auto type_abbr##_applicator = []() consteval { \
|
constexpr auto &arr2 = int_defs::get_arr_for_type<2>();
|
||||||
constexpr auto& arr1 = type_abbr##_defs::get_arr_for_type<1>(); \
|
constexpr auto arr1_len = int_defs::get_arr_len_for_type<1>();
|
||||||
constexpr auto& arr2 = type_abbr##_defs::get_arr_for_type<2>(); \
|
constexpr auto arr2_len = int_defs::get_arr_len_for_type<2>();
|
||||||
constexpr auto arr1_len = type_abbr##_defs::get_arr_len_for_type<1>(); \
|
cc::const_vector v1o(arr1);
|
||||||
constexpr auto arr2_len = type_abbr##_defs::get_arr_len_for_type<2>(); \
|
cc::const_vector v2o(arr2);
|
||||||
cc::const_vector v1o(arr1); \
|
|
||||||
cc::const_vector v2o(arr2); \
|
|
||||||
\
|
|
||||||
struct { \
|
|
||||||
decltype(v1o) v1cs; \
|
|
||||||
decltype(v2o) v2cs; \
|
|
||||||
cc::const_vector<type, TEST_VEC1_CAPACITY> v1cd; \
|
|
||||||
cc::const_vector<type, TEST_VEC2_CAPACITY> v2cd; \
|
|
||||||
decltype(v1o) v1m; \
|
|
||||||
decltype(v2o) v2m; \
|
|
||||||
cc::const_vector<type, TEST_VEC1_CAPACITY> v1a; \
|
|
||||||
cc::const_vector<type, TEST_VEC2_CAPACITY> v2a; \
|
|
||||||
} ret; \
|
|
||||||
\
|
|
||||||
ret.v1cs = v1o; \
|
|
||||||
ret.v2cs = v2o; \
|
|
||||||
ret.v1cd = v1o; \
|
|
||||||
ret.v2cd = v2o; \
|
|
||||||
ret.v1m = const_cast<cc::const_vector<decltype(v1o)::value_type, decltype(v1o)::_len>&&>(v1o); \
|
|
||||||
ret.v2m = const_cast<cc::const_vector<decltype(v2o)::value_type, decltype(v2o)::_len>&&>(v2o); \
|
|
||||||
ret.v1a = arr1; \
|
|
||||||
ret.v2a = arr2; \
|
|
||||||
\
|
|
||||||
return ret; \
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFINE_APPLICATOR(int);
|
|
||||||
DEFINE_APPLICATOR(char);
|
|
||||||
DEFINE_APPLICATOR_EXT(string, const char *);
|
|
||||||
DEFINE_APPLICATOR_EXT(obj, TestStruct);
|
|
||||||
|
|
||||||
/*auto int_applicator = []() consteval {
|
|
||||||
cc::const_vector vi1o(C_VI_TEST_ARR1);
|
|
||||||
cc::const_vector vi2o(C_VI_TEST_ARR2);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
decltype(vi1o) vi1cs;
|
decltype(v1o) v1cs;
|
||||||
decltype(vi2o) vi2cs;
|
decltype(v2o) v2cs;
|
||||||
cc::const_vector<int, TEST_VEC1_CAPACITY> vi1cd;
|
cc::const_vector<int, 5> v1cd;
|
||||||
cc::const_vector<int, TEST_VEC2_CAPACITY> vi2cd;
|
cc::const_vector<int, 10> v2cd;
|
||||||
decltype(vi1o) vi1m;
|
decltype(v1o) v1m;
|
||||||
decltype(vi2o) vi2m;
|
decltype(v2o) v2m;
|
||||||
cc::const_vector<int, int_defs::get_arr_len_for_type<1>()> vi1a;
|
cc::const_vector<int, 5> v1a;
|
||||||
cc::const_vector<int, VI_TEST_ARR2_LEN> vi2a;
|
cc::const_vector<int, 10> v2a;
|
||||||
|
cc::const_vector<int, 5> v1i;
|
||||||
|
cc::const_vector<int, 10> v2i;
|
||||||
} ret;
|
} ret;
|
||||||
|
ret.v1cs = v1o;
|
||||||
ret.vi1cs = vi1o;
|
ret.v2cs = v2o;
|
||||||
ret.vi2cs = vi2o;
|
ret.v1cd = v1o;
|
||||||
ret.vi1cd = vi1o;
|
ret.v2cd = v2o;
|
||||||
ret.vi2cd = vi2o;
|
ret.v1m = const_cast<cc::const_vector<decltype(v1o)::value_type, decltype(v1o)::_len> &&>(v1o);
|
||||||
ret.vi1m = vi1o;
|
ret.v2m = const_cast<cc::const_vector<decltype(v2o)::value_type, decltype(v2o)::_len> &&>(v2o);
|
||||||
ret.vi2m = vi2o;
|
ret.v1a = arr1;
|
||||||
ret.vi1a = C_VI_TEST_ARR1;
|
ret.v2a = arr2;
|
||||||
ret.vi2a = C_VI_TEST_ARR2;
|
ret.v1i = VI_TEST_ARR1;
|
||||||
|
ret.v2i = VI_TEST_ARR2;
|
||||||
return ret;
|
return ret;
|
||||||
};*/
|
};
|
||||||
|
constexpr auto char_applicator = []()consteval {
|
||||||
|
constexpr auto &arr1 = char_defs::get_arr_for_type<1>();
|
||||||
|
constexpr auto &arr2 = char_defs::get_arr_for_type<2>();
|
||||||
|
constexpr auto arr1_len = char_defs::get_arr_len_for_type<1>();
|
||||||
|
constexpr auto arr2_len = char_defs::get_arr_len_for_type<2>();
|
||||||
|
cc::const_vector v1o(arr1);
|
||||||
|
cc::const_vector v2o(arr2);
|
||||||
|
struct {
|
||||||
|
decltype(v1o) v1cs;
|
||||||
|
decltype(v2o) v2cs;
|
||||||
|
cc::const_vector<char, 5> v1cd;
|
||||||
|
cc::const_vector<char, 10> v2cd;
|
||||||
|
decltype(v1o) v1m;
|
||||||
|
decltype(v2o) v2m;
|
||||||
|
cc::const_vector<char, 5> v1a;
|
||||||
|
cc::const_vector<char, 10> v2a;
|
||||||
|
cc::const_vector<char, 5> v1i;
|
||||||
|
cc::const_vector<char, 10> v2i;
|
||||||
|
} ret;
|
||||||
|
ret.v1cs = v1o;
|
||||||
|
ret.v2cs = v2o;
|
||||||
|
ret.v1cd = v1o;
|
||||||
|
ret.v2cd = v2o;
|
||||||
|
ret.v1m = const_cast<cc::const_vector<decltype(v1o)::value_type, decltype(v1o)::_len> &&>(v1o);
|
||||||
|
ret.v2m = const_cast<cc::const_vector<decltype(v2o)::value_type, decltype(v2o)::_len> &&>(v2o);
|
||||||
|
ret.v1a = arr1;
|
||||||
|
ret.v2a = arr2;
|
||||||
|
ret.v1i = VC_TEST_ARR1;
|
||||||
|
ret.v2i = VC_TEST_ARR2;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
constexpr auto string_applicator = []()consteval {
|
||||||
|
constexpr auto &arr1 = string_defs::get_arr_for_type<1>();
|
||||||
|
constexpr auto &arr2 = string_defs::get_arr_for_type<2>();
|
||||||
|
constexpr auto arr1_len = string_defs::get_arr_len_for_type<1>();
|
||||||
|
constexpr auto arr2_len = string_defs::get_arr_len_for_type<2>();
|
||||||
|
cc::const_vector v1o(arr1);
|
||||||
|
cc::const_vector v2o(arr2);
|
||||||
|
struct {
|
||||||
|
decltype(v1o) v1cs;
|
||||||
|
decltype(v2o) v2cs;
|
||||||
|
cc::const_vector<const char *, 5> v1cd;
|
||||||
|
cc::const_vector<const char *, 10> v2cd;
|
||||||
|
decltype(v1o) v1m;
|
||||||
|
decltype(v2o) v2m;
|
||||||
|
cc::const_vector<const char *, 5> v1a;
|
||||||
|
cc::const_vector<const char *, 10> v2a;
|
||||||
|
cc::const_vector<const char *, 5> v1i;
|
||||||
|
cc::const_vector<const char *, 10> v2i;
|
||||||
|
} ret;
|
||||||
|
ret.v1cs = v1o;
|
||||||
|
ret.v2cs = v2o;
|
||||||
|
ret.v1cd = v1o;
|
||||||
|
ret.v2cd = v2o;
|
||||||
|
ret.v1m = const_cast<cc::const_vector<decltype(v1o)::value_type, decltype(v1o)::_len> &&>(v1o);
|
||||||
|
ret.v2m = const_cast<cc::const_vector<decltype(v2o)::value_type, decltype(v2o)::_len> &&>(v2o);
|
||||||
|
ret.v1a = arr1;
|
||||||
|
ret.v2a = arr2;
|
||||||
|
ret.v1i = VS_TEST_ARR1;
|
||||||
|
ret.v2i = VS_TEST_ARR2;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
constexpr auto obj_applicator = []()consteval {
|
||||||
|
constexpr auto &arr1 = obj_defs::get_arr_for_type<1>();
|
||||||
|
constexpr auto &arr2 = obj_defs::get_arr_for_type<2>();
|
||||||
|
constexpr auto arr1_len = obj_defs::get_arr_len_for_type<1>();
|
||||||
|
constexpr auto arr2_len = obj_defs::get_arr_len_for_type<2>();
|
||||||
|
cc::const_vector v1o(arr1);
|
||||||
|
cc::const_vector v2o(arr2);
|
||||||
|
struct {
|
||||||
|
decltype(v1o) v1cs;
|
||||||
|
decltype(v2o) v2cs;
|
||||||
|
cc::const_vector<TestStruct, 5> v1cd;
|
||||||
|
cc::const_vector<TestStruct, 10> v2cd;
|
||||||
|
decltype(v1o) v1m;
|
||||||
|
decltype(v2o) v2m;
|
||||||
|
cc::const_vector<TestStruct, 5> v1a;
|
||||||
|
cc::const_vector<TestStruct, 10> v2a;
|
||||||
|
cc::const_vector<TestStruct, 5> v1i;
|
||||||
|
cc::const_vector<TestStruct, 10> v2i;
|
||||||
|
} ret;
|
||||||
|
ret.v1cs = v1o;
|
||||||
|
ret.v2cs = v2o;
|
||||||
|
ret.v1cd = v1o;
|
||||||
|
ret.v2cd = v2o;
|
||||||
|
ret.v1m = const_cast<cc::const_vector<decltype(v1o)::value_type, decltype(v1o)::_len> &&>(v1o);
|
||||||
|
ret.v2m = const_cast<cc::const_vector<decltype(v2o)::value_type, decltype(v2o)::_len> &&>(v2o);
|
||||||
|
ret.v1a = arr1;
|
||||||
|
ret.v2a = arr2;
|
||||||
|
ret.v1i = VO_TEST_ARR1;
|
||||||
|
ret.v2i = VO_TEST_ARR2;
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
constexpr auto int_res = int_applicator();
|
constexpr auto int_res = int_applicator();
|
||||||
constexpr auto char_res = char_applicator();
|
constexpr auto char_res = char_applicator();
|
||||||
|
|
@ -833,6 +893,12 @@ class test_const_vector : public test_defs {
|
||||||
ASSERT(int_res.v2a._size == VI_TEST_ARR2_LEN)
|
ASSERT(int_res.v2a._size == VI_TEST_ARR2_LEN)
|
||||||
ASSERT_VEC_ARR_EQ(int_res.v1a, C_VI_TEST_ARR1)
|
ASSERT_VEC_ARR_EQ(int_res.v1a, C_VI_TEST_ARR1)
|
||||||
ASSERT_VEC_ARR_EQ(int_res.v2a, C_VI_TEST_ARR2)
|
ASSERT_VEC_ARR_EQ(int_res.v2a, C_VI_TEST_ARR2)
|
||||||
|
ASSERT(int_res.v1i._len == TEST_VEC1_CAPACITY)
|
||||||
|
ASSERT(int_res.v2i._len == TEST_VEC2_CAPACITY)
|
||||||
|
ASSERT(int_res.v1i._size == VI_TEST_ARR1_LEN)
|
||||||
|
ASSERT(int_res.v2i._size == VI_TEST_ARR2_LEN)
|
||||||
|
ASSERT_VEC_ARR_EQ(int_res.v1i, C_VI_TEST_ARR1)
|
||||||
|
ASSERT_VEC_ARR_EQ(int_res.v2i, C_VI_TEST_ARR2)
|
||||||
|
|
||||||
ASSERT(char_res.v1cs._len == VC_TEST_ARR1_LEN)
|
ASSERT(char_res.v1cs._len == VC_TEST_ARR1_LEN)
|
||||||
ASSERT(char_res.v2cs._len == VC_TEST_ARR2_LEN)
|
ASSERT(char_res.v2cs._len == VC_TEST_ARR2_LEN)
|
||||||
|
|
@ -858,6 +924,12 @@ class test_const_vector : public test_defs {
|
||||||
ASSERT(char_res.v2a._size == VC_TEST_ARR2_LEN)
|
ASSERT(char_res.v2a._size == VC_TEST_ARR2_LEN)
|
||||||
ASSERT_VEC_ARR_EQ(char_res.v1a, C_VC_TEST_ARR1)
|
ASSERT_VEC_ARR_EQ(char_res.v1a, C_VC_TEST_ARR1)
|
||||||
ASSERT_VEC_ARR_EQ(char_res.v2a, C_VC_TEST_ARR2)
|
ASSERT_VEC_ARR_EQ(char_res.v2a, C_VC_TEST_ARR2)
|
||||||
|
ASSERT(char_res.v1i._len == TEST_VEC1_CAPACITY)
|
||||||
|
ASSERT(char_res.v2i._len == TEST_VEC2_CAPACITY)
|
||||||
|
ASSERT(char_res.v1i._size == VC_TEST_ARR1_LEN)
|
||||||
|
ASSERT(char_res.v2i._size == VC_TEST_ARR2_LEN)
|
||||||
|
ASSERT_VEC_ARR_EQ(char_res.v1i, C_VC_TEST_ARR1)
|
||||||
|
ASSERT_VEC_ARR_EQ(char_res.v2i, C_VC_TEST_ARR2)
|
||||||
|
|
||||||
ASSERT(string_res.v1cs._len == VS_TEST_ARR1_LEN)
|
ASSERT(string_res.v1cs._len == VS_TEST_ARR1_LEN)
|
||||||
ASSERT(string_res.v2cs._len == VS_TEST_ARR2_LEN)
|
ASSERT(string_res.v2cs._len == VS_TEST_ARR2_LEN)
|
||||||
|
|
@ -883,6 +955,12 @@ class test_const_vector : public test_defs {
|
||||||
ASSERT(string_res.v2a._size == VS_TEST_ARR2_LEN)
|
ASSERT(string_res.v2a._size == VS_TEST_ARR2_LEN)
|
||||||
ASSERT_VEC_ARR_EQ(string_res.v1a, C_VS_TEST_ARR1)
|
ASSERT_VEC_ARR_EQ(string_res.v1a, C_VS_TEST_ARR1)
|
||||||
ASSERT_VEC_ARR_EQ(string_res.v2a, C_VS_TEST_ARR2)
|
ASSERT_VEC_ARR_EQ(string_res.v2a, C_VS_TEST_ARR2)
|
||||||
|
ASSERT(string_res.v1i._len == TEST_VEC1_CAPACITY)
|
||||||
|
ASSERT(string_res.v2i._len == TEST_VEC2_CAPACITY)
|
||||||
|
ASSERT(string_res.v1i._size == VS_TEST_ARR1_LEN)
|
||||||
|
ASSERT(string_res.v2i._size == VS_TEST_ARR2_LEN)
|
||||||
|
ASSERT_VEC_ARR_EQ(string_res.v1i, C_VS_TEST_ARR1)
|
||||||
|
ASSERT_VEC_ARR_EQ(string_res.v2i, C_VS_TEST_ARR2)
|
||||||
|
|
||||||
ASSERT(obj_res.v1cs._len == VO_TEST_ARR1_LEN)
|
ASSERT(obj_res.v1cs._len == VO_TEST_ARR1_LEN)
|
||||||
ASSERT(obj_res.v2cs._len == VO_TEST_ARR2_LEN)
|
ASSERT(obj_res.v2cs._len == VO_TEST_ARR2_LEN)
|
||||||
|
|
@ -908,13 +986,17 @@ class test_const_vector : public test_defs {
|
||||||
ASSERT(obj_res.v2a._size == VO_TEST_ARR2_LEN)
|
ASSERT(obj_res.v2a._size == VO_TEST_ARR2_LEN)
|
||||||
ASSERT_VEC_ARR_EQ(obj_res.v1a, C_VO_TEST_ARR1)
|
ASSERT_VEC_ARR_EQ(obj_res.v1a, C_VO_TEST_ARR1)
|
||||||
ASSERT_VEC_ARR_EQ(obj_res.v2a, C_VO_TEST_ARR2)
|
ASSERT_VEC_ARR_EQ(obj_res.v2a, C_VO_TEST_ARR2)
|
||||||
|
ASSERT(obj_res.v1i._len == TEST_VEC1_CAPACITY)
|
||||||
|
ASSERT(obj_res.v2i._len == TEST_VEC2_CAPACITY)
|
||||||
|
ASSERT(obj_res.v1i._size == VO_TEST_ARR1_LEN)
|
||||||
|
ASSERT(obj_res.v2i._size == VO_TEST_ARR2_LEN)
|
||||||
|
ASSERT_VEC_ARR_EQ(obj_res.v1i, C_VO_TEST_ARR1)
|
||||||
|
ASSERT_VEC_ARR_EQ(obj_res.v2i, C_VO_TEST_ARR2)
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(int, char *[])
|
int main(int, char *[])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue