diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-23 15:08:19 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-23 15:08:19 +0200 |
| commit | 4ec6a2ae12b6adb843c0777649ff45a741ca6cbc (patch) | |
| tree | 93dc2ba99dbcb42b2af73f0a3c4cd4f0c0f091c4 /domain/tests/turn_order.cpp | |
| parent | 5f4249a37ce816b8deceb299bc841190fbb15983 (diff) | |
| download | turns-4ec6a2ae12b6adb843c0777649ff45a741ca6cbc.tar.xz turns-4ec6a2ae12b6adb843c0777649ff45a741ca6cbc.zip | |
domain: redesign turn_order
Diffstat (limited to 'domain/tests/turn_order.cpp')
| -rw-r--r-- | domain/tests/turn_order.cpp | 434 |
1 files changed, 98 insertions, 336 deletions
diff --git a/domain/tests/turn_order.cpp b/domain/tests/turn_order.cpp index de1689c..eb05581 100644 --- a/domain/tests/turn_order.cpp +++ b/domain/tests/turn_order.cpp @@ -1,459 +1,221 @@ #include "turns/domain/turn_order.hpp" +#include "turns/domain/participant.hpp" + #include <catch2/catch_test_macros.hpp> -#include <glibmm/ustring.h> +#include <giomm/liststore.h> namespace turns::domain::tests { - SCENARIO("Queries on a fresh turn_order instance", "[turn_order]") { GIVEN("an empty turn_order") { auto instance = turn_order::create(); - THEN("active_participant() is turn_order::invalid_participant_index") + THEN("get_n_items() returns 0") { - REQUIRE(instance->active_participant() == turn_order::invalid_participant_index); + auto str = Gio::ListStore<Glib::Object>::create(); + REQUIRE(instance->get_n_items() == str->get_n_items()); } - THEN("empty() is true") + THEN("get_type() returns participant::get_type()") { - REQUIRE(instance->empty()); + REQUIRE(instance->get_item_type() == participant::get_type()); } - THEN("get() returns a nullptr") + THEN("get_typed_object(0) returns nullptr") { - REQUIRE(instance->get(0) == nullptr); + REQUIRE(instance->get_typed_object<participant>(0) == nullptr); } - THEN("list_model() returns a non-null pointer") + THEN("has_next() returns false") { - REQUIRE(instance->list_model()); + REQUIRE_FALSE(instance->has_next()); } - THEN("round() returns 0") + THEN("has_previous() returns false") { - REQUIRE(instance->round() == 0); + REQUIRE_FALSE(instance->has_previous()); } - THEN("running() returns false") + THEN("is_empty() returns true") { - REQUIRE_FALSE(instance->running()); + REQUIRE(instance->is_empty()); } - THEN("size() returns 0") + THEN("is_running() returns false") { - REQUIRE(instance->size() == 0); + REQUIRE_FALSE(instance->is_running()); } - THEN("size() returns the same value as list_model()->get_n_item()") + THEN("round_number() returns invalid_round_number") { - REQUIRE(instance->size() == instance->list_model()->get_n_items()); + REQUIRE(instance->round_number() == turn_order::invalid_round_number); } + } + } - WHEN("accessing turn_order:active-participant") - { - THEN("get() returns turn_order::invalid_participant_index") - { - REQUIRE(instance->property_active_participant().get_value() == turn_order::invalid_participant_index); - } + SCENARIO("Adding participants") + { + auto instance = turn_order::create(); - THEN("get_object() returns a pointer to the instance") - { - REQUIRE(instance->property_active_participant().get_object() == instance.get()); - } + GIVEN("a participant has been added to a turn_order") + { + instance->add("Participant #0", 0, disposition::neutral); - THEN("get_name() returns \"active-participant\"") - { - REQUIRE(instance->property_active_participant().get_name() == Glib::ustring{"active-participant"}); - } + THEN("get_n_items() returns 1") + { + REQUIRE(instance->get_n_items() == 1); } - WHEN("accessing turn_order:empty") + THEN("get_typed_object(0) returns a non-null pointer") { - THEN("get() returns true") - { - REQUIRE(instance->property_empty().get_value()); - } - - THEN("get_object() returns a pointer to the instance") - { - REQUIRE(instance->property_empty().get_object() == instance.get()); - } - - THEN("get_name() returns \"empty\"") - { - REQUIRE(instance->property_empty().get_name() == Glib::ustring{"empty"}); - } + REQUIRE(instance->get_typed_object<participant>(0) != nullptr); } - WHEN("accessing turn_order:has-next") + THEN("has_next() returns true") { - THEN("get() returns false") - { - REQUIRE_FALSE(instance->property_has_next().get_value()); - } - - THEN("get_object() returns a pointer to the instance") - { - REQUIRE(instance->property_has_next().get_object() == instance.get()); - } + REQUIRE(instance->has_next()); + } - THEN("get_name() returns \"has-next\"") - { - REQUIRE(instance->property_has_next().get_name() == Glib::ustring{"has-next"}); - } + THEN("has_previous() returns false") + { + REQUIRE_FALSE(instance->has_previous()); } - WHEN("accessing turn_order:has-previous") + THEN("is_empty() returns false") { - THEN("get() returns false") - { - REQUIRE_FALSE(instance->property_has_previous().get_value()); - } + REQUIRE_FALSE(instance->is_empty()); + } - THEN("get_object() returns a pointer to the instance") - { - REQUIRE(instance->property_has_previous().get_object() == instance.get()); - } + THEN("is_running() returns false") + { + REQUIRE_FALSE(instance->is_running()); + } - THEN("get_name() returns \"has-previous\"") - { - REQUIRE(instance->property_has_previous().get_name() == Glib::ustring{"has-previous"}); - } + THEN("round_number() returns invalid_round_number") + { + REQUIRE(instance->round_number() == turn_order::invalid_round_number); } - WHEN("accessing turn_order:running") + WHEN("the turn_order is start()ed") { - THEN("get() returns false") + instance->start(); + + THEN("get_n_items() still returns 1") { - REQUIRE_FALSE(instance->property_running().get_value()); + REQUIRE(instance->get_n_items() == 1); } - THEN("get_object() returns a pointer to the instance") + THEN("get_typed_object(0) still returns a non-null pointer") { - REQUIRE(instance->property_running().get_object() == instance.get()); + REQUIRE(instance->get_typed_object<participant>(0) != nullptr); } - THEN("get_name() returns \"running\"") + THEN("has_next() still returns true") { - REQUIRE(instance->property_running().get_name() == Glib::ustring{"running"}); + REQUIRE(instance->has_next()); } - } - WHEN("accessing turn_order:running") - { - THEN("get() returns 0") + THEN("has_previous() still returns false") { - REQUIRE(instance->property_round().get_value() == 0); + REQUIRE_FALSE(instance->has_previous()); } - THEN("get_object() returns a pointer to the instance") + THEN("is_empty() still returns false") { - REQUIRE(instance->property_round().get_object() == instance.get()); + REQUIRE_FALSE(instance->is_empty()); } - THEN("get_name() returns \"round\"") + THEN("is_running() returns true") { - REQUIRE(instance->property_round().get_name() == Glib::ustring{"round"}); + REQUIRE(instance->is_running()); } - } - } - } - - SCENARIO("Modification of an empty turn_order", "[turn_order]") - { - auto instance = turn_order::create(); - - GIVEN("a single participant was added") - { - auto constexpr priority = 12.0f; - instance->add("Participant #0", priority, disposition::friendly); - AND_GIVEN("the turn_order was never started") - { - WHEN("no other modification occurs") + THEN("round_number() returns 0") { - THEN("active_participant() returns turn_order::invalid_participant_index") - { - REQUIRE(instance->active_participant() == turn_order::invalid_participant_index); - } - - THEN("empty() returns false") - { - REQUIRE_FALSE(instance->empty()); - } - - THEN("get() returns a valid pointer for index 0") - { - REQUIRE(instance->get(0)); - } - - THEN("get() returns a nullptr for an index greater than 0") - { - REQUIRE(instance->get(1) == nullptr); - } - - THEN("round() returns 0") - { - REQUIRE(instance->round() == 0); - } - - THEN("running() returns false") - { - REQUIRE_FALSE(instance->running()); - } - - THEN("size() returns 1") - { - REQUIRE(instance->size() == 1); - } - - THEN("turn_order:has-next is false") - { - REQUIRE(instance->property_has_next() == false); - } - - THEN("turn_order:has-previous is false") - { - REQUIRE(instance->property_has_previous() == false); - } - - THEN("turn_order:running is false") - { - REQUIRE(instance->property_running() == false); - } + REQUIRE(instance->round_number() == 0); } - WHEN("the participant is removed again") + AND_WHEN("invoking previous()") { - instance->remove(0); - - THEN("active_participant() returns turn_order::invalid_participant_index") - { - REQUIRE(instance->active_participant() == turn_order::invalid_participant_index); - } - - THEN("empty() returns true") - { - REQUIRE(instance->empty()); - } + instance->previous(); - THEN("get() returns a nullptr for index 0") + THEN("get_n_items() still returns 1") { - REQUIRE(instance->get(0) == nullptr); + REQUIRE(instance->get_n_items() == 1); } - THEN("round() returns 0") + THEN("get_typed_object(0) still returns a non-null pointer") { - REQUIRE(instance->round() == 0); + REQUIRE(instance->get_typed_object<participant>(0) != nullptr); } - THEN("running() returns false") + THEN("has_next() still returns true") { - REQUIRE_FALSE(instance->running()); + REQUIRE(instance->has_next()); } - THEN("size() returns 0") + THEN("has_previous() still returns false") { - REQUIRE(instance->size() == 0); + REQUIRE_FALSE(instance->has_previous()); } - THEN("turn_order:has-next is false") + THEN("is_empty() still returns false") { - REQUIRE(instance->property_has_next() == false); + REQUIRE_FALSE(instance->is_empty()); } - THEN("turn_order:has-previous is false") + THEN("is_running() returns true") { - REQUIRE(instance->property_has_previous() == false); + REQUIRE(instance->is_running()); } - THEN("turn_order:running is false") + THEN("round_number() returns 0") { - REQUIRE(instance->property_running() == false); + REQUIRE(instance->round_number() == 0); } } - WHEN("another participant with the same priority is added") + AND_WHEN("invoking next()") { - instance->add("Participant #1", priority, disposition::friendly); - - THEN("active_participant() returns turn_order::invalid_participant_index") - { - REQUIRE(instance->active_participant() == turn_order::invalid_participant_index); - } - - THEN("empty() returns false") - { - REQUIRE_FALSE(instance->empty()); - } - - THEN("get() returns a valid pointer for index 0") - { - REQUIRE(instance->get(0)); - } - - THEN("get() returns a valid pointer for index 1") - { - REQUIRE(instance->get(1)); - } - - THEN("get() returns a nullptr for an index greater than 1") - { - REQUIRE(instance->get(2) == nullptr); - } - - THEN("get(0) returns the participant that was added first") - { - REQUIRE(instance->get(0)->get_name() == "Participant #0"); - } - - THEN("get(1) returns the participant that was added second") - { - REQUIRE(instance->get(1)->get_name() == "Participant #1"); - } - - THEN("round() returns 0") - { - REQUIRE(instance->round() == 0); - } + instance->next(); - THEN("running() returns false") + THEN("get_n_items() still returns 1") { - REQUIRE_FALSE(instance->running()); + REQUIRE(instance->get_n_items() == 1); } - THEN("size() returns 2") + THEN("get_typed_object(0) still returns a non-null pointer") { - REQUIRE(instance->size() == 2); + REQUIRE(instance->get_typed_object<participant>(0) != nullptr); } - THEN("turn_order:has-next is false") + THEN("has_next() still returns true") { - REQUIRE(instance->property_has_next() == false); + REQUIRE(instance->has_next()); } - THEN("turn_order:has-previous is false") + THEN("has_previous() returns true") { - REQUIRE(instance->property_has_previous() == false); + REQUIRE(instance->has_previous()); } - THEN("turn_order:running is false") + THEN("is_empty() still returns false") { - REQUIRE(instance->property_running() == false); + REQUIRE_FALSE(instance->is_empty()); } - AND_WHEN("the participant at index 0 is removed") + THEN("is_running() returns true") { - instance->remove(0); - - THEN("active_participant() returns turn_order::invalid_participant_index") - { - REQUIRE(instance->active_participant() == turn_order::invalid_participant_index); - } - - THEN("empty() returns false") - { - REQUIRE_FALSE(instance->empty()); - } - - THEN("get() returns a valid pointer for index 0") - { - REQUIRE(instance->get(0)); - } - - THEN("get() returns a nullptr for an index greater than 0") - { - REQUIRE(instance->get(1) == nullptr); - } - - THEN("get(0) returns the participant that was added second") - { - REQUIRE(instance->get(0)->get_name() == "Participant #1"); - } - - THEN("round() returns 0") - { - REQUIRE(instance->round() == 0); - } - - THEN("running() returns false") - { - REQUIRE_FALSE(instance->running()); - } - - THEN("size() returns 1") - { - REQUIRE(instance->size() == 1); - } - - THEN("turn_order:has-next is false") - { - REQUIRE(instance->property_has_next() == false); - } - - THEN("turn_order:has-previous is false") - { - REQUIRE(instance->property_has_previous() == false); - } - - THEN("turn_order:running is false") - { - REQUIRE(instance->property_running() == false); - } + REQUIRE(instance->is_running()); } - AND_WHEN("the turn_order is cleared") + THEN("round_number() returns 1") { - instance->clear(); - - THEN("active_participant() returns turn_order::invalid_participant_index") - { - REQUIRE(instance->active_participant() == turn_order::invalid_participant_index); - } - - THEN("empty() returns true") - { - REQUIRE(instance->empty()); - } - - THEN("get() returns a nullptr pointer for index 0") - { - REQUIRE(instance->get(0) == nullptr); - } - - THEN("round() returns 0") - { - REQUIRE(instance->round() == 0); - } - - THEN("running() returns false") - { - REQUIRE_FALSE(instance->running()); - } - - THEN("size() returns 0") - { - REQUIRE(instance->size() == 0); - } - - THEN("turn_order:has-next is false") - { - REQUIRE(instance->property_has_next() == false); - } - - THEN("turn_order:has-previous is false") - { - REQUIRE(instance->property_has_previous() == false); - } - - THEN("turn_order:running is false") - { - REQUIRE(instance->property_running() == false); - } + REQUIRE(instance->round_number() == 1); } } } |
