def test_clear_units(): """ Tests - Clear units """ game = Game() game.clear_units() for power in game.powers.values(): assert not power.units assert not game.error
def test_get_units(): """ Tests - get units """ game = Game() game.clear_units() game.set_units('FRANCE', ['A PAR', 'A MAR']) game.set_units('ENGLAND', ['A PAR', 'A LON']) units = game.get_units() assert units['AUSTRIA'] == [] assert units['ENGLAND'] == ['A PAR', 'A LON'] assert units['FRANCE'] == ['A MAR'] assert units['GERMANY'] == [] assert units['ITALY'] == [] assert units['RUSSIA'] == [] assert units['TURKEY'] == [] assert game.get_units('AUSTRIA') == [] assert game.get_units('ENGLAND') == ['A PAR', 'A LON'] assert game.get_units('FRANCE') == ['A MAR'] assert game.get_units('GERMANY') == [] assert game.get_units('ITALY') == [] assert game.get_units('RUSSIA') == [] assert game.get_units('TURKEY') == [] # Making sure we got a copy, and not a direct game reference game.set_units('FRANCE', ['F MAR']) units_2 = game.get_units() assert units['FRANCE'] == ['A MAR'] assert units_2['FRANCE'] == ['F MAR']
def test_set_units(): """ Test - Sets units """ game = Game() game.clear_units() game.set_units('FRANCE', ['A PAR', 'A MAR', '*A GAS'], reset=False) game.set_units('ENGLAND', ['A PAR', 'A LON']) assert game.get_power('AUSTRIA').units == [] assert game.get_power('ENGLAND').units == ['A PAR', 'A LON'] assert game.get_power('FRANCE').units == ['A MAR'] assert 'A GAS' in game.get_power('FRANCE').retreats assert game.get_power('GERMANY').units == [] assert game.get_power('ITALY').units == [] assert game.get_power('RUSSIA').units == [] assert game.get_power('TURKEY').units == [] # Adding F PIC to England without resetting game.set_units('ENGLAND', ['F PIC'], reset=False) assert game.get_power('ENGLAND').units == ['A PAR', 'A LON', 'F PIC'] # Adding F PIC to England with resetting game.set_units('ENGLAND', ['F PIC'], reset=True) assert game.get_power('ENGLAND').units == ['F PIC'] # Adding F PAR (Illegal unit) to England without resetting game.set_units('ENGLAND', ['F PAR'], reset=False) assert game.get_power('ENGLAND').units == ['F PIC']
def on_cleared_units(game, notification): """ Manage notification ClearedUnits. :param game: a Network game :param notification: notification received :type game: diplomacy.client.network_game.NetworkGame :type notification: diplomacy.communication.notifications.ClearedUnits """ Game.clear_units(game, notification.power_name)
def test_get_orders(): """ Test - get orders """ check_sorted = lambda list_1, list_2: sorted(list_1) == sorted(list_2) game = Game() # Movement phase game.set_orders('FRANCE', ['A PAR H', 'A MAR - BUR']) game.set_orders('ENGLAND', ['LON H']) orders = game.get_orders() assert check_sorted(orders['AUSTRIA'], []) assert check_sorted(orders['ENGLAND'], ['F LON H']) assert check_sorted(orders['FRANCE'], ['A PAR H', 'A MAR - BUR']) assert check_sorted(orders['GERMANY'], []) assert check_sorted(orders['ITALY'], []) assert check_sorted(orders['RUSSIA'], []) assert check_sorted(orders['TURKEY'], []) assert check_sorted(game.get_orders('AUSTRIA'), []) assert check_sorted(game.get_orders('ENGLAND'), ['F LON H']) assert check_sorted(game.get_orders('FRANCE'), ['A PAR H', 'A MAR - BUR']) assert check_sorted(game.get_orders('GERMANY'), []) assert check_sorted(game.get_orders('ITALY'), []) assert check_sorted(game.get_orders('RUSSIA'), []) assert check_sorted(game.get_orders('TURKEY'), []) # Making sure we got a copy, and not a direct game reference france = game.get_power('FRANCE') del france.orders['A PAR'] orders_2 = game.get_orders() assert check_sorted(orders['FRANCE'], ['A PAR H', 'A MAR - BUR']) assert check_sorted(orders_2['FRANCE'], ['A MAR - BUR']) # Moving to W1901A game.clear_units('FRANCE') game.set_centers('FRANCE', 'SPA') game.process() game.process() assert game.get_current_phase() == 'W1901A' # Adjustment phase game.set_orders('FRANCE', ['A MAR B', 'F MAR B']) game.set_orders('AUSTRIA', 'A PAR H') orders = game.get_orders() assert check_sorted(orders['AUSTRIA'], []) assert check_sorted(orders['ENGLAND'], []) assert check_sorted(orders['FRANCE'], ['A MAR B']) assert check_sorted(orders['GERMANY'], []) assert check_sorted(orders['ITALY'], []) assert check_sorted(orders['RUSSIA'], []) assert check_sorted(orders['TURKEY'], []) assert check_sorted(game.get_orders('AUSTRIA'), []) assert check_sorted(game.get_orders('ENGLAND'), []) assert check_sorted(game.get_orders('FRANCE'), ['A MAR B']) assert check_sorted(game.get_orders('GERMANY'), []) assert check_sorted(game.get_orders('ITALY'), []) assert check_sorted(game.get_orders('RUSSIA'), []) assert check_sorted(game.get_orders('TURKEY'), [])
def on_clear_units(context, response): """ Manage response for request ClearUnits. :param context: request context :param response: response received :return: None :type context: RequestFutureContext """ request = context.request # type: requests.ClearUnits Game.clear_units(context.game, request.power_name)
def test_process_game(): """ Tests - Process game """ game = Game() game.clear_units() game.set_units('ITALY', 'A VEN') game.set_units('AUSTRIA', 'A VIE') game.set_orders('ITALY', 'A VEN - TYR') game.set_orders('AUSTRIA', 'A VIE - TYR') game.process() results = game.get_order_status() assert BOUNCE in results['ITALY']['A VEN'] assert BOUNCE in results['AUSTRIA']['A VIE']
def test_clear_orders(): """ Test - Clear orders""" game = Game() game.clear_units() game.set_units('ITALY', 'A VEN') game.set_units('AUSTRIA', 'A VIE') game.set_orders('ITALY', 'A VEN - TYR') game.set_orders('AUSTRIA', 'A VIE - TYR') game.clear_orders() game.process() results = game.get_order_status() assert results['ITALY']['A VEN'] == [] assert results['AUSTRIA']['A VIE'] == []
def test_set_orders(): """ Test - Sets orders """ game = Game() game.clear_units() game.set_units('ITALY', 'A VEN') game.set_units('AUSTRIA', 'A VIE') game.set_units('FRANCE', 'A PAR') game.set_orders('ITALY', 'A VEN - TYR') game.set_orders('AUSTRIA', 'A VIE - TYR') game.set_orders('FRANCE', ['', '', 'A PAR - GAS', '', '', '']) game.set_orders('RUSSIA', '') game.set_orders('GERMANY', []) assert game.get_orders('FRANCE') == ['A PAR - GAS'] assert not game.get_orders('RUSSIA') assert not game.get_orders('GERMANY') game.process() results = game.get_order_status() assert BOUNCE in results['ITALY']['A VEN'] assert BOUNCE in results['AUSTRIA']['A VIE']
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'])
def test_get_orders_no_check(): """ Test - get orders NO_CHECK """ check_sorted = lambda list_1, list_2: sorted(list_1) == sorted(list_2) game = Game() game.add_rule('NO_CHECK') # Movement phase game.set_orders('FRANCE', ['A PAR H', 'A MAR - BUR']) game.set_orders('ENGLAND', ['LON H']) orders = game.get_orders() assert check_sorted(orders['AUSTRIA'], []) assert check_sorted(orders['ENGLAND'], ['LON H']) # Should not be fixed assert check_sorted(orders['FRANCE'], ['A PAR H', 'A MAR - BUR']) assert check_sorted(orders['GERMANY'], []) assert check_sorted(orders['ITALY'], []) assert check_sorted(orders['RUSSIA'], []) assert check_sorted(orders['TURKEY'], []) assert check_sorted(game.get_orders('AUSTRIA'), []) assert check_sorted(game.get_orders('ENGLAND'), ['LON H']) # Should not be fixed assert check_sorted(game.get_orders('FRANCE'), ['A PAR H', 'A MAR - BUR']) assert check_sorted(game.get_orders('GERMANY'), []) assert check_sorted(game.get_orders('ITALY'), []) assert check_sorted(game.get_orders('RUSSIA'), []) assert check_sorted(game.get_orders('TURKEY'), []) # Making sure we got a copy, and not a direct game reference france = game.get_power('FRANCE') france.orders = { order_ix: order_value for order_ix, order_value in france.orders.items() if not order_value.startswith('A PAR') } orders_2 = game.get_orders() assert check_sorted(orders['FRANCE'], ['A PAR H', 'A MAR - BUR']) assert check_sorted(orders_2['FRANCE'], ['A MAR - BUR']) # Moving to W1901A game.clear_units('FRANCE') game.set_centers('FRANCE', 'SPA') game.process() game.process() assert game.get_current_phase() == 'W1901A' # Adjustment phase game.set_orders('FRANCE', ['A MAR B', 'F MAR B']) game.set_orders('AUSTRIA', 'A PAR H') orders = game.get_orders() assert check_sorted(orders['AUSTRIA'], []) # 'A PAR H' is VOID assert check_sorted(orders['ENGLAND'], []) assert check_sorted(orders['FRANCE'], ['A MAR B']) # 'F MAR B' is VOID assert check_sorted(orders['GERMANY'], []) assert check_sorted(orders['ITALY'], []) assert check_sorted(orders['RUSSIA'], []) assert check_sorted(orders['TURKEY'], []) assert check_sorted(game.get_orders('AUSTRIA'), []) assert check_sorted(game.get_orders('ENGLAND'), []) assert check_sorted(game.get_orders('FRANCE'), ['A MAR B']) assert check_sorted(game.get_orders('GERMANY'), []) assert check_sorted(game.get_orders('ITALY'), []) assert check_sorted(game.get_orders('RUSSIA'), []) assert check_sorted(game.get_orders('TURKEY'), [])