Просмотр исходного кода

test: more about storage no instance

Michele Caini 2 лет назад
Родитель
Сommit
c201a44f1a
1 измененных файлов с 43 добавлено и 3 удалено
  1. 43 3
      test/entt/entity/storage_no_instance.cpp

+ 43 - 3
test/entt/entity/storage_no_instance.cpp

@@ -400,6 +400,34 @@ TYPED_TEST(StorageNoInstance, ConstIterable) {
     }
     }
 }
 }
 
 
+TYPED_TEST(StorageNoInstance, IterableIteratorConversion) {
+    using value_type = typename TestFixture::type;
+    entt::storage<value_type> pool;
+
+    pool.emplace(entt::entity{3});
+
+    typename entt::storage<value_type>::iterable::iterator it = pool.each().begin();
+    typename entt::storage<value_type>::const_iterable::iterator cit = it;
+
+    testing::StaticAssertTypeEq<decltype(*it), std::tuple<entt::entity>>();
+    testing::StaticAssertTypeEq<decltype(*cit), std::tuple<entt::entity>>();
+
+    ASSERT_EQ(it, cit);
+    ASSERT_NE(++cit, it);
+}
+
+TYPED_TEST(StorageNoInstance, IterableAlgorithmCompatibility) {
+    using value_type = typename TestFixture::type;
+    entt::storage<value_type> pool;
+
+    pool.emplace(entt::entity{3});
+
+    const auto iterable = pool.each();
+    const auto it = std::find_if(iterable.begin(), iterable.end(), [](auto args) { return std::get<0>(args) == entt::entity{3}; });
+
+    ASSERT_EQ(std::get<0>(*it), entt::entity{3});
+}
+
 TYPED_TEST(StorageNoInstance, ReverseIterable) {
 TYPED_TEST(StorageNoInstance, ReverseIterable) {
     using value_type = typename TestFixture::type;
     using value_type = typename TestFixture::type;
     using iterator = typename entt::storage<value_type>::reverse_iterable::iterator;
     using iterator = typename entt::storage<value_type>::reverse_iterable::iterator;
@@ -488,14 +516,14 @@ TYPED_TEST(StorageNoInstance, ConstReverseIterable) {
     }
     }
 }
 }
 
 
-TYPED_TEST(StorageNoInstance, IterableIteratorConversion) {
+TYPED_TEST(StorageNoInstance, ReverseIterableIteratorConversion) {
     using value_type = typename TestFixture::type;
     using value_type = typename TestFixture::type;
     entt::storage<value_type> pool;
     entt::storage<value_type> pool;
 
 
     pool.emplace(entt::entity{3});
     pool.emplace(entt::entity{3});
 
 
-    typename entt::storage<value_type>::iterable::iterator it = pool.each().begin();
-    typename entt::storage<value_type>::const_iterable::iterator cit = it;
+    typename entt::storage<value_type>::reverse_iterable::iterator it = pool.reach().begin();
+    typename entt::storage<value_type>::const_reverse_iterable::iterator cit = it;
 
 
     testing::StaticAssertTypeEq<decltype(*it), std::tuple<entt::entity>>();
     testing::StaticAssertTypeEq<decltype(*it), std::tuple<entt::entity>>();
     testing::StaticAssertTypeEq<decltype(*cit), std::tuple<entt::entity>>();
     testing::StaticAssertTypeEq<decltype(*cit), std::tuple<entt::entity>>();
@@ -503,3 +531,15 @@ TYPED_TEST(StorageNoInstance, IterableIteratorConversion) {
     ASSERT_EQ(it, cit);
     ASSERT_EQ(it, cit);
     ASSERT_NE(++cit, it);
     ASSERT_NE(++cit, it);
 }
 }
+
+TYPED_TEST(StorageNoInstance, ReverseIterableAlgorithmCompatibility) {
+    using value_type = typename TestFixture::type;
+    entt::storage<value_type> pool;
+
+    pool.emplace(entt::entity{3});
+
+    const auto iterable = pool.reach();
+    const auto it = std::find_if(iterable.begin(), iterable.end(), [](auto args) { return std::get<0>(args) == entt::entity{3}; });
+
+    ASSERT_EQ(std::get<0>(*it), entt::entity{3});
+}