From ea005510200ed7851496c77d2c15e6d3de75ac7b Mon Sep 17 00:00:00 2001 From: Alec Thomas Date: Tue, 4 Mar 2014 13:26:30 +1100 Subject: Use TEST_CASE_METHOD rather than SECTION. --- entityx/Benchmarks_test.cc | 117 ++++---- entityx/Entity_test.cc | 581 +++++++++++++++++++------------------- entityx/System_test.cc | 49 ++-- entityx/deps/Dependencies_test.cc | 65 ++--- entityx/help/Pool_test.cc | 6 +- 5 files changed, 410 insertions(+), 408 deletions(-) diff --git a/entityx/Benchmarks_test.cc b/entityx/Benchmarks_test.cc index e9eb9ef..d0aff02 100644 --- a/entityx/Benchmarks_test.cc +++ b/entityx/Benchmarks_test.cc @@ -27,87 +27,90 @@ struct Listener : public Receiver { struct Position : public Component { }; -TEST_CASE("BenchmarksTest", "[entitymanager]") { + +struct BenchmarkFixture { + BenchmarkFixture() : em(ev) {} + EventManager ev; - EntityManager em(ev); + EntityManager em; +}; - SECTION("TestCreateEntities") { - AutoTimer t; +TEST_CASE_METHOD(BenchmarkFixture, "TestCreateEntities") { + AutoTimer t; - uint64_t count = 10000000L; - cout << "creating " << count << " entities" << endl; + uint64_t count = 10000000L; + cout << "creating " << count << " entities" << endl; - for (uint64_t i = 0; i < count; i++) { - em.create(); - } + for (uint64_t i = 0; i < count; i++) { + em.create(); } +} - SECTION("TestDestroyEntities") { - uint64_t count = 10000000L; - vector entities; - for (uint64_t i = 0; i < count; i++) { - entities.push_back(em.create()); - } +TEST_CASE_METHOD(BenchmarkFixture, "TestDestroyEntities") { + uint64_t count = 10000000L; + vector entities; + for (uint64_t i = 0; i < count; i++) { + entities.push_back(em.create()); + } - AutoTimer t; - cout << "destroying " << count << " entities" << endl; + AutoTimer t; + cout << "destroying " << count << " entities" << endl; - for (auto e : entities) { - e.destroy(); - } + for (auto e : entities) { + e.destroy(); } +} - SECTION("TestCreateEntitiesWithListener") { - Listener listen; - ev.subscribe(listen); +TEST_CASE_METHOD(BenchmarkFixture, "TestCreateEntitiesWithListener") { + Listener listen; + ev.subscribe(listen); - uint64_t count = 10000000L; + uint64_t count = 10000000L; - AutoTimer t; - cout << "creating " << count << " entities while notifying a single EntityCreatedEvent listener" << endl; + AutoTimer t; + cout << "creating " << count << " entities while notifying a single EntityCreatedEvent listener" << endl; - vector entities; - for (uint64_t i = 0; i < count; i++) { - entities.push_back(em.create()); - } + vector entities; + for (uint64_t i = 0; i < count; i++) { + entities.push_back(em.create()); } +} - SECTION("TestDestroyEntitiesWithListener") { - Listener listen; - ev.subscribe(listen); +TEST_CASE_METHOD(BenchmarkFixture, "TestDestroyEntitiesWithListener") { + Listener listen; + ev.subscribe(listen); - uint64_t count = 10000000L; - vector entities; - for (uint64_t i = 0; i < count; i++) { - entities.push_back(em.create()); - } + uint64_t count = 10000000L; + vector entities; + for (uint64_t i = 0; i < count; i++) { + entities.push_back(em.create()); + } - AutoTimer t; - cout << "destroying " << count << " entities" << endl; + AutoTimer t; + cout << "destroying " << count << " entities" << endl; - for (auto &e : entities) { - e.destroy(); - } + for (auto &e : entities) { + e.destroy(); } +} - SECTION("TestEntityIteration") { - uint64_t count = 10000000L; - vector entities; - for (uint64_t i = 0; i < count; i++) { - auto e = em.create(); - e.assign(); - entities.push_back(e); - } +TEST_CASE_METHOD(BenchmarkFixture, "TestEntityIteration") { + uint64_t count = 10000000L; + vector entities; + for (uint64_t i = 0; i < count; i++) { + auto e = em.create(); + e.assign(); + entities.push_back(e); + } - AutoTimer t; - cout << "iterating over " << count << " entities with a component 10 times" << endl; + AutoTimer t; + cout << "iterating over " << count << " entities with a component 10 times" << endl; - for (int i = 0; i < 10; ++i) { - Position *position; - for (auto e : em.entities_with_components(position)) { - } + for (int i = 0; i < 10; ++i) { + Position *position; + for (auto e : em.entities_with_components(position)) { } } } diff --git a/entityx/Entity_test.cc b/entityx/Entity_test.cc index c8693b5..db7ef18 100644 --- a/entityx/Entity_test.cc +++ b/entityx/Entity_test.cc @@ -78,341 +78,350 @@ ostream &operator<<(ostream &out, const Tag &tag) { return out; } -TEST_CASE("EntityManagerTest", "[entitymanager]") { - EventManager ev; - EntityManager em(ev); - SECTION("TestCreateEntity") { - REQUIRE(em.size() == 0UL); +struct EntityManagerFixture { + EntityManagerFixture() : em(ev) {} - Entity e2; - REQUIRE(!(e2.valid())); + EventManager ev; + EntityManager em; +}; - Entity e = em.create(); - REQUIRE(e.valid()); - REQUIRE(em.size() == 1UL); - e2 = e; - REQUIRE(e2.valid()); - } +TEST_CASE_METHOD(EntityManagerFixture, "TestCreateEntity") { + REQUIRE(em.size() == 0UL); - SECTION("TestEntityAsBoolean") { - REQUIRE(em.size() == 0UL); - Entity e = em.create(); - REQUIRE(e.valid()); - REQUIRE(em.size() == 1UL); - REQUIRE(!(!e)); + Entity e2; + REQUIRE(!(e2.valid())); - e.destroy(); + Entity e = em.create(); + REQUIRE(e.valid()); + REQUIRE(em.size() == 1UL); + + e2 = e; + REQUIRE(e2.valid()); +} - REQUIRE(em.size() == 0UL); +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityAsBoolean") { + REQUIRE(em.size() == 0UL); + Entity e = em.create(); + REQUIRE(e.valid()); + REQUIRE(em.size() == 1UL); + REQUIRE(!(!e)); - REQUIRE(!e); + e.destroy(); - Entity e2; // Not initialized - REQUIRE(!e2); - } + REQUIRE(em.size() == 0UL); - SECTION("TestEntityReuse") { - Entity e1 = em.create(); - Entity e2 = e1; - auto id = e1.id(); - REQUIRE(e1.valid()); - REQUIRE(e2.valid()); - e1.destroy(); - REQUIRE(!e1.valid()); - REQUIRE(!e2.valid()); - Entity e3 = em.create(); - // It is assumed that the allocation will reuse the same entity id, though - // the version will change. - auto new_id = e3.id(); - REQUIRE(new_id != id); - REQUIRE((new_id.id() & 0xffffffffUL) == (id.id() & 0xffffffffUL)); - } + REQUIRE(!e); - SECTION("TestComponentConstruction") { - auto e = em.create(); - auto p = e.assign(1, 2); - auto cp = e.component(); - REQUIRE(p == cp); - REQUIRE(1.0 == Approx(cp->x)); - REQUIRE(2.0 == Approx(cp->y)); - } + Entity e2; // Not initialized + REQUIRE(!e2); +} - SECTION("TestDestroyEntity") { - Entity e = em.create(); - Entity f = em.create(); - e.assign(); - f.assign(); - e.assign(); - f.assign(); +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityReuse") { + Entity e1 = em.create(); + Entity e2 = e1; + auto id = e1.id(); + REQUIRE(e1.valid()); + REQUIRE(e2.valid()); + e1.destroy(); + REQUIRE(!e1.valid()); + REQUIRE(!e2.valid()); + Entity e3 = em.create(); + // It is assumed that the allocation will reuse the same entity id, though + // the version will change. + auto new_id = e3.id(); + REQUIRE(new_id != id); + REQUIRE((new_id.id() & 0xffffffffUL) == (id.id() & 0xffffffffUL)); +} - REQUIRE(e.valid()); - REQUIRE(f.valid()); - REQUIRE(static_cast(e.component())); - REQUIRE(static_cast(e.component())); - REQUIRE(static_cast(f.component())); - REQUIRE(static_cast(f.component())); +TEST_CASE_METHOD(EntityManagerFixture, "TestComponentConstruction") { + auto e = em.create(); + auto p = e.assign(1, 2); + auto cp = e.component(); + REQUIRE(p == cp); + REQUIRE(1.0 == Approx(cp->x)); + REQUIRE(2.0 == Approx(cp->y)); +} - e.destroy(); +TEST_CASE_METHOD(EntityManagerFixture, "TestDestroyEntity") { + Entity e = em.create(); + Entity f = em.create(); + e.assign(); + f.assign(); + e.assign(); + f.assign(); + + REQUIRE(e.valid()); + REQUIRE(f.valid()); + REQUIRE(static_cast(e.component())); + REQUIRE(static_cast(e.component())); + REQUIRE(static_cast(f.component())); + REQUIRE(static_cast(f.component())); + + e.destroy(); + + REQUIRE(!(e.valid())); + REQUIRE(f.valid()); + REQUIRE(static_cast(f.component())); + REQUIRE(static_cast(f.component())); +} - REQUIRE(!(e.valid())); - REQUIRE(f.valid()); - REQUIRE(static_cast(f.component())); - REQUIRE(static_cast(f.component())); - } +TEST_CASE_METHOD(EntityManagerFixture, "TestGetEntitiesWithComponent") { + Entity e = em.create(); + Entity f = em.create(); + Entity g = em.create(); + e.assign(); + e.assign(); + f.assign(); + g.assign(); + REQUIRE(3 == size(em.entities_with_components())); + REQUIRE(1 == size(em.entities_with_components())); +} - SECTION("TestGetEntitiesWithComponent") { +TEST_CASE_METHOD(EntityManagerFixture, "TestGetEntitiesWithIntersectionOfComponents") { + vector entities; + for (int i = 0; i < 150; ++i) { Entity e = em.create(); - Entity f = em.create(); - Entity g = em.create(); - e.assign(); - e.assign(); - f.assign(); - g.assign(); - REQUIRE(3 == size(em.entities_with_components())); - REQUIRE(1 == size(em.entities_with_components())); + entities.push_back(e); + if (i % 2 == 0) e.assign(); + if (i % 3 == 0) e.assign(); } + REQUIRE(50 == size(em.entities_with_components())); + REQUIRE(75 == size(em.entities_with_components())); + REQUIRE(25 == size(em.entities_with_components())); +} - SECTION("TestGetEntitiesWithIntersectionOfComponents") { - vector entities; - for (int i = 0; i < 150; ++i) { - Entity e = em.create(); - entities.push_back(e); - if (i % 2 == 0) e.assign(); - if (i % 3 == 0) e.assign(); - } - REQUIRE(50 == size(em.entities_with_components())); - REQUIRE(75 == size(em.entities_with_components())); - REQUIRE(25 == size(em.entities_with_components())); +TEST_CASE_METHOD(EntityManagerFixture, "TestGetEntitiesWithComponentAndUnpacking") { + vector entities; + Entity e = em.create(); + Entity f = em.create(); + Entity g = em.create(); + std::vector> position_directions; + position_directions.push_back(std::make_pair( + e.assign(1.0f, 2.0f), e.assign(3.0f, 4.0f))); + position_directions.push_back(std::make_pair( + f.assign(7.0f, 8.0f), f.assign(9.0f, 10.0f))); + auto thetag = f.assign("tag"); + g.assign(5.0f, 6.0f); + int i = 0; + + Position *position; + REQUIRE(3 == size(em.entities_with_components(position))); + + Direction *direction; + for (auto unused_entity : em.entities_with_components(position, direction)) { + (void)unused_entity; + REQUIRE(static_cast(position)); + REQUIRE(static_cast(direction)); + auto pd = position_directions.at(i); + REQUIRE(position == pd.first); + REQUIRE(direction == pd.second); + ++i; } - - SECTION("TestGetEntitiesWithComponentAndUnpacking") { - vector entities; - Entity e = em.create(); - Entity f = em.create(); - Entity g = em.create(); - std::vector> position_directions; - position_directions.push_back(std::make_pair( - e.assign(1.0f, 2.0f), e.assign(3.0f, 4.0f))); - position_directions.push_back(std::make_pair( - f.assign(7.0f, 8.0f), f.assign(9.0f, 10.0f))); - auto thetag = f.assign("tag"); - g.assign(5.0f, 6.0f); - int i = 0; - - Position *position; - REQUIRE(3 == size(em.entities_with_components(position))); - - Direction *direction; - for (auto unused_entity : em.entities_with_components(position, direction)) { - (void)unused_entity; - REQUIRE(static_cast(position)); - REQUIRE(static_cast(direction)); - auto pd = position_directions.at(i); - REQUIRE(position == pd.first); - REQUIRE(direction == pd.second); - ++i; - } - REQUIRE(2 == i); - Tag *tag; - i = 0; - for (auto unused_entity : - em.entities_with_components(position, direction, tag)) { - (void)unused_entity; - REQUIRE(static_cast(position)); - REQUIRE(static_cast(direction)); - REQUIRE(static_cast(tag)); - auto pd = position_directions.at(1); - REQUIRE(position == pd.first); - REQUIRE(direction == pd.second); - REQUIRE(tag == thetag); - i++; - } - REQUIRE(1 == i); + REQUIRE(2 == i); + Tag *tag; + i = 0; + for (auto unused_entity : + em.entities_with_components(position, direction, tag)) { + (void)unused_entity; + REQUIRE(static_cast(position)); + REQUIRE(static_cast(direction)); + REQUIRE(static_cast(tag)); + auto pd = position_directions.at(1); + REQUIRE(position == pd.first); + REQUIRE(direction == pd.second); + REQUIRE(tag == thetag); + i++; } + REQUIRE(1 == i); +} - SECTION("TestUnpack") { - Entity e = em.create(); - auto p = e.assign(1.0, 2.0); - auto d = e.assign(3.0, 4.0); - auto t = e.assign("tag"); - - Position *up; - Direction *ud; - Tag *ut; - e.unpack(up); - REQUIRE(p == up); - e.unpack(up, ud); - REQUIRE(p == up); - REQUIRE(d == ud); - e.unpack(up, ud, ut); - REQUIRE(p == up); - REQUIRE(d == ud); - REQUIRE(t == ut); - } +TEST_CASE_METHOD(EntityManagerFixture, "TestUnpack") { + Entity e = em.create(); + auto p = e.assign(1.0, 2.0); + auto d = e.assign(3.0, 4.0); + auto t = e.assign("tag"); + + Position *up; + Direction *ud; + Tag *ut; + e.unpack(up); + REQUIRE(p == up); + e.unpack(up, ud); + REQUIRE(p == up); + REQUIRE(d == ud); + e.unpack(up, ud, ut); + REQUIRE(p == up); + REQUIRE(d == ud); + REQUIRE(t == ut); +} - // gcc 4.7.2 does not allow this struct to be declared locally inside the - // SECTION." //" SECTION("TestUnpackNullMissing") { - // Entity e = em.create(); - // auto p = e.assign(); - - // std::shared_ptr up(reinterpret_cast(0Xdeadbeef), - // NullDeleter()); - // std::shared_ptr ud(reinterpret_cast(0Xdeadbeef), - // NullDeleter()); - // e.unpack(up, ud); - // REQUIRE(p == up); - // REQUIRE(std::shared_ptr() == ud); - // } - - SECTION("TestComponentIdsDiffer") { - REQUIRE(Position::family() != Direction::family()); - } +// gcc 4.7.2 does not allow this struct to be declared locally inside the +// TEST_CASE_METHOD.EntityManagerFixture, " //" TEST_CASE_METHOD(EntityManagerFixture, "TestUnpackNullMissing") { +// Entity e = em.create(); +// auto p = e.assign(); + +// std::shared_ptr up(reinterpret_cast(0Xdeadbeef), +// NullDeleter()); +// std::shared_ptr ud(reinterpret_cast(0Xdeadbeef), +// NullDeleter()); +// e.unpack(up, ud); +// REQUIRE(p == up); +// REQUIRE(std::shared_ptr() == ud); +// } + +TEST_CASE_METHOD(EntityManagerFixture, "TestComponentIdsDiffer") { + REQUIRE(Position::family() != Direction::family()); +} - SECTION("TestEntityCreatedEvent") { - struct EntityCreatedEventReceiver - : public Receiver { - void receive(const EntityCreatedEvent &event) { - created.push_back(event.entity); - } +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityCreatedEvent") { + struct EntityCreatedEventReceiver + : public Receiver { + void receive(const EntityCreatedEvent &event) { + created.push_back(event.entity); + } - vector created; - }; + vector created; + }; - EntityCreatedEventReceiver receiver; - ev.subscribe(receiver); + EntityCreatedEventReceiver receiver; + ev.subscribe(receiver); - REQUIRE(0UL == receiver.created.size()); - for (int i = 0; i < 10; ++i) { - em.create(); - } - REQUIRE(10UL == receiver.created.size()); + REQUIRE(0UL == receiver.created.size()); + for (int i = 0; i < 10; ++i) { + em.create(); } + REQUIRE(10UL == receiver.created.size()); +} - SECTION("TestEntityDestroyedEvent") { - struct EntityDestroyedEventReceiver - : public Receiver { - void receive(const EntityDestroyedEvent &event) { - destroyed.push_back(event.entity); - } +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityDestroyedEvent") { + struct EntityDestroyedEventReceiver + : public Receiver { + void receive(const EntityDestroyedEvent &event) { + destroyed.push_back(event.entity); + } - vector destroyed; - }; + vector destroyed; + }; - EntityDestroyedEventReceiver receiver; - ev.subscribe(receiver); + EntityDestroyedEventReceiver receiver; + ev.subscribe(receiver); - REQUIRE(0UL == receiver.destroyed.size()); - vector entities; - for (int i = 0; i < 10; ++i) { - entities.push_back(em.create()); - } - REQUIRE(0UL == receiver.destroyed.size()); - for (auto e : entities) { - e.destroy(); - } - REQUIRE(entities == receiver.destroyed); + REQUIRE(0UL == receiver.destroyed.size()); + vector entities; + for (int i = 0; i < 10; ++i) { + entities.push_back(em.create()); + } + REQUIRE(0UL == receiver.destroyed.size()); + for (auto e : entities) { + e.destroy(); } + REQUIRE(entities == receiver.destroyed); +} - SECTION("TestComponentAddedEvent") { - struct ComponentAddedEventReceiver - : public Receiver { - void receive(const ComponentAddedEvent &event) { - auto p = event.component; - float n = static_cast(position_events); - REQUIRE(p->x == n); - REQUIRE(p->y == n); - position_events++; - } - - void receive(const ComponentAddedEvent &event) { - auto p = event.component; - float n = static_cast(direction_events); - REQUIRE(p->x == -n); - REQUIRE(p->y == -n); - direction_events++; - } - - int position_events = 0; - int direction_events = 0; - }; - - ComponentAddedEventReceiver receiver; - ev.subscribe>(receiver); - ev.subscribe>(receiver); - - REQUIRE(ComponentAddedEvent::family() != - ComponentAddedEvent::family()); - - REQUIRE(0 == receiver.position_events); - REQUIRE(0 == receiver.direction_events); - for (int i = 0; i < 10; ++i) { - Entity e = em.create(); - e.assign(static_cast(i), static_cast(i)); - e.assign(static_cast(-i), static_cast(-i)); +TEST_CASE_METHOD(EntityManagerFixture, "TestComponentAddedEvent") { + struct ComponentAddedEventReceiver + : public Receiver { + void receive(const ComponentAddedEvent &event) { + auto p = event.component; + float n = static_cast(position_events); + REQUIRE(p->x == n); + REQUIRE(p->y == n); + position_events++; } - REQUIRE(10 == receiver.position_events); - REQUIRE(10 == receiver.direction_events); - } + void receive(const ComponentAddedEvent &event) { + auto p = event.component; + float n = static_cast(direction_events); + REQUIRE(p->x == -n); + REQUIRE(p->y == -n); + direction_events++; + } - SECTION("TestComponentRemovedEvent") { - struct ComponentRemovedReceiver : public Receiver { - void receive(const ComponentRemovedEvent &event) { - removed = event.component; - } + int position_events = 0; + int direction_events = 0; + }; - Direction *removed = nullptr; - }; + ComponentAddedEventReceiver receiver; + ev.subscribe>(receiver); + ev.subscribe>(receiver); - ComponentRemovedReceiver receiver; - ev.subscribe>(receiver); + REQUIRE(ComponentAddedEvent::family() != + ComponentAddedEvent::family()); - REQUIRE(!(receiver.removed)); + REQUIRE(0 == receiver.position_events); + REQUIRE(0 == receiver.direction_events); + for (int i = 0; i < 10; ++i) { Entity e = em.create(); - Direction *p = e.assign(1.0, 2.0); - e.remove(); - REQUIRE(receiver.removed == p); - REQUIRE(!(e.component())); + e.assign(static_cast(i), static_cast(i)); + e.assign(static_cast(-i), static_cast(-i)); } + REQUIRE(10 == receiver.position_events); + REQUIRE(10 == receiver.direction_events); +} - SECTION("TestEntityAssignment") { - Entity a, b; - a = em.create(); - REQUIRE(a != b); - b = a; - REQUIRE(a == b); - a.invalidate(); - REQUIRE(a != b); - } - SECTION("TestEntityDestroyAll") { - Entity a = em.create(), b = em.create(); - em.reset(); - REQUIRE(!(a.valid())); - REQUIRE(!(b.valid())); - } +TEST_CASE_METHOD(EntityManagerFixture, "TestComponentRemovedEvent") { + struct ComponentRemovedReceiver : public Receiver { + void receive(const ComponentRemovedEvent &event) { + removed = event.component; + } - SECTION("TestEntityDestroyHole") { - std::vector entities; + Direction *removed = nullptr; + }; - auto count = [&em]()->int { - auto e = em.entities_with_components(); - return std::count_if(e.begin(), e.end(), - [](const Entity &) { return true; }); - }; + ComponentRemovedReceiver receiver; + ev.subscribe>(receiver); - for (int i = 0; i < 5000; i++) { - auto e = em.create(); - e.assign(); - entities.push_back(e); - } + REQUIRE(!(receiver.removed)); + Entity e = em.create(); + Direction *p = e.assign(1.0, 2.0); + e.remove(); + REQUIRE(receiver.removed == p); + REQUIRE(!(e.component())); +} + +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityAssignment") { + Entity a, b; + a = em.create(); + REQUIRE(a != b); + b = a; + REQUIRE(a == b); + a.invalidate(); + REQUIRE(a != b); +} + +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityDestroyAll") { + Entity a = em.create(), b = em.create(); + em.reset(); + REQUIRE(!(a.valid())); + REQUIRE(!(b.valid())); +} - REQUIRE(count() == 5000); +TEST_CASE_METHOD(EntityManagerFixture, "TestEntityDestroyHole") { + std::vector entities; - entities[2500].destroy(); + auto count = [this]()->int { + auto e = em.entities_with_components(); + return std::count_if(e.begin(), e.end(), + [](const Entity &) { return true; }); + }; - REQUIRE(count() == 4999); + for (int i = 0; i < 5000; i++) { + auto e = em.create(); + e.assign(); + entities.push_back(e); } + + REQUIRE(count() == 5000); + + entities[2500].destroy(); + + REQUIRE(count() == 4999); +} + +TEST_CASE_METHOD(EntityManagerFixture, "DeleteComponentThrowsBadAlloc") { + Position *position = new Position(); + REQUIRE_THROWS_AS(delete position, std::bad_alloc); } diff --git a/entityx/System_test.cc b/entityx/System_test.cc index 0f2b663..9253003 100644 --- a/entityx/System_test.cc +++ b/entityx/System_test.cc @@ -51,11 +51,11 @@ class MovementSystem : public System { string label; }; -class TestContainer : public EntityX { +class EntitiesFixture : public EntityX { public: std::vector created_entities; - void initialize() { + EntitiesFixture() { for (int i = 0; i < 150; ++i) { Entity e = entities.create(); created_entities.push_back(e); @@ -65,33 +65,28 @@ class TestContainer : public EntityX { } }; -TEST_CASE("SystemManagerTest", "[systemmanager]") { - TestContainer manager; - manager.initialize(); +TEST_CASE_METHOD(EntitiesFixture, "TestConstructSystemWithArgs") { + systems.add("movement"); + systems.configure(); - SECTION("TestConstructSystemWithArgs") { - manager.systems.add("movement"); - manager.systems.configure(); - - REQUIRE("movement" == manager.systems.system()->label); - } - - SECTION("TestApplySystem") { - manager.systems.add(); - manager.systems.configure(); + REQUIRE("movement" == systems.system()->label); +} - manager.systems.update(0.0); - Position *position; - Direction *direction; - for (auto entity : manager.created_entities) { - entity.unpack(position, direction); - if (position && direction) { - REQUIRE(2.0 == Approx(position->x)); - REQUIRE(3.0 == Approx(position->y)); - } else if (position) { - REQUIRE(1.0 == Approx(position->x)); - REQUIRE(2.0 == Approx(position->y)); - } +TEST_CASE_METHOD(EntitiesFixture, "TestApplySystem") { + systems.add(); + systems.configure(); + + systems.update(0.0); + Position *position; + Direction *direction; + for (auto entity : created_entities) { + entity.unpack(position, direction); + if (position && direction) { + REQUIRE(2.0 == Approx(position->x)); + REQUIRE(3.0 == Approx(position->y)); + } else if (position) { + REQUIRE(1.0 == Approx(position->x)); + REQUIRE(2.0 == Approx(position->y)); } } } diff --git a/entityx/deps/Dependencies_test.cc b/entityx/deps/Dependencies_test.cc index e18623d..fe9844c 100644 --- a/entityx/deps/Dependencies_test.cc +++ b/entityx/deps/Dependencies_test.cc @@ -26,44 +26,39 @@ struct B : public entityx::Component { }; struct C : public entityx::Component {}; +TEST_CASE_METHOD(entityx::EntityX, "TestSingleDependency") { + systems.add>(); + systems.configure(); -TEST_CASE("DepsTest", "[deps]") { - entityx::EntityX ex; - - SECTION("TestSingleDependency") { - ex.systems.add>(); - ex.systems.configure(); - - entityx::Entity e = ex.entities.create(); - REQUIRE(!static_cast(e.component())); - REQUIRE(!static_cast(e.component())); - e.assign(); - REQUIRE(static_cast(e.component())); - REQUIRE(static_cast(e.component())); - } + entityx::Entity e = entities.create(); + REQUIRE(!static_cast(e.component())); + REQUIRE(!static_cast(e.component())); + e.assign(); + REQUIRE(static_cast(e.component())); + REQUIRE(static_cast(e.component())); +} - SECTION("TestMultipleDependencies") { - ex.systems.add>(); - ex.systems.configure(); +TEST_CASE_METHOD(entityx::EntityX, "TestMultipleDependencies") { + systems.add>(); + systems.configure(); - entityx::Entity e = ex.entities.create(); - REQUIRE(!static_cast(e.component())); - REQUIRE(!static_cast(e.component())); - REQUIRE(!static_cast(e.component())); - e.assign(); - REQUIRE(static_cast(e.component())); - REQUIRE(static_cast(e.component())); - REQUIRE(static_cast(e.component())); - } + entityx::Entity e = entities.create(); + REQUIRE(!static_cast(e.component())); + REQUIRE(!static_cast(e.component())); + REQUIRE(!static_cast(e.component())); + e.assign(); + REQUIRE(static_cast(e.component())); + REQUIRE(static_cast(e.component())); + REQUIRE(static_cast(e.component())); +} - SECTION("TestDependencyDoesNotRecreateComponent") { - ex.systems.add>(); - ex.systems.configure(); +TEST_CASE_METHOD(entityx::EntityX, "TestDependencyDoesNotRecreateComponent") { + systems.add>(); + systems.configure(); - entityx::Entity e = ex.entities.create(); - e.assign(true); - REQUIRE(e.component()->b); - e.assign(); - REQUIRE(e.component()->b); - } + entityx::Entity e = entities.create(); + e.assign(true); + REQUIRE(e.component()->b); + e.assign(); + REQUIRE(e.component()->b); } diff --git a/entityx/help/Pool_test.cc b/entityx/help/Pool_test.cc index 611b8c0..f04bc29 100644 --- a/entityx/help/Pool_test.cc +++ b/entityx/help/Pool_test.cc @@ -27,7 +27,7 @@ struct Position { }; -TEST_CASE("TestPoolReserve", "[pool]") { +TEST_CASE("TestPoolReserve") { entityx::Pool pool; REQUIRE(0 == pool.capacity()); REQUIRE(0 == pool.chunks()); @@ -41,7 +41,7 @@ TEST_CASE("TestPoolReserve", "[pool]") { REQUIRE(2 == pool.chunks()); } -TEST_CASE("TestPoolPointers", "[pool]") { +TEST_CASE("TestPoolPointers") { entityx::Pool pool; std::vector ptrs; for (int i = 0; i < 4; i++) { @@ -66,7 +66,7 @@ TEST_CASE("TestPoolPointers", "[pool]") { REQUIRE(extrapolated_p24 != p24); } -TEST_CASE("TestDeconstruct", "[pool]") { +TEST_CASE("TestDeconstruct") { entityx::Pool pool; pool.expand(8); -- cgit v1.2.3