test: code coverage

This commit is contained in:
Michele Caini
2021-09-13 19:32:23 +02:00
parent 36627dbe78
commit a96a767b9b
2 changed files with 15 additions and 5 deletions

View File

@@ -298,7 +298,7 @@ template<typename Type, typename... Args, std::size_t... Index>
return Type{(args+Index)->cast<Args>()...};
}
return {};
return meta_any{};
}
@@ -390,7 +390,7 @@ template<typename Type, typename Policy = as_is_t, typename Candidate>
*/
template<typename Type, auto Candidate, typename Policy = as_is_t>
[[nodiscard]] meta_any meta_construct(meta_any * const args) {
return meta_construct<Type, Policy>(Candidate, args);
return meta_invoke<Type, Policy>({}, Candidate, args);
}

View File

@@ -16,7 +16,7 @@ struct derived_t: base_t {
};
struct clazz_t {
clazz_t(const base_t &other, int iv)
clazz_t(const base_t &other, int &iv)
: clazz_t{iv, other.value}
{}
@@ -55,7 +55,7 @@ struct MetaCtor: ::testing::Test {
entt::meta<clazz_t>()
.type("clazz"_hs)
.ctor<&entt::registry::emplace_or_replace<clazz_t, const int &, const char &>, entt::as_ref_t>()
.ctor<const base_t &, int>()
.ctor<const base_t &, int &>()
.ctor<const int &, char>()
.ctor<entt::overload<clazz_t(int)>(clazz_t::factory)>()
.ctor<entt::overload<clazz_t(base_t, int, int)>(clazz_t::factory)>()
@@ -114,7 +114,6 @@ TEST_F(MetaCtor, ArithmeticConversion) {
TEST_F(MetaCtor, ConstNonConstRefArgs) {
int ivalue = 42;
const char cvalue = 'c';
auto any = entt::resolve<clazz_t>().construct(entt::forward_as_meta(ivalue), entt::forward_as_meta(cvalue));
ASSERT_TRUE(any);
@@ -122,6 +121,17 @@ TEST_F(MetaCtor, ConstNonConstRefArgs) {
ASSERT_EQ(any.cast<clazz_t>().c, 'c');
}
TEST_F(MetaCtor, WrongConstness) {
int value = 42;
auto any = entt::resolve<clazz_t>().construct(derived_t{}, entt::forward_as_meta(value));
auto other = entt::resolve<clazz_t>().construct(derived_t{}, entt::forward_as_meta(std::as_const(value)));
ASSERT_TRUE(any);
ASSERT_FALSE(other);
ASSERT_EQ(any.cast<clazz_t>().i, 42);
ASSERT_EQ(any.cast<clazz_t>().c, 'c');
}
TEST_F(MetaCtor, FuncMetaAnyArgs) {
auto any = entt::resolve<clazz_t>().construct(entt::meta_any{42});