aboutsummaryrefslogtreecommitdiff
path: root/diplomacy/integration/webdiplomacy_net/tests/test_orders.py
diff options
context:
space:
mode:
Diffstat (limited to 'diplomacy/integration/webdiplomacy_net/tests/test_orders.py')
-rw-r--r--diplomacy/integration/webdiplomacy_net/tests/test_orders.py385
1 files changed, 385 insertions, 0 deletions
diff --git a/diplomacy/integration/webdiplomacy_net/tests/test_orders.py b/diplomacy/integration/webdiplomacy_net/tests/test_orders.py
new file mode 100644
index 0000000..aed58c6
--- /dev/null
+++ b/diplomacy/integration/webdiplomacy_net/tests/test_orders.py
@@ -0,0 +1,385 @@
+# ==============================================================================
+# 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_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_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)