소스 검색

test: no sbo overaligned any

Michele Caini 5 년 전
부모
커밋
f59adcdc37
1개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 1
      test/entt/core/any.cpp

+ 9 - 1
test/entt/core/any.cpp

@@ -887,9 +887,17 @@ TEST(Any, SBOVsZeroedSBOSize) {
     ASSERT_EQ(valid, same.data());
 }
 
-TEST(Any, Alignment) {
+TEST(Any, NoSBOAlignment) {
     static constexpr auto alignment = alignof(over_aligned);
     entt::basic_any<alignment> target[2] = { over_aligned{}, over_aligned{} };
+    const auto *data = target[0].data();
+
+    ASSERT_TRUE((reinterpret_cast<std::uintptr_t>(entt::any_cast<over_aligned>(&target[0u])) % alignment) == 0u);
+    ASSERT_TRUE((reinterpret_cast<std::uintptr_t>(entt::any_cast<over_aligned>(&target[1u])) % alignment) == 0u);
+
+    std::swap(target[0], target[1]);
+
     ASSERT_TRUE((reinterpret_cast<std::uintptr_t>(entt::any_cast<over_aligned>(&target[0u])) % alignment) == 0u);
     ASSERT_TRUE((reinterpret_cast<std::uintptr_t>(entt::any_cast<over_aligned>(&target[1u])) % alignment) == 0u);
+    ASSERT_EQ(data, target[1].data());
 }