#include "turnsmm/turn-order.hpp" #include "turnsmm/participant.hpp" #include #include #include SCENARIO("Creating a turn order", "[lib][object][lifetime]") { GIVEN("A turn order constructed using the default constructor") { auto instance = Turns::TurnOrder{}; THEN("its participant count is 0") { REQUIRE(instance.get_participant_count() == 0uz); REQUIRE(instance.get_property("participant-count") == 0); } THEN("its running state is false") { REQUIRE_FALSE(instance.get_running()); REQUIRE_FALSE(instance.get_property("running")); } THEN("its item count is 0") { REQUIRE(instance.get_n_items() == 0); } THEN("its item type is Turns.Participant") { REQUIRE(instance.get_item_type() == Turns::Participant::get_type()); } THEN("its first item is NULL") { REQUIRE(instance.get_object(0) == nullptr); REQUIRE(instance.get_typed_object(0) == nullptr); } } } SCENARIO("Modifying a turn order", "[lib][object][data]") { GIVEN("An empty turn order") { auto instance = Turns::TurnOrder{}; CHECK(instance.get_participant_count() == 0); WHEN("a participant is added") { auto participant = Turns::Participant::create("Test Participant", 10.0f, Turns::Disposition::Friendly); instance.add(participant); THEN("its participant count is 1") { REQUIRE(instance.get_participant_count() == 1); } THEN("its running state is false") { REQUIRE_FALSE(instance.get_running()); } THEN("its item count is 1") { REQUIRE(instance.get_n_items() == 1); } THEN("its first item is the same participant") { auto obj = instance.get_object(0); auto cnt = obj->gobj()->ref_count; REQUIRE(cnt > 0); REQUIRE(obj == participant); } } } }