예제 #1
0
def test_clear_centers():
    """ Tests - Clear centers """
    game = Game()
    game.clear_centers()
    for power in game.powers.values():
        assert not power.centers
    assert not game.error
예제 #2
0
def test_set_centers():
    """ Tests - Sets centers """
    game = Game()
    game.clear_centers()
    game.set_centers('FRANCE',
                     ['PAR', 'MAR', 'GAS'])  # GAS is not a valid SC loc
    game.set_centers('ENGLAND', ['PAR', 'LON'])
    assert game.get_power('AUSTRIA').centers == []
    assert game.get_power('ENGLAND').centers == ['PAR', 'LON']
    assert game.get_power('FRANCE').centers == ['MAR']
    assert game.get_power('GERMANY').centers == []
    assert game.get_power('ITALY').centers == []
    assert game.get_power('RUSSIA').centers == []
    assert game.get_power('TURKEY').centers == []

    # Adding BUD to England without resetting
    game.set_centers('ENGLAND', 'BUD', reset=False)
    assert game.get_power('ENGLAND').centers == ['PAR', 'LON', 'BUD']

    # Adding BUD to England with resetting
    game.set_centers('ENGLAND', ['BUD'], reset=True)
    assert game.get_power('ENGLAND').centers == ['BUD']

    # Adding UKR to England (illegal SC)
    game.set_centers('ENGLAND', 'UKR', reset=False)
    assert game.get_power('ENGLAND').centers == ['BUD']
예제 #3
0
def on_cleared_centers(game, notification):
    """ Manage notification ClearedCenters.
        :param game: a Network game
        :param notification: notification received
        :type game: diplomacy.client.network_game.NetworkGame
        :type notification: diplomacy.communication.notifications.ClearedCenters
    """
    Game.clear_centers(game, notification.power_name)
예제 #4
0
def on_clear_centers(context, response):
    """ Manage response for request ClearCenters.
        :param context: request context
        :param response: response received
        :return: None
        :type context: RequestFutureContext
    """
    request = context.request  # type: requests.ClearCenters
    Game.clear_centers(context.game, request.power_name)
예제 #5
0
def test_set_orders_no_replace():
    """ Test - Sets orders with replace=False """
    check_sorted = lambda list_1, list_2: sorted(list_1) == sorted(list_2)

    # Regular Movement Phase
    game = Game()
    game.clear_units()
    game.set_units('ITALY', ['A VEN', 'A PAR'])
    game.set_units('AUSTRIA', 'A VIE')
    game.set_orders('ITALY', ['A VEN - TYR', 'A PAR H'], replace=False)
    game.set_orders('AUSTRIA', 'A VIE - TYR', replace=False)
    game.set_orders('ITALY', 'A PAR - GAS', replace=False)
    orders = game.get_orders()
    assert check_sorted(orders['ITALY'], ['A VEN - TYR', 'A PAR H'])
    assert check_sorted(orders['AUSTRIA'], ['A VIE - TYR'])

    # NO_CHECK Movement Phase
    game = Game()
    game.add_rule('NO_CHECK')
    game.clear_units()
    game.set_units('ITALY', ['A VEN', 'A PAR'])
    game.set_units('AUSTRIA', 'A VIE')
    game.set_orders('ITALY', ['A VEN - TYR', 'A PAR H'], replace=False)
    game.set_orders('AUSTRIA', 'A VIE - TYR', replace=False)
    game.set_orders('ITALY', 'A PAR - GAS', replace=False)
    orders = game.get_orders()
    assert check_sorted(orders['ITALY'],
                        ['A VEN - TYR', 'A PAR H', 'A PAR - GAS'])
    assert check_sorted(orders['AUSTRIA'], ['A VIE - TYR'])

    # Regular Retreat Phase
    game = Game()
    game.clear_units()
    game.set_units('ITALY', ['A BRE', 'A PAR'])
    game.set_units('AUSTRIA', 'A GAS')
    game.set_orders('ITALY', ['A BRE - GAS', 'A PAR S A BRE - GAS'],
                    replace=False)
    game.set_orders('AUSTRIA', 'A GAS H', replace=False)
    game.process()
    game.set_orders('AUSTRIA', 'A GAS R MAR', replace=False)
    game.set_orders('AUSTRIA', 'A GAS R SPA', replace=False)
    orders = game.get_orders()
    assert check_sorted(orders['AUSTRIA'], ['A GAS R MAR'])

    # NO_CHECK Retreat Phase
    game = Game()
    game.add_rule('NO_CHECK')
    game.clear_units()
    game.set_units('ITALY', ['A BRE', 'A PAR'])
    game.set_units('AUSTRIA', 'A GAS')
    game.set_orders('ITALY', ['A BRE - GAS', 'A PAR S A BRE - GAS'],
                    replace=False)
    game.set_orders('AUSTRIA', 'A GAS H', replace=False)
    game.process()
    game.set_orders('AUSTRIA', 'A GAS R MAR', replace=False)
    game.set_orders('AUSTRIA', 'A GAS R SPA', replace=False)
    orders = game.get_orders()
    assert check_sorted(orders['AUSTRIA'], ['A GAS R MAR'])

    # Regular Adjustment Phase
    game = Game()
    game.clear_units()
    game.clear_centers()
    game.set_units('FRANCE', ['A BRE', 'A PAR'])
    game.set_units('AUSTRIA', 'A GAS')
    game.set_orders('FRANCE', 'A PAR - PIC', replace=False)
    game.process()
    game.set_orders('FRANCE', ['A PIC - BEL', 'A BRE - PAR'], replace=False)
    game.process()
    game.set_orders('FRANCE', 'A BRE B', replace=False)
    game.set_orders('FRANCE', 'F BRE B', replace=False)
    orders = game.get_orders()
    assert check_sorted(orders['FRANCE'], ['A BRE B'])

    # NO_CHECK Adjustment Phase
    game = Game()
    game.add_rule('NO_CHECK')
    game.clear_units()
    game.clear_centers()
    game.set_units('FRANCE', ['A BRE', 'A PAR'])
    game.set_units('AUSTRIA', 'A GAS')
    game.set_orders('FRANCE', 'A PAR - PIC', replace=False)
    game.process()
    game.set_orders('FRANCE', ['A PIC - BEL', 'A BRE - PAR'], replace=False)
    game.process()
    game.set_orders('FRANCE', 'A BRE B', replace=False)
    game.set_orders('FRANCE', 'F BRE B', replace=False)
    orders = game.get_orders()
    assert check_sorted(orders['FRANCE'], ['A BRE B'])