Преглед изворни кода

test: meta dereference const correctness for non-pointer non-pointer-like types

skypjack пре 1 недеља
родитељ
комит
3209cd854e
1 измењених фајлова са 15 додато и 0 уклоњено
  1. 15 0
      test/entt/meta/meta_dereference.cpp

+ 15 - 0
test/entt/meta/meta_dereference.cpp

@@ -236,6 +236,21 @@ TEST_F(MetaDereference, Optional) {
     ASSERT_EQ(*value, 3);
 }
 
+TEST_F(MetaDereference, OptionalConstCorrectness) {
+    auto value = std::optional<int>(0);
+    entt::meta_any any{entt::forward_as_meta(value)};
+
+    auto ref = any.as_ref();
+    auto cref = std::as_const(any).as_ref();
+    auto cderef = *std::as_const(any);
+    auto deref = *any;
+
+    ASSERT_EQ((*ref).base().policy(), entt::any_policy::ref);
+    ASSERT_EQ((*cref).base().policy(), entt::any_policy::cref);
+    ASSERT_EQ(cderef.base().policy(), entt::any_policy::cref);
+    ASSERT_EQ(deref.base().policy(), entt::any_policy::ref);
+}
+
 TEST_F(MetaDereference, EmptyOptional) {
     auto value = std::optional<int>();
     entt::meta_any any{entt::forward_as_meta(value)};