예제 #1
0
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'), [])
예제 #2
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'])
예제 #3
0
 def create_game():
     """ Creates a game object"""
     game = Game()
     game.add_rule('NO_CHECK')
     return game