def test_add_remove(mocker): ps = Playerset() p = Player(**DEFAULT_DICT) def test_player_signal(sp): assert sp is p newplayer = mocker.Mock() goneplayer = mocker.Mock() ps.playerAdded.connect(newplayer) ps.playerAdded.connect(test_player_signal) ps.playerRemoved.connect(goneplayer) ps.playerRemoved.connect(test_player_signal) ps[p.id] = p assert newplayer.called assert ps[p.id] is p assert ps[p.login] is p del ps[p.id] assert goneplayer.called assert p.id not in ps assert p.login not in ps with pytest.raises(KeyError): ps[p.id] with pytest.raises(KeyError): ps[p.login]
def test_player_at_game_change(mocker): ps = Playerset() gs = Gameset(ps) p = Player(**{"id_": 1, "login": "******"}) ps[p.id] = p p = Player(**{"id_": 2, "login": "******"}) ps[p.id] = p p = Player(**{"id_": 3, "login": "******"}) ps[p.id] = p data = copy.deepcopy(GAME_DICT) g1 = Game(playerset=ps, **data) gUpd = mocker.Mock() ps[1].newCurrentGame.connect(gUpd) gs[1] = g1 gUpd.assert_called_with(ps[1], g1, None) gUpd.reset_mock() data["state"] = GameState.PLAYING gs[1].update(**data) assert not gUpd.called data["state"] = GameState.CLOSED gs[1].update(**data) gUpd.assert_called_with(ps[1], None, g1)
def test_game_at_missing_player(mocker): ps = Playerset() gs = Gameset(ps) p = Player(**{"id_": 1, "login": "******"}) ps[p.id] = p p = Player(**{"id_": 2, "login": "******"}) ps[p.id] = p data = copy.deepcopy(GAME_DICT) g1 = Game(playerset=ps, **data) pAdd = mocker.Mock() g1.connectedPlayerAdded.connect(pAdd) gs[1] = g1 assert len(g1.players) == 3 gps = [g1.to_player(n) for n in g1.players if g1.is_connected(n)] assert len(gps) == 2 assert ps[1] in gps assert ps[2] in gps assert not pAdd.called p = Player(**{"id_": 3, "login": "******"}) ps[p.id] = p pAdd.assert_called_with(g1, ps[3]) gps = [g1.to_player(n) for n in g1.players if g1.is_connected(n)] assert len(gps) == 3 assert ps[3] in gps assert g1.is_ingame(ps[3].login) assert ps[3].currentGame is g1
def test_new_chatter(): ps = Playerset() us = IrcUserset(ps) p = Player(**{"id_": 1, "login": "******"}) ps[p.id] = p u = IrcUser("Guy", "") us[u.name] = u assert u.player is p
def setup(): ps = Playerset() gs = Gameset(ps) p = Player(**{"id_": 1, "login": "******"}) ps[p.id] = p p = Player(**{"id_": 2, "login": "******"}) ps[p.id] = p p = Player(**{"id_": 3, "login": "******"}) ps[p.id] = p g = Game(playerset=ps, **GAME_DICT) gs[g.uid] = g return ps, gs
def test_chatter_rename_no_player(mocker): ps = Playerset() us = IrcUserset(ps) p = Player(**{"id_": 1, "login": "******"}) ps[p.id] = p u = IrcUser("Guy", "") us[u.name] = u pUpd = mocker.Mock() u.newPlayer.connect(pUpd) u.update(name="Other") pUpd.assert_called_with(u, None, p) with pytest.raises(KeyError): us["Guy"] assert us["Other"] is u assert u.player is None
def test_player_change(mocker): ps = Playerset() us = IrcUserset(ps) u = IrcUser("Guy", "") us[u.name] = u assert u.player is None pUpd = mocker.Mock() u.newPlayer.connect(pUpd) p = Player(**{"id_": 1, "login": "******"}) ps[p.id] = p pUpd.assert_called_with(u, p, None) assert u.player is p pUpd.reset_mock() del ps[p.id] pUpd.assert_called_with(u, None, p) assert u.player is None
def test_cant_get_by_player(): ps = Playerset() p = Player(**DEFAULT_DICT) ps[p.id] = p with pytest.raises(TypeError): ps[p]
def test_cant_add_mismatched_id(): ps = Playerset() p = Player(**DEFAULT_DICT) ps[p.id] = p with pytest.raises(ValueError): ps[p.id + 1] = p
def test_cant_add_twice(): ps = Playerset() p = Player(**DEFAULT_DICT) ps[p.id] = p with pytest.raises(ValueError): ps[p.id] = p
def test_cant_add_by_login(): ps = Playerset() p = Player(**DEFAULT_DICT) with pytest.raises(TypeError): ps[p.login] = p