tuple.cpp 1.2 KB

12345678910111213141516171819202122232425
  1. #include <tuple>
  2. #include <gtest/gtest.h>
  3. #include <entt/core/tuple.hpp>
  4. TEST(Tuple, UnwrapTuple) {
  5. auto single = std::make_tuple(42);
  6. auto multi = std::make_tuple(42, 'c');
  7. auto ref = std::forward_as_tuple(std::get<0>(single));
  8. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(single)), int &>));
  9. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(multi)), std::tuple<int, char> &>));
  10. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(ref)), int &>));
  11. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(std::move(single))), int &&>));
  12. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(std::move(multi))), std::tuple<int, char> &&>));
  13. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(std::move(ref))), int &>));
  14. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(std::as_const(single))), const int &>));
  15. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(std::as_const(multi))), const std::tuple<int, char> &>));
  16. ASSERT_TRUE((std::is_same_v<decltype(entt::unwrap_tuple(std::as_const(ref))), int &>));
  17. ASSERT_EQ(entt::unwrap_tuple(single), 42);
  18. ASSERT_EQ(entt::unwrap_tuple(multi), multi);
  19. ASSERT_EQ(entt::unwrap_tuple(std::move(ref)), 42);
  20. }