aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2020-07-25 18:16:17 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-24 00:01:38 +0100
commitda17942af94a66ad4663d7995e2322d135366442 (patch)
treeb2a90d288c68f3a986eb01d4e1fdb1d267c0afe8
parenta5d85deceda576bfa8231d0a703024d13df1ff88 (diff)
Core/EventMap: Clarify documentation of ScheduleEvent
(cherry picked from commit 7865c1c197f4eb9165ef3ab26eb4f750a5b58960)
-rw-r--r--src/common/Utilities/EventMap.h4
-rw-r--r--tests/common/test-EventMap.cpp39
2 files changed, 31 insertions, 12 deletions
diff --git a/src/common/Utilities/EventMap.h b/src/common/Utilities/EventMap.h
index f627f1d1ab2..7bea23bf7e4 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 9a28361d930..21d5591872f 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]")