diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-05-16 18:39:44 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-05-16 18:39:44 +0200 |
| commit | 842097d321e2ad9eedd7a171cdcca001d112de55 (patch) | |
| tree | dc058fe2fe0a43198564882c12bea0acd3749af8 /lib/tests | |
| parent | 39d704461bff127a54b0b64e68135ed48b3d989b (diff) | |
| download | turns-842097d321e2ad9eedd7a171cdcca001d112de55.tar.xz turns-842097d321e2ad9eedd7a171cdcca001d112de55.zip | |
lib: implement addition of participants
Diffstat (limited to 'lib/tests')
| -rw-r--r-- | lib/tests/turns-turn-order.cpp | 56 | ||||
| -rw-r--r-- | lib/tests/turnsmm/turn-order.cpp | 50 |
2 files changed, 91 insertions, 15 deletions
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 <gio/gio.h> #include <glib-object.h> +#include <glibconfig.h> +#include <turns-disposition.h> 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 <catch2/catch_test_macros.hpp> +#include <turnsmm/enums.hpp> + #include <cstddef> 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<std::size_t>("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<std::size_t>("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<Turns::Participant>(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 |
