def test_end_trigger(self): evmap = EventMap.new() evmap.register(GameEndHandler(self.round, self.games, evmap)) evmap.register( EqHandler( tag=1, key="round", expect=Round(round_id=self.round.round_id), kind=EventKind.ROUND_END, persistent=False, )) m = Match( match_id=1, round=self.round, team_one=Result(result_id=1, team=self.t1, points=3, delta=-1), team_two=Result(result_id=2, team=self.t2, points=7, delta=1), ) ctx = self.games.add_result(m) assert not isinstance(ctx, Error) assert ctx == 1 assert self.games[ctx].is_complete() e = ResultEvent(self.games[1], m) assert not isinstance(evmap.handle(e), HandlingError) assert len(self.games) == 0 assert len(evmap[EventKind.ROUND_END]) == 0
def test_persistant_handle(self): evmap = EventMap.new() evmap.register( EqHandler(tag=1, key="team", expect=Team(team_id=69), persistent=True)) qe = QueueEvent(self.qctx, Team(team_id=69)) assert not isinstance(evmap.handle(qe), HandlingError) assert len(evmap[EventKind.QUEUE]) == 1
def test_add_handler(self): evmap = EventMap.new() evmap.register(EqHandler(tag=1, kind=EventKind.QUEUE)) evmap.register(EqHandler(tag=1, kind=EventKind.DEQUEUE)) evmap.register(EqHandler(tag=1, kind=EventKind.RESULT)) evmap.register(EqHandler(tag=1, kind=EventKind.ROUND_START)) evmap.register(EqHandler(tag=1, kind=EventKind.ROUND_END)) assert len(evmap[EventKind.QUEUE]) == 1 assert len(evmap[EventKind.DEQUEUE]) == 1 assert len(evmap[EventKind.RESULT]) == 1 assert len(evmap[EventKind.ROUND_START]) == 1 assert len(evmap[EventKind.ROUND_END]) == 1
def test_queue(self): evmap = EventMap.new() evmap.register(EqHandler(tag=1, key="team", expect=Team(team_id=69))) qe = QueueEvent(self.qctx, Team(team_id=69)) ready = evmap.poll(qe) handler = next(ready) assert handler is not None assert handler.tag == 1 assert next(ready, None) is None
def test_result(self): evmap = EventMap.new() evmap.register( EqHandler(tag=2, key="match", expect=Match(match_id=42), kind=EventKind.RESULT)) qe = ResultEvent(self.igctx, Match(match_id=42)) ready = evmap.poll(qe) handler = next(ready) assert handler.tag == 2 assert next(ready, None) is None
def test_round_end(self): evmap = EventMap.new() evmap.register( EqHandler(tag=2, key="round", expect=Round(round_id=69), kind=EventKind.ROUND_END)) qe = RoundEndEvent(self.igctx, Round(round_id=69)) ready = evmap.poll(qe) handler = next(ready) assert handler is not None assert handler.tag == 2 assert next(ready, None) is None
def test_dequeue(self): evmap = EventMap.new() evmap.register( EqHandler(tag=3, key="team", expect=Team(team_id=69), kind=EventKind.DEQUEUE)) qe = DequeueEvent(self.qctx, Team(team_id=69)) ready = evmap.poll(qe) handler = next(ready) assert handler is not None assert handler.tag == 3 assert next(ready, None) is None
def test_queue_trigger(self): self.games.clear() self.qctx.clear() t1 = Team( team_id=42, elo=1000, player_one=Player(discord_id=1), player_two=Player(discord_id=2), ) t2 = Team( team_id=69, elo=1000, player_one=Player(discord_id=3), player_two=Player(discord_id=4), ) evmap = EventMap.new() evmap.register(MatchTriggerHandler(self.config, self.games, evmap)) evmap.register( EqHandler( tag=1, key="round", expect=Round(round_id=self.qctx.round.round_id), kind=EventKind.ROUND_START, persistent=False, )) prev_round = self.qctx.round.round_id self.qctx.queue.append(t1) q1 = QueueEvent(self.qctx, t1) assert not isinstance(evmap.handle(q1), HandlingError) self.qctx.queue.append(t2) q2 = QueueEvent(self.qctx, t2) assert not isinstance(evmap.handle(q2), HandlingError) assert evmap[EventKind.RESULT][0].tag == prev_round assert self.qctx.round.round_id == prev_round + 1 assert self.qctx.is_empty() assert len(evmap[EventKind.QUEUE]) == 1 assert len(evmap[EventKind.ROUND_START]) == 0
def test_remove_handler(self): evmap = EventMap.new() evmap.register(EqHandler(tag=1)) assert len(evmap[EventKind.QUEUE]) == 1 evmap.deregister(EqHandler(tag=1)) assert len(evmap[EventKind.QUEUE]) == 0