Beispiel #1
0
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]
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #5
0
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
Beispiel #8
0
def test_cant_get_by_player():
    ps = Playerset()
    p = Player(**DEFAULT_DICT)
    ps[p.id] = p
    with pytest.raises(TypeError):
        ps[p]
Beispiel #9
0
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
Beispiel #10
0
def test_cant_add_twice():
    ps = Playerset()
    p = Player(**DEFAULT_DICT)
    ps[p.id] = p
    with pytest.raises(ValueError):
        ps[p.id] = p
Beispiel #11
0
def test_cant_add_by_login():
    ps = Playerset()
    p = Player(**DEFAULT_DICT)
    with pytest.raises(TypeError):
        ps[p.login] = p