From da17942af94a66ad4663d7995e2322d135366442 Mon Sep 17 00:00:00 2001 From: Carbenium Date: Sat, 25 Jul 2020 18:16:17 +0200 Subject: [PATCH] Core/EventMap: Clarify documentation of ScheduleEvent (cherry picked from commit 7865c1c197f4eb9165ef3ab26eb4f750a5b58960) --- src/common/Utilities/EventMap.h | 4 ++-- tests/common/test-EventMap.cpp | 39 ++++++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/common/Utilities/EventMap.h b/src/common/Utilities/EventMap.h index f627f1d1ab..7bea23bf7e 100644 --- a/src/common/Utilities/EventMap.h +++ b/src/common/Utilities/EventMap.h @@ -115,7 +115,7 @@ public: /** * @name ScheduleEvent - * @brief Schedules a new event. + * @brief Schedules a new event. An existing event is not canceled. * @param eventId The id of the new event. * @param time The time until the event occurs as std::chrono type. * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. @@ -125,7 +125,7 @@ public: /** * @name ScheduleEvent - * @brief Schedules a new event. + * @brief Schedules a new event. An existing event is not canceled. * @param eventId The id of the new event. * @param minTime The minimum time until the event occurs as std::chrono type. * @param maxTime The maximum time until the event occurs as std::chrono type. diff --git a/tests/common/test-EventMap.cpp b/tests/common/test-EventMap.cpp index 9a28361d93..21d5591872 100644 --- a/tests/common/test-EventMap.cpp +++ b/tests/common/test-EventMap.cpp @@ -77,21 +77,40 @@ TEST_CASE("Schedule an event", "[EventMap]") } } -// TODO: The semantics of this case are not well defined. -// Document them first, check consumers and adapt test -// accordingly. -TEST_CASE("Schedule existing event", "[EventMap][!mayfail]") +TEST_CASE("Schedule existing event", "[EventMap]") { EventMap eventMap; - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.ScheduleEvent(EVENT_1, 1s); + SECTION("Same time") + { + eventMap.ScheduleEvent(EVENT_1, 1s); + eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); + eventMap.Update(1000); + uint32 id = eventMap.ExecuteEvent(); + REQUIRE(id == EVENT_1); - REQUIRE(id == EVENT_1); - REQUIRE(eventMap.Empty()); + id = eventMap.ExecuteEvent(); + REQUIRE(id == EVENT_1); + + REQUIRE(eventMap.Empty()); + } + + SECTION("Different time") + { + eventMap.ScheduleEvent(EVENT_1, 1s); + eventMap.ScheduleEvent(EVENT_1, 2s); + + eventMap.Update(1000); + uint32 id = eventMap.ExecuteEvent(); + REQUIRE(id == EVENT_1); + + eventMap.Update(1000); + id = eventMap.ExecuteEvent(); + REQUIRE(id == EVENT_1); + + REQUIRE(eventMap.Empty()); + } } TEST_CASE("Cancel a scheduled event", "[EventMap]")