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'), [])
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 create_game(): """ Creates a game object""" game = Game() game.add_rule('NO_CHECK') return game