From 842097d321e2ad9eedd7a171cdcca001d112de55 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 16 May 2025 18:39:44 +0200 Subject: lib: implement addition of participants --- lib/tests/turns-turn-order.cpp | 56 +++++++++++++++++++++++++++++++++------- lib/tests/turnsmm/turn-order.cpp | 50 +++++++++++++++++++++++++++++++---- 2 files changed, 91 insertions(+), 15 deletions(-) (limited to 'lib/tests') diff --git a/lib/tests/turns-turn-order.cpp b/lib/tests/turns-turn-order.cpp index e0ee431..05e3b07 100644 --- a/lib/tests/turns-turn-order.cpp +++ b/lib/tests/turns-turn-order.cpp @@ -6,6 +6,8 @@ #include #include +#include +#include SCENARIO("Creating a turn order", "[lib][object][lifetime]") { @@ -13,17 +15,12 @@ SCENARIO("Creating a turn order", "[lib][object][lifetime]") { g_autoptr(TurnsTurnOrder) instance = turns_turn_order_new(); - THEN("it's participant count is 0") + THEN("its participant count is 0") { REQUIRE(turns_turn_order_get_participant_count(instance) == 0uz); - - auto property_value = decltype(turns_turn_order_get_participant_count(instance)){}; - g_object_get(instance, "participant-count", &property_value, nullptr); - - REQUIRE(property_value == 0); } - THEN("it's running state is false") + THEN("its running state is false") { REQUIRE_FALSE(turns_turn_order_get_running(instance)); @@ -33,20 +30,59 @@ SCENARIO("Creating a turn order", "[lib][object][lifetime]") REQUIRE_FALSE(property_value); } - THEN("it's item count is 0") + THEN("its item count is 0") { REQUIRE(g_list_model_get_n_items(G_LIST_MODEL(instance)) == 0); } - THEN("it's item type is Turns.Participant") + THEN("its item type is Turns.Participant") { REQUIRE(g_list_model_get_item_type(G_LIST_MODEL(instance)) == turns_participant_get_type()); } - THEN("it's first item is NULL") + THEN("its first item is NULL") { REQUIRE(g_list_model_get_item(G_LIST_MODEL(instance), 0) == nullptr); REQUIRE(g_list_model_get_object(G_LIST_MODEL(instance), 0) == nullptr); } } +} + +SCENARIO("Modifying a turn order", "[lib][object][data]") +{ + GIVEN("An empty turn order") + { + g_autoptr(TurnsTurnOrder) instance = turns_turn_order_new(); + CHECK(turns_turn_order_get_participant_count(instance) == 0); + + WHEN("a participant is added") + { + g_autoptr(TurnsParticipant) participant = turns_participant_new_with("Test Participant", 10.0f, TURNS_DISPOSITION_FRIENDLY); + turns_turn_order_add(instance, participant); + + THEN("its participant count is 1") + { + REQUIRE(turns_turn_order_get_participant_count(instance) == 1); + } + + THEN("its running state is false") + { + REQUIRE_FALSE(turns_turn_order_get_running(instance)); + } + + THEN("its item count is 1") + { + REQUIRE(g_list_model_get_n_items(G_LIST_MODEL(instance)) == 1); + } + + THEN("its first item is the same participant") + { + g_autoptr(TurnsParticipant) item = TURNS_PARTICIPANT(g_list_model_get_item(G_LIST_MODEL(instance), 0)); + REQUIRE(item == participant); + + g_autoptr(TurnsParticipant) object = TURNS_PARTICIPANT(g_list_model_get_object(G_LIST_MODEL(instance), 0)); + REQUIRE(TURNS_PARTICIPANT(object) == participant); + } + } + } } \ No newline at end of file diff --git a/lib/tests/turnsmm/turn-order.cpp b/lib/tests/turnsmm/turn-order.cpp index ed9d586..089e6eb 100644 --- a/lib/tests/turnsmm/turn-order.cpp +++ b/lib/tests/turnsmm/turn-order.cpp @@ -4,6 +4,8 @@ #include +#include + #include SCENARIO("Creating a turn order", "[lib][object][lifetime]") @@ -12,32 +14,70 @@ SCENARIO("Creating a turn order", "[lib][object][lifetime]") { auto instance = Turns::TurnOrder{}; - THEN("it's participant count is 0") + THEN("its participant count is 0") { REQUIRE(instance.get_participant_count() == 0uz); REQUIRE(instance.get_property("participant-count") == 0); } - THEN("it's running state is false") + THEN("its running state is false") { REQUIRE_FALSE(instance.get_running()); REQUIRE_FALSE(instance.get_property("running")); } - THEN("it's item count is 0") + THEN("its item count is 0") { REQUIRE(instance.get_n_items() == 0); } - THEN("it's item type is Turns.Participant") + THEN("its item type is Turns.Participant") { REQUIRE(instance.get_item_type() == Turns::Participant::get_type()); } - THEN("it's first item is NULL") + 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); + } + } + } } \ No newline at end of file -- cgit v1.2.3