ident.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. #include <type_traits>
  2. #include <gtest/gtest.h>
  3. #include <entt/core/ident.hpp>
  4. #include "../../common/boxed_type.h"
  5. #include "../../common/empty.h"
  6. TEST(Ident, Uniqueness) {
  7. using id = entt::ident<test::empty, test::boxed_int>;
  8. constexpr test::empty instance;
  9. constexpr test::boxed_int other;
  10. ASSERT_NE(id::value<test::empty>, id::value<test::boxed_int>);
  11. ASSERT_EQ(id::value<test::empty>, id::value<decltype(instance)>);
  12. ASSERT_NE(id::value<test::empty>, id::value<decltype(other)>);
  13. ASSERT_EQ(id::value<test::empty>, id::value<test::empty>);
  14. ASSERT_EQ(id::value<test::boxed_int>, id::value<test::boxed_int>);
  15. // test uses in constant expressions
  16. switch(id::value<test::boxed_int>) {
  17. case id::value<test::boxed_int>:
  18. SUCCEED();
  19. break;
  20. case id::value<test::empty>:
  21. default:
  22. FAIL();
  23. break;
  24. }
  25. }
  26. TEST(Identifier, SingleType) {
  27. using id = entt::ident<test::empty>;
  28. [[maybe_unused]] const std::integral_constant<id::value_type, id::value<test::empty>> ic;
  29. }