5
5
from helpers .sm5helper import get_sm5_last_team_standing , get_sm5_notable_events , update_team_sizes
6
6
from helpers .statshelper import NotableEvent
7
7
from helpers .tdfhelper import create_event
8
- from tests .helpers .environment import setup_test_database , ENTITY_ID_1 , ENTITY_ID_2 , get_sm5_game_id , \
8
+ from tests .helpers .environment import setup_test_database , ENTITY_ID_1 , ENTITY_ID_2 , ENTITY_ID_4 , get_sm5_game_id , \
9
9
teardown_test_database , add_entity , get_red_team , get_green_team , add_sm5_stats , ENTITY_ID_3 , add_sm5_event
10
10
11
11
@@ -31,7 +31,6 @@ async def test_get_team_sizes_counts_correctly(self):
31
31
team_sizes = [game .team1_size , game .team2_size ]
32
32
self .assertCountEqual ([1 , 2 ], team_sizes )
33
33
34
-
35
34
async def test_get_team_sizes_counts_only_one_team (self ):
36
35
game = await SM5Game .filter (id = get_sm5_game_id ()).first ()
37
36
@@ -45,7 +44,6 @@ async def test_get_team_sizes_counts_only_one_team(self):
45
44
self .assertEqual (2 , game .team1_size )
46
45
self .assertEqual (0 , game .team2_size )
47
46
48
-
49
47
async def test_get_team_sizes_counts_no_players (self ):
50
48
game = await SM5Game .filter (id = get_sm5_game_id ()).first ()
51
49
@@ -54,7 +52,6 @@ async def test_get_team_sizes_counts_no_players(self):
54
52
self .assertEqual (0 , game .team1_size )
55
53
self .assertEqual (0 , game .team2_size )
56
54
57
-
58
55
async def test_get_sm5_last_team_standing_both_alive (self ):
59
56
game = await SM5Game .filter (id = get_sm5_game_id ()).first ()
60
57
entity_start , entity_end = await add_entity (entity_id = ENTITY_ID_1 , team = get_red_team ())
@@ -265,5 +262,96 @@ async def test_get_sm5_notable_events(self):
265
262
id = 'event11' ,
266
263
position = '80%' )], notable_events )
267
264
265
+ async def test_get_sm5_notable_events_medic_hits (self ):
266
+ await teardown_test_database ()
267
+ await setup_test_database (basic_events = False )
268
+
269
+ game = await SM5Game .filter (id = get_sm5_game_id ()).first ()
270
+
271
+ # Player 1 is RED MEDIC.
272
+ entity_start , entity_end = await add_entity (entity_id = ENTITY_ID_1 , team = get_red_team (),
273
+ role = IntRole .MEDIC ,
274
+ name = "FireMedic" )
275
+ await add_sm5_stats (entity_start )
276
+
277
+ # Player 2 is GREEN MEDIC.
278
+ entity_start2 , entity_end2 = await add_entity (entity_id = ENTITY_ID_2 , team = get_green_team (),
279
+ role = IntRole .MEDIC ,
280
+ name = "GreenMedic" )
281
+ await add_sm5_stats (entity_start2 )
282
+
283
+ # Player 3 is RED SCOUT.
284
+ entity_start3 , entity_end3 = await add_entity (entity_id = ENTITY_ID_3 , team = get_red_team (),
285
+ role = IntRole .SCOUT ,
286
+ name = "Red Scout" )
287
+ await add_sm5_stats (entity_start3 )
288
+
289
+ # Player 4 is GREEN AMMO.
290
+ entity_start4 , entity_end4 = await add_entity (entity_id = ENTITY_ID_4 , team = get_green_team (),
291
+ role = IntRole .AMMO ,
292
+ name = "Green Ammo" )
293
+ await add_sm5_stats (entity_start4 )
294
+
295
+ await game .entity_starts .add (entity_start , entity_start2 , entity_start3 , entity_start4 )
296
+ await game .entity_ends .add (entity_end , entity_end2 , entity_end3 , entity_end4 )
297
+
298
+ # 5000: Irrelevant event.
299
+ await add_sm5_event (await create_event (time_ms = 10000 , type = EventType .LOCKING ,
300
+ entity1 = ENTITY_ID_3 ,
301
+ entity2 = ENTITY_ID_1 ,
302
+ ))
303
+
304
+ # 10000: Medic to medic. IGNORED: Across teams, ignored
305
+ await add_sm5_event (await create_event (time_ms = 10000 , type = EventType .DOWNED_OPPONENT ,
306
+ entity1 = ENTITY_ID_1 ,
307
+ entity2 = ENTITY_ID_2 ,
308
+ ))
309
+
310
+ # 20000: Scout to medic. Friendly fire
311
+ await add_sm5_event (await create_event (time_ms = 20000 , type = EventType .DOWNED_OPPONENT ,
312
+ entity1 = ENTITY_ID_3 ,
313
+ entity2 = ENTITY_ID_1 ,
314
+ ))
315
+
316
+ # 30000: Medic to scout. Ignored
317
+ await add_sm5_event (await create_event (time_ms = 30000 , type = EventType .DOWNED_OPPONENT ,
318
+ entity1 = ENTITY_ID_1 ,
319
+ entity2 = ENTITY_ID_3 ,
320
+ ))
321
+
322
+ # 40000: Ammo to medic. Friendly fire.
323
+ await add_sm5_event (await create_event (time_ms = 40000 , type = EventType .DOWNED_TEAM ,
324
+ entity1 = ENTITY_ID_4 ,
325
+ entity2 = ENTITY_ID_2 ,
326
+ ))
327
+
328
+ # 50000: Scout to medic with missile (yeah right). Friendly fire
329
+ await add_sm5_event (await create_event (time_ms = 50000 , type = EventType .MISSILE_DOWN_OPPONENT ,
330
+ entity1 = ENTITY_ID_3 ,
331
+ entity2 = ENTITY_ID_1 ,
332
+ ))
333
+
334
+ notable_events = await get_sm5_notable_events (game )
335
+
336
+ # All events, in chronological order.
337
+ self .assertEqual ([NotableEvent (seconds = 20 ,
338
+ event = 'Red Scout tags own medic FireMedic' ,
339
+ short_event = ['Red Scout' , 'tags own medic' ],
340
+ team = Team .RED ,
341
+ id = 'event1' ,
342
+ position = '90%' ),
343
+ NotableEvent (seconds = 40 ,
344
+ event = 'Green Ammo tags own medic GreenMedic' ,
345
+ short_event = ['Green Ammo' , 'tags own medic' ],
346
+ team = Team .GREEN ,
347
+ id = 'event2' ,
348
+ position = '80%' ),
349
+ NotableEvent (seconds = 50 ,
350
+ event = 'Red Scout MISSILES own medic FireMedic' ,
351
+ short_event = ['Red Scout' , 'MISSILES own medic' ],
352
+ team = Team .RED ,
353
+ id = 'event3' ,
354
+ position = '70%' )], notable_events )
355
+
268
356
if __name__ == '__main__' :
269
357
unittest .main ()
0 commit comments