summaryrefslogtreecommitdiff
path: root/lib/tests
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-05-16 18:39:44 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-05-16 18:39:44 +0200
commit842097d321e2ad9eedd7a171cdcca001d112de55 (patch)
treedc058fe2fe0a43198564882c12bea0acd3749af8 /lib/tests
parent39d704461bff127a54b0b64e68135ed48b3d989b (diff)
downloadturns-842097d321e2ad9eedd7a171cdcca001d112de55.tar.xz
turns-842097d321e2ad9eedd7a171cdcca001d112de55.zip
lib: implement addition of participants
Diffstat (limited to 'lib/tests')
-rw-r--r--lib/tests/turns-turn-order.cpp56
-rw-r--r--lib/tests/turnsmm/turn-order.cpp50
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