mirror of
https://github.com/GoodStartLabs/AI_Diplomacy.git
synced 2026-04-25 17:10:53 +00:00
442 lines
16 KiB
Python
442 lines
16 KiB
Python
# ==============================================================================
|
|
# Copyright (C) 2019 - Philip Paquette
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify it under
|
|
# the terms of the GNU Affero General Public License as published by the Free
|
|
# Software Foundation, either version 3 of the License, or (at your option) any
|
|
# later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
# details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License along
|
|
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
# ==============================================================================
|
|
""" Test order conversion. """
|
|
from diplomacy.integration.webdiplomacy_net.orders import Order
|
|
|
|
def compare_dicts(dict_1, dict_2):
|
|
""" Checks if two dictionaries are equal """
|
|
keys_1 = set(dict_1.keys()) - {'convoyPath'}
|
|
keys_2 = set(dict_2.keys()) - {'convoyPath'}
|
|
if keys_1 != keys_2:
|
|
return False
|
|
for key in keys_1:
|
|
if dict_1[key] != dict_2[key]:
|
|
return False
|
|
return True
|
|
|
|
def test_hold_army_001():
|
|
""" Tests hold army """
|
|
raw_order = 'A PAR H'
|
|
order_str = 'A PAR H'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Hold',
|
|
'toTerrID': '',
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_hold_army_002():
|
|
""" Tests hold army """
|
|
raw_order = 'A ABC H'
|
|
order_str = ''
|
|
order_dict = {}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_hold_fleet_001():
|
|
""" Tests hold fleet """
|
|
raw_order = 'F LON H'
|
|
order_str = 'F LON H'
|
|
order_dict = {'terrID': 6,
|
|
'unitType': 'Fleet',
|
|
'type': 'Hold',
|
|
'toTerrID': '',
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_move_army_001():
|
|
""" Tests move army """
|
|
raw_order = 'A YOR - LON'
|
|
order_str = 'A YOR - LON'
|
|
order_dict = {'terrID': 4,
|
|
'unitType': 'Army',
|
|
'type': 'Move',
|
|
'toTerrID': 6,
|
|
'fromTerrID': '',
|
|
'viaConvoy': 'No'}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_move_army_002():
|
|
""" Tests move army """
|
|
raw_order = 'A PAR - LON VIA'
|
|
order_str = 'A PAR - LON VIA'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Move',
|
|
'toTerrID': 6,
|
|
'fromTerrID': '',
|
|
'viaConvoy': 'Yes'}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_move_fleet_001():
|
|
""" Tests move fleet """
|
|
raw_order = 'F BRE - MAO'
|
|
order_str = 'F BRE - MAO'
|
|
order_dict = {'terrID': 46,
|
|
'unitType': 'Fleet',
|
|
'type': 'Move',
|
|
'toTerrID': 61,
|
|
'fromTerrID': '',
|
|
'viaConvoy': 'No'}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_support_hold_001():
|
|
""" Tests for support hold """
|
|
raw_order = 'A PAR S F BRE'
|
|
order_str = 'A PAR S BRE'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Support hold',
|
|
'toTerrID': 46,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_support_hold_002():
|
|
""" Tests for support hold """
|
|
raw_order = 'F MAO S F BRE'
|
|
order_str = 'F MAO S BRE'
|
|
order_dict = {'terrID': 61,
|
|
'unitType': 'Fleet',
|
|
'type': 'Support hold',
|
|
'toTerrID': 46,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_support_move_001():
|
|
""" Tests support move """
|
|
raw_order = 'A PAR S F MAO - BRE'
|
|
order_str = 'A PAR S MAO - BRE'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Support move',
|
|
'toTerrID': 46,
|
|
'fromTerrID': 61,
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_support_move_002():
|
|
""" Tests support move """
|
|
raw_order = 'F MAO S A PAR - BRE'
|
|
order_str = 'F MAO S PAR - BRE'
|
|
order_dict = {'terrID': 61,
|
|
'unitType': 'Fleet',
|
|
'type': 'Support move',
|
|
'toTerrID': 46,
|
|
'fromTerrID': 47,
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_convoy_001():
|
|
""" Tests convoy """
|
|
raw_order = 'F MAO C A PAR - LON'
|
|
order_str = 'F MAO C A PAR - LON'
|
|
order_dict = {'terrID': 61,
|
|
'unitType': 'Fleet',
|
|
'type': 'Convoy',
|
|
'toTerrID': 6,
|
|
'fromTerrID': 47,
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_retreat_army_001():
|
|
""" Tests retreat army """
|
|
raw_order = 'A PAR R LON'
|
|
order_str = 'A PAR R LON'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Retreat',
|
|
'toTerrID': 6,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_retreat_army_002():
|
|
""" Tests retreat army """
|
|
raw_order = 'A PAR - LON'
|
|
order_str = 'A PAR R LON'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Retreat',
|
|
'toTerrID': 6,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='R')
|
|
order_from_dict = Order(order_dict, phase_type='R')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_retreat_fleet_001():
|
|
""" Tests retreat fleet """
|
|
raw_order = 'F BRE R SPA/SC'
|
|
order_str = 'F BRE R SPA/SC'
|
|
order_dict = {'terrID': 46,
|
|
'unitType': 'Fleet',
|
|
'type': 'Retreat',
|
|
'toTerrID': 77,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_disband_army_001():
|
|
""" Tests disband army """
|
|
raw_order = 'A PAR D'
|
|
order_str = 'A PAR D'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Disband',
|
|
'toTerrID': '',
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='R')
|
|
order_from_dict = Order(order_dict, phase_type='R')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_disband_fleet_001():
|
|
""" Tests disband fleet """
|
|
raw_order = 'F BRE D'
|
|
order_str = 'F BRE D'
|
|
order_dict = {'terrID': 46,
|
|
'unitType': 'Fleet',
|
|
'type': 'Disband',
|
|
'toTerrID': '',
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='R')
|
|
order_from_dict = Order(order_dict, phase_type='R')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_disband_fleet_coast_001():
|
|
""" Tests disband fleet (retreats phase) """
|
|
raw_order = 'F SPA/NC D'
|
|
order_str = 'F SPA/NC D'
|
|
order_dict = {'terrID': 76,
|
|
'unitType': 'Fleet',
|
|
'type': 'Disband',
|
|
'toTerrID': '',
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='R')
|
|
order_from_dict = Order(order_dict, phase_type='R')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_disband_fleet_coast_002():
|
|
""" Tests disband fleet (adjustment phase)"""
|
|
raw_order = 'F SPA/NC D'
|
|
order_str = 'F SPA D'
|
|
order_dict = {'terrID': 8,
|
|
'unitType': 'Fleet',
|
|
'type': 'Destroy',
|
|
'toTerrID': 8,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='A')
|
|
order_from_dict = Order(order_dict, phase_type='A')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_build_army_001():
|
|
""" Tests build army """
|
|
raw_order = 'A PAR B'
|
|
order_str = 'A PAR B'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Build Army',
|
|
'toTerrID': 47,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_build_fleet_001():
|
|
""" Tests build fleet """
|
|
raw_order = 'F BRE B'
|
|
order_str = 'F BRE B'
|
|
order_dict = {'terrID': 46,
|
|
'unitType': 'Fleet',
|
|
'type': 'Build Fleet',
|
|
'toTerrID': 46,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order)
|
|
order_from_dict = Order(order_dict)
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_disband_army_002():
|
|
""" Tests disband army """
|
|
raw_order = 'A PAR D'
|
|
order_str = 'A PAR D'
|
|
order_dict = {'terrID': 47,
|
|
'unitType': 'Army',
|
|
'type': 'Destroy',
|
|
'toTerrID': 47,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='A')
|
|
order_from_dict = Order(order_dict, phase_type='A')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|
|
|
|
def test_disband_fleet_002():
|
|
""" Tests disband fleet """
|
|
raw_order = 'F BRE D'
|
|
order_str = 'F BRE D'
|
|
order_dict = {'terrID': 46,
|
|
'unitType': 'Fleet',
|
|
'type': 'Destroy',
|
|
'toTerrID': 46,
|
|
'fromTerrID': '',
|
|
'viaConvoy': ''}
|
|
order_from_string = Order(raw_order, phase_type='A')
|
|
order_from_dict = Order(order_dict, phase_type='A')
|
|
|
|
# Validating
|
|
assert order_from_string.to_string() == order_str
|
|
assert compare_dicts(order_from_string.to_dict(), order_dict)
|
|
assert order_from_dict.to_string() == order_str
|
|
assert compare_dicts(order_from_dict.to_dict(), order_dict)
|