|
|
@@ -17,6 +17,7 @@
|
|
|
#include <entt/meta/resolve.hpp>
|
|
|
#include <entt/meta/template.hpp>
|
|
|
#include "../../common/config.h"
|
|
|
+#include "../../common/meta_traits.h"
|
|
|
|
|
|
template<typename Type>
|
|
|
void set(Type &prop, Type value) {
|
|
|
@@ -116,10 +117,12 @@ struct MetaType: ::testing::Test {
|
|
|
|
|
|
entt::meta<double>()
|
|
|
.type("double"_hs)
|
|
|
+ .traits(test::meta_traits::one)
|
|
|
.data<set<double>, get<double>>("var"_hs);
|
|
|
|
|
|
entt::meta<unsigned int>()
|
|
|
.type("unsigned int"_hs)
|
|
|
+ .traits(test::meta_traits::two)
|
|
|
.data<0u>("min"_hs)
|
|
|
.data<128u>("max"_hs);
|
|
|
|
|
|
@@ -129,6 +132,7 @@ struct MetaType: ::testing::Test {
|
|
|
|
|
|
entt::meta<derived>()
|
|
|
.type("derived"_hs)
|
|
|
+ .traits(test::meta_traits::one | test::meta_traits::three)
|
|
|
.base<base>();
|
|
|
|
|
|
entt::meta<abstract>()
|
|
|
@@ -153,6 +157,7 @@ struct MetaType: ::testing::Test {
|
|
|
|
|
|
entt::meta<property_type>()
|
|
|
.type("property"_hs)
|
|
|
+ .traits(test::meta_traits::two | test::meta_traits::three)
|
|
|
.data<property_type::random>("random"_hs)
|
|
|
.prop(static_cast<entt::id_type>(property_type::random), 0)
|
|
|
.prop(static_cast<entt::id_type>(property_type::value), 3)
|
|
|
@@ -283,6 +288,16 @@ TEST_F(MetaType, Traits) {
|
|
|
ASSERT_FALSE(entt::resolve<std::vector<int>>().is_associative_container());
|
|
|
}
|
|
|
|
|
|
+TEST_F(MetaType, UserTraits) {
|
|
|
+ ASSERT_EQ(entt::resolve<bool>().traits<test::meta_traits>(), test::meta_traits::none);
|
|
|
+ ASSERT_EQ(entt::resolve<clazz>().traits<test::meta_traits>(), test::meta_traits::none);
|
|
|
+
|
|
|
+ ASSERT_EQ(entt::resolve<double>().traits<test::meta_traits>(), test::meta_traits::one);
|
|
|
+ ASSERT_EQ(entt::resolve<unsigned int>().traits<test::meta_traits>(), test::meta_traits::two);
|
|
|
+ ASSERT_EQ(entt::resolve<derived>().traits<test::meta_traits>(), test::meta_traits::one | test::meta_traits::three);
|
|
|
+ ASSERT_EQ(entt::resolve<property_type>().traits<test::meta_traits>(), test::meta_traits::two | test::meta_traits::three);
|
|
|
+}
|
|
|
+
|
|
|
TEST_F(MetaType, RemovePointer) {
|
|
|
ASSERT_EQ(entt::resolve<void *>().remove_pointer(), entt::resolve<void>());
|
|
|
ASSERT_EQ(entt::resolve<char **>().remove_pointer(), entt::resolve<char *>());
|