aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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]")