示例#1
0
    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
示例#2
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
示例#3
0
 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
示例#4
0
    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
示例#5
0
    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
示例#6
0
    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
示例#7
0
    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
示例#8
0
    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
示例#9
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