TrinityCore
Loading...
Searching...
No Matches
EventMap.cpp File Reference
#include "tc_catch2.h"
#include "EventMap.h"
+ Include dependency graph for EventMap.cpp:

Macros

#define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER
 

Enumerations

enum  EVENTS {
  EVENT_CLEAVE = 1 , EVENT_STOMP = 2 , EVENT_FIREBALL = 3 , EVENT_CONFLAGRATION = 4 ,
  EVENT_1 = 1 , EVENT_2 = 2 , EVENT_3 = 3
}
 
enum  PHASES { PHASE_1 = 1 , PHASE_2 = 2 }
 
enum  GROUPS { GROUP_1 = 1 , GROUP_2 = 2 }
 

Functions

 TEST_CASE ("Schedule an event", "[EventMap]")
 
 TEST_CASE ("Schedule existing event", "[EventMap]")
 
 TEST_CASE ("Cancel a scheduled event", "[EventMap]")
 
 TEST_CASE ("Cancel non-existing event", "[EventMap]")
 
 TEST_CASE ("Reschedule an event", "[EventMap]")
 
 TEST_CASE ("Reschedule a non-scheduled event", "[EventMap]")
 
eventMap Repeat (1s)
 
eventMap Update (1s)
 
 REQUIRE (id==0)
 
eventMap ScheduleEvent (EVENT_1, 1s)
 
 SECTION ("Scheduled event with delay not reached")
 
 TEST_CASE ("Schedule event with phase", "[EventMap]")
 
 TEST_CASE ("Phase helper methods", "[EventMap]")
 
 TEST_CASE ("Cancel event group", "[EventMap]")
 
 TEST_CASE ("Delay all events", "[EventMap]")
 
 TEST_CASE ("Delay grouped events", "[EventMap]")
 
 TEST_CASE ("Reset map", "[EventMap]")
 

Variables

uint32 id = eventMap.ExecuteEvent()
 

Macro Definition Documentation

◆ CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER

#define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER

Enumeration Type Documentation

◆ EVENTS

enum EVENTS
Enumerator
EVENT_CLEAVE 
EVENT_STOMP 
EVENT_FIREBALL 
EVENT_CONFLAGRATION 
EVENT_1 
EVENT_2 
EVENT_3 
24{
25 EVENT_1 = 1,
26 EVENT_2 = 2,
27 EVENT_3 = 3
28};
@ EVENT_2
Definition: EventMap.cpp:26
@ EVENT_3
Definition: EventMap.cpp:27
@ EVENT_1
Definition: EventMap.cpp:25

◆ GROUPS

enum GROUPS
Enumerator
GROUP_1 
GROUP_2 
37{
38 GROUP_1 = 1,
39 GROUP_2 = 2
40};
@ GROUP_1
Definition: EventMap.cpp:38
@ GROUP_2
Definition: EventMap.cpp:39

◆ PHASES

enum PHASES
Enumerator
PHASE_1 
PHASE_2 
31{
32 PHASE_1 = 1,
33 PHASE_2 = 2
34};
@ PHASE_2
Definition: EventMap.cpp:33
@ PHASE_1
Definition: EventMap.cpp:32

Function Documentation

◆ Repeat()

eventMap Repeat ( 1s  )
+ Here is the caller graph for this function:

◆ REQUIRE()

REQUIRE ( id  = =0)
+ Here is the caller graph for this function:

◆ ScheduleEvent()

eventMap ScheduleEvent ( EVENT_1  ,
1s   
)

◆ SECTION()

SECTION ( "Scheduled event with delay not reached"  )
194 {
195 eventMap.Update(500ms);
196 eventMap.Repeat(1s);
197
198 uint32 id = eventMap.ExecuteEvent();
199 REQUIRE(id == 0);
200 }
uint32_t uint32
Definition: Define.h:143
REQUIRE(id==0)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TEST_CASE() [1/12]

TEST_CASE ( "Cancel a scheduled event"  ,
""  [EventMap] 
)
117{
118 EventMap eventMap;
119
120 eventMap.ScheduleEvent(EVENT_1, 1s);
121 eventMap.ScheduleEvent(EVENT_2, 1s);
122
123 eventMap.CancelEvent(EVENT_1);
124 REQUIRE_FALSE(eventMap.Empty());
125
126 eventMap.Update(1000);
127 uint32 id = eventMap.ExecuteEvent();
128
129 REQUIRE(id == EVENT_2);
130 REQUIRE(eventMap.Empty());
131}
Definition: EventMap.h:26
uint32 ExecuteEvent()
Definition: EventMap.cpp:73
void Update(uint32 time)
Definition: EventMap.h:54
bool Empty() const
Definition: EventMap.h:82
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
Definition: EventMap.cpp:36
void CancelEvent(uint32 eventId)
Definition: EventMap.cpp:130
+ Here is the call graph for this function:

◆ TEST_CASE() [2/12]

TEST_CASE ( "Cancel event group"  ,
""  [EventMap] 
)
299{
300 EventMap eventMap;
301 eventMap.ScheduleEvent(EVENT_2, 1s, GROUP_1);
302
303 SECTION("Only event in group")
304 {
305 eventMap.CancelEventGroup(GROUP_1);
306 REQUIRE(eventMap.Empty());
307 }
308
309 SECTION("Group with groupless event")
310 {
311 eventMap.ScheduleEvent(EVENT_1, 1s);
312
313 eventMap.CancelEventGroup(GROUP_1);
314 REQUIRE_FALSE(eventMap.Empty());
315 }
316
317 SECTION("Two groups")
318 {
319 eventMap.ScheduleEvent(EVENT_1, 1s);
320 eventMap.ScheduleEvent(EVENT_3, 1s, GROUP_2);
321
322 eventMap.CancelEventGroup(GROUP_1);
323 REQUIRE_FALSE(eventMap.Empty());
324
325 eventMap.CancelEventGroup(GROUP_2);
326 REQUIRE_FALSE(eventMap.Empty());
327 }
328}
void CancelEventGroup(uint32 group)
Definition: EventMap.cpp:144
SECTION("Scheduled event with delay not reached")
Definition: EventMap.cpp:193
+ Here is the call graph for this function:

◆ TEST_CASE() [3/12]

TEST_CASE ( "Cancel non-existing event"  ,
""  [EventMap] 
)
134{
135 EventMap eventMap;
136 REQUIRE(eventMap.Empty());
137
138 eventMap.CancelEvent(EVENT_1);
139 REQUIRE(eventMap.Empty());
140}
+ Here is the call graph for this function:

◆ TEST_CASE() [4/12]

TEST_CASE ( "Delay all events"  ,
""  [EventMap] 
)
331{
332 EventMap eventMap;
333 eventMap.ScheduleEvent(EVENT_1, 1s);
334
335 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1s);
336
337 SECTION("Without timer update")
338 {
339 eventMap.DelayEvents(1s);
340
341 // 1s (init) + 1s (delay) = 2s
342 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 2s);
343 }
344
345 SECTION("With timer update smaller than delay")
346 {
347 eventMap.Update(500);
348 eventMap.DelayEvents(1s);
349
350 // 1s (init) + 1s (delay) - 500ms (tick) = 1500ms
351 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1500ms);
352 }
353
354 SECTION("With timer update larger than delay")
355 {
356 eventMap.Update(2000);
357 eventMap.DelayEvents(1s);
358
359 // 1s (init) + 1s (delay) - 2s (tick) = 0s
360 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 0s);
361 }
362}
void DelayEvents(Milliseconds delay)
Definition: EventMap.cpp:95
Milliseconds GetTimeUntilEvent(uint32 eventId) const
Definition: EventMap.cpp:158
+ Here is the call graph for this function:

◆ TEST_CASE() [5/12]

TEST_CASE ( "Delay grouped events"  ,
""  [EventMap] 
)
365{
366 EventMap eventMap;
367 eventMap.ScheduleEvent(EVENT_1, 1s, GROUP_1);
368 eventMap.ScheduleEvent(EVENT_2, 2s, GROUP_2);
369 eventMap.ScheduleEvent(EVENT_3, 6s);
370
371 eventMap.Update(2000);
372 eventMap.DelayEvents(3s, GROUP_1);
373
374 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 2s);
375 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_2) == 0s);
376 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_3) == 4s);
377}
+ Here is the call graph for this function:

◆ TEST_CASE() [6/12]

TEST_CASE ( "Phase helper methods"  ,
""  [EventMap] 
)
279{
280 EventMap eventMap;
281
282 eventMap.SetPhase(PHASE_1);
283 REQUIRE(eventMap.GetPhaseMask() == 0x1);
284 REQUIRE(eventMap.IsInPhase(PHASE_1));
285 REQUIRE_FALSE(eventMap.IsInPhase(PHASE_2));
286
287 eventMap.AddPhase(PHASE_2);
288 REQUIRE(eventMap.GetPhaseMask() == 0x3);
289 REQUIRE(eventMap.IsInPhase(PHASE_1));
290 REQUIRE(eventMap.IsInPhase(PHASE_2));
291
292 eventMap.RemovePhase(PHASE_1);
293 REQUIRE(eventMap.GetPhaseMask() == 0x2);
294 REQUIRE_FALSE(eventMap.IsInPhase(PHASE_1));
295 REQUIRE(eventMap.IsInPhase(PHASE_2));
296}
void AddPhase(uint8 phase)
Definition: EventMap.h:99
bool IsInPhase(uint8 phase) const
Definition: EventMap.h:215
uint8 GetPhaseMask() const
Definition: EventMap.h:73
void RemovePhase(uint8 phase)
Definition: EventMap.h:110
void SetPhase(uint8 phase)
Definition: EventMap.cpp:28
+ Here is the call graph for this function:

◆ TEST_CASE() [7/12]

TEST_CASE ( "Reschedule a non-scheduled event"  ,
""  [EventMap] 
)
161{
162 EventMap eventMap;
163
164 eventMap.RescheduleEvent(EVENT_1, 2s);
165
166 eventMap.Update(1000);
167 uint32 id = eventMap.ExecuteEvent();
168
169 REQUIRE(id == 0);
170
171 eventMap.Update(1000);
172 id = eventMap.ExecuteEvent();
173
174 REQUIRE(id == EVENT_1);
175}
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
Definition: EventMap.cpp:52
+ Here is the call graph for this function:

◆ TEST_CASE() [8/12]

TEST_CASE ( "Reschedule an event"  ,
""  [EventMap] 
)
143{
144 EventMap eventMap;
145
146 eventMap.ScheduleEvent(EVENT_1, 1s);
147 eventMap.RescheduleEvent(EVENT_1, 2s);
148
149 eventMap.Update(1000);
150 uint32 id = eventMap.ExecuteEvent();
151
152 REQUIRE(id == 0);
153
154 eventMap.Update(1000);
155 id = eventMap.ExecuteEvent();
156
157 REQUIRE(id == EVENT_1);
158}
+ Here is the call graph for this function:

◆ TEST_CASE() [9/12]

TEST_CASE ( "Reset map"  ,
""  [EventMap] 
)
380{
381 EventMap eventMap;
382 eventMap.ScheduleEvent(EVENT_1, 1s);
383 eventMap.Reset();
384
385 REQUIRE(eventMap.Empty());
386}
void Reset()
Definition: EventMap.cpp:21
+ Here is the call graph for this function:

◆ TEST_CASE() [10/12]

TEST_CASE ( "Schedule an event"  ,
""  [EventMap] 
)
43{
44 EventMap eventMap;
45
46 REQUIRE(eventMap.Empty());
47
48 eventMap.ScheduleEvent(EVENT_1, 1s);
49
50 REQUIRE_FALSE(eventMap.Empty());
51
52 SECTION("Event has not yet reached its delay")
53 {
54 eventMap.Update(100);
55 uint32 id = eventMap.ExecuteEvent();
56
57 REQUIRE(id == 0);
58 REQUIRE_FALSE(eventMap.Empty());
59 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 900ms);
60 }
61
62 SECTION("Event has reached its delay")
63 {
64 eventMap.Update(1000);
65 uint32 id = eventMap.ExecuteEvent();
66
67 REQUIRE(id == EVENT_1);
68 REQUIRE(eventMap.Empty());
69 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == Milliseconds::max());
70 }
71
72 SECTION("Event is past it's execution time")
73 {
74 eventMap.Update(2000);
75
76 REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == -1s);
77 }
78}
+ Here is the call graph for this function:

◆ TEST_CASE() [11/12]

TEST_CASE ( "Schedule event with phase"  ,
""  [EventMap] 
)
213{
214 EventMap eventMap;
215 REQUIRE(eventMap.Empty());
216
217 eventMap.ScheduleEvent(EVENT_1, 1s, 0, PHASE_1);
218 eventMap.ScheduleEvent(EVENT_2, 1s, 0, PHASE_2);
219
220 SECTION("In default phase. Execute all events.")
221 {
222 eventMap.Update(1000);
223
224 uint32 id = eventMap.ExecuteEvent();
225 REQUIRE(id == EVENT_1);
226 REQUIRE_FALSE(eventMap.Empty());
227
228 id = eventMap.ExecuteEvent();
229 REQUIRE(id == EVENT_2);
230 REQUIRE(eventMap.Empty());
231 }
232
233 SECTION("Execute only events of specified phase")
234 {
235 eventMap.SetPhase(PHASE_1);
236 eventMap.Update(1000);
237
238 uint32 id = eventMap.ExecuteEvent();
239 REQUIRE(id == EVENT_1);
240 REQUIRE_FALSE(eventMap.Empty());
241
242 id = eventMap.ExecuteEvent();
243 REQUIRE(id == 0);
244 REQUIRE(eventMap.Empty());
245 }
246
247 SECTION("Execute events from multiple phases (1)")
248 {
249 eventMap.AddPhase(PHASE_1);
250 eventMap.AddPhase(PHASE_2);
251 eventMap.Update(1000);
252
253 uint32 id = eventMap.ExecuteEvent();
254 REQUIRE(id == EVENT_1);
255 REQUIRE_FALSE(eventMap.Empty());
256
257 id = eventMap.ExecuteEvent();
258 REQUIRE(id == EVENT_2);
259 REQUIRE(eventMap.Empty());
260 }
261
262 SECTION("Execute events from multiple phases (2)")
263 {
264 eventMap.AddPhase(PHASE_1);
265 eventMap.Update(1000);
266
267 uint32 id = eventMap.ExecuteEvent();
268 REQUIRE(id == EVENT_1);
269 REQUIRE_FALSE(eventMap.Empty());
270
271 eventMap.RemovePhase(PHASE_2);
272 id = eventMap.ExecuteEvent();
273 REQUIRE(id == 0);
274 REQUIRE(eventMap.Empty());
275 }
276}
+ Here is the call graph for this function:

◆ TEST_CASE() [12/12]

TEST_CASE ( "Schedule existing event"  ,
""  [EventMap] 
)
81{
82 EventMap eventMap;
83
84 SECTION("Same time")
85 {
86 eventMap.ScheduleEvent(EVENT_1, 1s);
87 eventMap.ScheduleEvent(EVENT_1, 1s);
88
89 eventMap.Update(1000);
90 uint32 id = eventMap.ExecuteEvent();
91 REQUIRE(id == EVENT_1);
92
93 id = eventMap.ExecuteEvent();
94 REQUIRE(id == EVENT_1);
95
96 REQUIRE(eventMap.Empty());
97 }
98
99 SECTION("Different time")
100 {
101 eventMap.ScheduleEvent(EVENT_1, 1s);
102 eventMap.ScheduleEvent(EVENT_1, 2s);
103
104 eventMap.Update(1000);
105 uint32 id = eventMap.ExecuteEvent();
106 REQUIRE(id == EVENT_1);
107
108 eventMap.Update(1000);
109 id = eventMap.ExecuteEvent();
110 REQUIRE(id == EVENT_1);
111
112 REQUIRE(eventMap.Empty());
113 }
114}
+ Here is the call graph for this function:

◆ Update()

eventMap Update ( 1s  )
+ Here is the caller graph for this function:

Variable Documentation

◆ id

uint32 id = eventMap.ExecuteEvent()