From c83db557a61353aa20aa20eaf188e3ebd93a6316 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Thu, 1 Mar 2018 19:24:12 +0100 Subject: [PATCH] more tests + minor changes --- test/entt/entity/sparse_set.cpp | 20 +++++++--- test/entt/entity/view.cpp | 70 ++++++++++++++++----------------- 2 files changed, 49 insertions(+), 41 deletions(-) diff --git a/test/entt/entity/sparse_set.cpp b/test/entt/entity/sparse_set.cpp index ac8efa75e..3af1a058b 100644 --- a/test/entt/entity/sparse_set.cpp +++ b/test/entt/entity/sparse_set.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -233,12 +234,6 @@ TEST(SparseSetNoType, RespectUnordered) { ASSERT_EQ(rhs.get(5), 5u); } -TEST(SparseSetWithType, AggregatesMustWork) { - struct AggregateType { int value; }; - // the goal of this test is to enforce the requirements for aggregate types - entt::SparseSet{}.construct(0, 42); -} - TEST(SparseSetWithType, Functionalities) { entt::SparseSet set; @@ -284,6 +279,19 @@ TEST(SparseSetWithType, Functionalities) { other = std::move(set); } +TEST(SparseSetWithType, AggregatesMustWork) { + struct AggregateType { int value; }; + // the goal of this test is to enforce the requirements for aggregate types + entt::SparseSet{}.construct(0, 42); +} + +TEST(SparseSetWithType, TypesFromStandardTemplateLibraryMustWork) { + // see #37 - this test shouldn't crash, that's all + entt::SparseSet> set; + set.construct(0).insert(42); + set.destroy(0); +} + TEST(SparseSetWithType, RawBeginEnd) { entt::SparseSet set; diff --git a/test/entt/entity/view.cpp b/test/entt/entity/view.cpp index 1698cee33..f8a2e044a 100644 --- a/test/entt/entity/view.cpp +++ b/test/entt/entity/view.cpp @@ -5,8 +5,8 @@ TEST(View, SingleComponent) { entt::DefaultRegistry registry; - auto e1 = registry.create(); - auto e2 = registry.create(); + auto e0 = registry.create(); + auto e1 = registry.create(); ASSERT_NO_THROW(registry.view().begin()++); ASSERT_NO_THROW(++registry.view().begin()); @@ -16,26 +16,26 @@ TEST(View, SingleComponent) { ASSERT_NE(view.begin(), view.end()); ASSERT_EQ(view.size(), typename decltype(view)::size_type{1}); - registry.assign(e1); + registry.assign(e0); ASSERT_EQ(view.size(), typename decltype(view)::size_type{2}); - view.get(e1) = '1'; - view.get(e2) = '2'; + view.get(e0) = '1'; + view.get(e1) = '2'; for(auto entity: view) { const auto &cview = static_cast(view); ASSERT_TRUE(cview.get(entity) == '1' || cview.get(entity) == '2'); } - ASSERT_EQ(*(view.data() + 0), e2); - ASSERT_EQ(*(view.data() + 1), e1); + ASSERT_EQ(*(view.data() + 0), e1); + ASSERT_EQ(*(view.data() + 1), e0); ASSERT_EQ(*(view.raw() + 0), '2'); ASSERT_EQ(*(static_cast(view).raw() + 1), '1'); + registry.remove(e0); registry.remove(e1); - registry.remove(e2); ASSERT_EQ(view.begin(), view.end()); } @@ -78,8 +78,8 @@ TEST(View, SingleComponentEach) { TEST(View, MultipleComponent) { entt::DefaultRegistry registry; - auto e1 = registry.create(); - auto e2 = registry.create(); + auto e0 = registry.create(); + auto e1 = registry.create(); ASSERT_NO_THROW((registry.view().begin()++)); ASSERT_NO_THROW((++registry.view().begin())); @@ -88,9 +88,9 @@ TEST(View, MultipleComponent) { ASSERT_NE(view.begin(), view.end()); - view.get(e1) = '1'; - view.get(e2) = '2'; - view.get(e2) = 42; + view.get(e0) = '1'; + view.get(e1) = '2'; + view.get(e1) = 42; for(auto entity: view) { const auto &cview = static_cast(view); @@ -99,8 +99,8 @@ TEST(View, MultipleComponent) { ASSERT_EQ(cview.get(entity), '2'); } + registry.remove(e0); registry.remove(e1); - registry.remove(e2); view.reset(); ASSERT_EQ(view.begin(), view.end()); @@ -143,8 +143,8 @@ TEST(PersistentView, Prepare) { entt::DefaultRegistry registry; registry.prepare(); - auto e1 = registry.create(); - auto e2 = registry.create(); + auto e0 = registry.create(); + auto e1 = registry.create(); ASSERT_NO_THROW((registry.persistent().begin()++)); ASSERT_NO_THROW((++registry.persistent().begin())); @@ -154,17 +154,17 @@ TEST(PersistentView, Prepare) { ASSERT_NE(view.begin(), view.end()); ASSERT_EQ(view.size(), typename decltype(view)::size_type{1}); - registry.assign(e1); + registry.assign(e0); ASSERT_EQ(view.size(), typename decltype(view)::size_type{2}); - registry.remove(e1); + registry.remove(e0); ASSERT_EQ(view.size(), typename decltype(view)::size_type{1}); - view.get(e1) = '1'; - view.get(e2) = '2'; - view.get(e2) = 42; + view.get(e0) = '1'; + view.get(e1) = '2'; + view.get(e1) = 42; for(auto entity: view) { const auto &cview = static_cast(view); @@ -173,10 +173,10 @@ TEST(PersistentView, Prepare) { ASSERT_EQ(cview.get(entity), '2'); } - ASSERT_EQ(*(view.data() + 0), e2); + ASSERT_EQ(*(view.data() + 0), e1); + registry.remove(e0); registry.remove(e1); - registry.remove(e2); ASSERT_EQ(view.begin(), view.end()); } @@ -184,8 +184,8 @@ TEST(PersistentView, Prepare) { TEST(PersistentView, NoPrepare) { entt::DefaultRegistry registry; - auto e1 = registry.create(); - auto e2 = registry.create(); + auto e0 = registry.create(); + auto e1 = registry.create(); ASSERT_NO_THROW((registry.persistent().begin()++)); ASSERT_NO_THROW((++registry.persistent().begin())); @@ -195,17 +195,17 @@ TEST(PersistentView, NoPrepare) { ASSERT_NE(view.begin(), view.end()); ASSERT_EQ(view.size(), typename decltype(view)::size_type{1}); - registry.assign(e1); + registry.assign(e0); ASSERT_EQ(view.size(), typename decltype(view)::size_type{2}); - registry.remove(e1); + registry.remove(e0); ASSERT_EQ(view.size(), typename decltype(view)::size_type{1}); - view.get(e1) = '1'; - view.get(e2) = '2'; - view.get(e2) = 42; + view.get(e0) = '1'; + view.get(e1) = '2'; + view.get(e1) = 42; for(auto entity: view) { const auto &cview = static_cast(view); @@ -214,10 +214,10 @@ TEST(PersistentView, NoPrepare) { ASSERT_EQ(cview.get(entity), '2'); } - ASSERT_EQ(*(view.data() + 0), e2); + ASSERT_EQ(*(view.data() + 0), e1); + registry.remove(e0); registry.remove(e1); - registry.remove(e2); ASSERT_EQ(view.begin(), view.end()); } @@ -263,20 +263,20 @@ TEST(PersistentView, Sort) { entt::DefaultRegistry registry; registry.prepare(); + auto e0 = registry.create(); auto e1 = registry.create(); auto e2 = registry.create(); - auto e3 = registry.create(); auto uval = 0u; auto ival = 0; + registry.assign(e0, uval++); registry.assign(e1, uval++); registry.assign(e2, uval++); - registry.assign(e3, uval++); + registry.assign(e0, ival++); registry.assign(e1, ival++); registry.assign(e2, ival++); - registry.assign(e3, ival++); auto view = registry.persistent();