#include "turns-turn-order.h" #include "turns-participant.h" #include #include #include #include #include SCENARIO("Creating a turn order", "[lib][object][lifetime]") { GIVEN("A turn order constructed using turns_turn_order_new()") { g_autoptr(TurnsTurnOrder) instance = turns_turn_order_new(); THEN("its participant count is 0") { REQUIRE(turns_turn_order_get_participant_count(instance) == 0uz); } THEN("its running state is false") { REQUIRE_FALSE(turns_turn_order_get_running(instance)); auto property_value = decltype(turns_turn_order_get_participant_count(instance)){}; g_object_get(instance, "running", &property_value, nullptr); REQUIRE_FALSE(property_value); } THEN("its item count is 0") { REQUIRE(g_list_model_get_n_items(G_LIST_MODEL(instance)) == 0); } THEN("its item type is Turns.Participant") { REQUIRE(g_list_model_get_item_type(G_LIST_MODEL(instance)) == turns_participant_get_type()); } 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); } } } }