From 2886bbc68a9caa26ba118c3a9fa6f867256b992f Mon Sep 17 00:00:00 2001 From: Philip Paquette Date: Thu, 6 Jun 2019 12:07:50 -0400 Subject: DAIDE - Added tokens with byte representation --- diplomacy/daide/tests/__init__.py | 16 +++ diplomacy/daide/tests/test_tokens.py | 268 +++++++++++++++++++++++++++++++++++ 2 files changed, 284 insertions(+) create mode 100644 diplomacy/daide/tests/__init__.py create mode 100644 diplomacy/daide/tests/test_tokens.py (limited to 'diplomacy/daide/tests') diff --git a/diplomacy/daide/tests/__init__.py b/diplomacy/daide/tests/__init__.py new file mode 100644 index 0000000..4f2769f --- /dev/null +++ b/diplomacy/daide/tests/__init__.py @@ -0,0 +1,16 @@ +# ============================================================================== +# 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 . +# ============================================================================== diff --git a/diplomacy/daide/tests/test_tokens.py b/diplomacy/daide/tests/test_tokens.py new file mode 100644 index 0000000..f06ae70 --- /dev/null +++ b/diplomacy/daide/tests/test_tokens.py @@ -0,0 +1,268 @@ +# ============================================================================== +# 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 . +# ============================================================================== +""" Tests the DAIDE tokens""" +from enum import Enum +from diplomacy.daide.tokens import Token + +class ExpectedTokens(Enum): + """ Copy of the tokens definition from aiclient/adjudicator/TOKENS.h """ + # Source: http://www.ellought.demon.co.uk/dipai/aiclient.zip + # Powers + TOKEN_POWER_AUS = 0x4100 + TOKEN_POWER_ENG = 0x4101 + TOKEN_POWER_FRA = 0x4102 + TOKEN_POWER_GER = 0x4103 + TOKEN_POWER_ITA = 0x4104 + TOKEN_POWER_RUS = 0x4105 + TOKEN_POWER_TUR = 0x4106 + + # Units + TOKEN_UNIT_AMY = 0x4200 + TOKEN_UNIT_FLT = 0x4201 + + # Orders + TOKEN_ORDER_CTO = 0x4320 + TOKEN_ORDER_CVY = 0x4321 + TOKEN_ORDER_HLD = 0x4322 + TOKEN_ORDER_MTO = 0x4323 + TOKEN_ORDER_SUP = 0x4324 + TOKEN_ORDER_VIA = 0x4325 + TOKEN_ORDER_DSB = 0x4340 + TOKEN_ORDER_RTO = 0x4341 + TOKEN_ORDER_BLD = 0x4380 + TOKEN_ORDER_REM = 0x4381 + TOKEN_ORDER_WVE = 0x4382 + + # Order Note + TOKEN_ORDER_NOTE_MBV = 0x4400 + TOKEN_ORDER_NOTE_BPR = 0x4401 + TOKEN_ORDER_NOTE_CST = 0x4402 + TOKEN_ORDER_NOTE_ESC = 0x4403 + TOKEN_ORDER_NOTE_FAR = 0x4404 + TOKEN_ORDER_NOTE_HSC = 0x4405 + TOKEN_ORDER_NOTE_NAS = 0x4406 + TOKEN_ORDER_NOTE_NMB = 0x4407 + TOKEN_ORDER_NOTE_NMR = 0x4408 + TOKEN_ORDER_NOTE_NRN = 0x4409 + TOKEN_ORDER_NOTE_NRS = 0x440A + TOKEN_ORDER_NOTE_NSA = 0x440B + TOKEN_ORDER_NOTE_NSC = 0x440C + TOKEN_ORDER_NOTE_NSF = 0x440D + TOKEN_ORDER_NOTE_NSP = 0x440E + TOKEN_ORDER_NOTE_NSU = 0x4410 + TOKEN_ORDER_NOTE_NVR = 0x4411 + TOKEN_ORDER_NOTE_NYU = 0x4412 + TOKEN_ORDER_NOTE_YSC = 0x4413 + + # Results + TOKEN_RESULT_SUC = 0x4500 + TOKEN_RESULT_BNC = 0x4501 + TOKEN_RESULT_CUT = 0x4502 + TOKEN_RESULT_DSR = 0x4503 + TOKEN_RESULT_FLD = 0x4504 + TOKEN_RESULT_NSO = 0x4505 + TOKEN_RESULT_RET = 0x4506 + + # Coasts + TOKEN_COAST_NCS = 0x4600 + TOKEN_COAST_NEC = 0x4602 + TOKEN_COAST_ECS = 0x4604 + TOKEN_COAST_SEC = 0x4606 + TOKEN_COAST_SCS = 0x4608 + TOKEN_COAST_SWC = 0x460A + TOKEN_COAST_WCS = 0x460C + TOKEN_COAST_NWC = 0x460E + + # Seasons + TOKEN_SEASON_SPR = 0x4700 + TOKEN_SEASON_SUM = 0x4701 + TOKEN_SEASON_FAL = 0x4702 + TOKEN_SEASON_AUT = 0x4703 + TOKEN_SEASON_WIN = 0x4704 + + # Commands + TOKEN_COMMAND_CCD = 0x4800 + TOKEN_COMMAND_DRW = 0x4801 + TOKEN_COMMAND_FRM = 0x4802 + TOKEN_COMMAND_GOF = 0x4803 + TOKEN_COMMAND_HLO = 0x4804 + TOKEN_COMMAND_HST = 0x4805 + TOKEN_COMMAND_HUH = 0x4806 + TOKEN_COMMAND_IAM = 0x4807 + TOKEN_COMMAND_LOD = 0x4808 + TOKEN_COMMAND_MAP = 0x4809 + TOKEN_COMMAND_MDF = 0x480A + TOKEN_COMMAND_MIS = 0x480B + TOKEN_COMMAND_NME = 0x480C + TOKEN_COMMAND_NOT = 0x480D + TOKEN_COMMAND_NOW = 0x480E + TOKEN_COMMAND_OBS = 0x480F + TOKEN_COMMAND_OFF = 0x4810 + TOKEN_COMMAND_ORD = 0x4811 + TOKEN_COMMAND_OUT = 0x4812 + TOKEN_COMMAND_PRN = 0x4813 + TOKEN_COMMAND_REJ = 0x4814 + TOKEN_COMMAND_SCO = 0x4815 + TOKEN_COMMAND_SLO = 0x4816 + TOKEN_COMMAND_SND = 0x4817 + TOKEN_COMMAND_SUB = 0x4818 + TOKEN_COMMAND_SVE = 0x4819 + TOKEN_COMMAND_THX = 0x481A + TOKEN_COMMAND_TME = 0x481B + TOKEN_COMMAND_YES = 0x481C + TOKEN_COMMAND_ADM = 0x481D + TOKEN_COMMAND_SMR = 0x481E + + # Parameters + TOKEN_PARAMETER_AOA = 0x4900 + TOKEN_PARAMETER_BTL = 0x4901 + TOKEN_PARAMETER_ERR = 0x4902 + TOKEN_PARAMETER_LVL = 0x4903 + TOKEN_PARAMETER_MRT = 0x4904 + TOKEN_PARAMETER_MTL = 0x4905 + TOKEN_PARAMETER_NPB = 0x4906 + TOKEN_PARAMETER_NPR = 0x4907 + TOKEN_PARAMETER_PDA = 0x4908 + TOKEN_PARAMETER_PTL = 0x4909 + TOKEN_PARAMETER_RTL = 0x490A + TOKEN_PARAMETER_UNO = 0x490B + TOKEN_PARAMETER_DSD = 0x490D + + # Press + TOKEN_PRESS_ALY = 0x4A00 + TOKEN_PRESS_AND = 0x4A01 + TOKEN_PRESS_BWX = 0x4A02 + TOKEN_PRESS_DMZ = 0x4A03 + TOKEN_PRESS_ELS = 0x4A04 + TOKEN_PRESS_EXP = 0x4A05 + TOKEN_PRESS_FCT = 0x4A06 + TOKEN_PRESS_FOR = 0x4A07 + TOKEN_PRESS_FWD = 0x4A08 + TOKEN_PRESS_HOW = 0x4A09 + TOKEN_PRESS_IDK = 0x4A0A + TOKEN_PRESS_IFF = 0x4A0B + TOKEN_PRESS_INS = 0x4A0C + TOKEN_PRESS_OCC = 0x4A0E + TOKEN_PRESS_ORR = 0x4A0F + TOKEN_PRESS_PCE = 0x4A10 + TOKEN_PRESS_POB = 0x4A11 + TOKEN_PRESS_PRP = 0x4A13 + TOKEN_PRESS_QRY = 0x4A14 + TOKEN_PRESS_SCD = 0x4A15 + TOKEN_PRESS_SRY = 0x4A16 + TOKEN_PRESS_SUG = 0x4A17 + TOKEN_PRESS_THK = 0x4A18 + TOKEN_PRESS_THN = 0x4A19 + TOKEN_PRESS_TRY = 0x4A1A + TOKEN_PRESS_VSS = 0x4A1C + TOKEN_PRESS_WHT = 0x4A1D + TOKEN_PRESS_WHY = 0x4A1E + TOKEN_PRESS_XDO = 0x4A1F + TOKEN_PRESS_XOY = 0x4A20 + TOKEN_PRESS_YDO = 0x4A21 + TOKEN_PRESS_CHO = 0x4A22 + TOKEN_PRESS_BCC = 0x4A23 + TOKEN_PRESS_UNT = 0x4A24 + + # Provinces + TOKEN_PROVINCE_BOH = 0x5000 + TOKEN_PROVINCE_BUR = 0x5001 + TOKEN_PROVINCE_GAL = 0x5002 + TOKEN_PROVINCE_RUH = 0x5003 + TOKEN_PROVINCE_SIL = 0x5004 + TOKEN_PROVINCE_TYR = 0x5005 + TOKEN_PROVINCE_UKR = 0x5006 + TOKEN_PROVINCE_BUD = 0x5107 + TOKEN_PROVINCE_MOS = 0x5108 + TOKEN_PROVINCE_MUN = 0x5109 + TOKEN_PROVINCE_PAR = 0x510A + TOKEN_PROVINCE_SER = 0x510B + TOKEN_PROVINCE_VIE = 0x510C + TOKEN_PROVINCE_WAR = 0x510D + TOKEN_PROVINCE_ADR = 0x520E + TOKEN_PROVINCE_AEG = 0x520F + TOKEN_PROVINCE_BAL = 0x5210 + TOKEN_PROVINCE_BAR = 0x5211 + TOKEN_PROVINCE_BLA = 0x5212 + TOKEN_PROVINCE_EAS = 0x5213 + TOKEN_PROVINCE_ECH = 0x5214 + TOKEN_PROVINCE_GOB = 0x5215 + TOKEN_PROVINCE_GOL = 0x5216 + TOKEN_PROVINCE_HEL = 0x5217 + TOKEN_PROVINCE_ION = 0x5218 + TOKEN_PROVINCE_IRI = 0x5219 + TOKEN_PROVINCE_MAO = 0x521A + TOKEN_PROVINCE_NAO = 0x521B + TOKEN_PROVINCE_NTH = 0x521C + TOKEN_PROVINCE_NWG = 0x521D + TOKEN_PROVINCE_SKA = 0x521E + TOKEN_PROVINCE_TYS = 0x521F + TOKEN_PROVINCE_WES = 0x5220 + TOKEN_PROVINCE_ALB = 0x5421 + TOKEN_PROVINCE_APU = 0x5422 + TOKEN_PROVINCE_ARM = 0x5423 + TOKEN_PROVINCE_CLY = 0x5424 + TOKEN_PROVINCE_FIN = 0x5425 + TOKEN_PROVINCE_GAS = 0x5426 + TOKEN_PROVINCE_LVN = 0x5427 + TOKEN_PROVINCE_NAF = 0x5428 + TOKEN_PROVINCE_PIC = 0x5429 + TOKEN_PROVINCE_PIE = 0x542A + TOKEN_PROVINCE_PRU = 0x542B + TOKEN_PROVINCE_SYR = 0x542C + TOKEN_PROVINCE_TUS = 0x542D + TOKEN_PROVINCE_WAL = 0x542E + TOKEN_PROVINCE_YOR = 0x542F + TOKEN_PROVINCE_ANK = 0x5530 + TOKEN_PROVINCE_BEL = 0x5531 + TOKEN_PROVINCE_BER = 0x5532 + TOKEN_PROVINCE_BRE = 0x5533 + TOKEN_PROVINCE_CON = 0x5534 + TOKEN_PROVINCE_DEN = 0x5535 + TOKEN_PROVINCE_EDI = 0x5536 + TOKEN_PROVINCE_GRE = 0x5537 + TOKEN_PROVINCE_HOL = 0x5538 + TOKEN_PROVINCE_KIE = 0x5539 + TOKEN_PROVINCE_LON = 0x553A + TOKEN_PROVINCE_LVP = 0x553B + TOKEN_PROVINCE_MAR = 0x553C + TOKEN_PROVINCE_NAP = 0x553D + TOKEN_PROVINCE_NWY = 0x553E + TOKEN_PROVINCE_POR = 0x553F + TOKEN_PROVINCE_ROM = 0x5540 + TOKEN_PROVINCE_RUM = 0x5541 + TOKEN_PROVINCE_SEV = 0x5542 + TOKEN_PROVINCE_SMY = 0x5543 + TOKEN_PROVINCE_SWE = 0x5544 + TOKEN_PROVINCE_TRI = 0x5545 + TOKEN_PROVINCE_TUN = 0x5546 + TOKEN_PROVINCE_VEN = 0x5547 + TOKEN_PROVINCE_BUL = 0x5748 + TOKEN_PROVINCE_SPA = 0x5749 + TOKEN_PROVINCE_STP = 0x574A + +def test_tokens(): + """ Test all tokens """ + for token in ExpectedTokens: + token_str = token.name[-3:] + token_bytes = token.value.to_bytes(2, byteorder='big') + token_from_str = Token(from_str=token_str) + token_from_bytes = Token(from_bytes=token_bytes) + assert str(token_from_str) == token_str + assert str(token_from_bytes) == token_str + assert bytes(token_from_str) == token_bytes + assert bytes(token_from_bytes) == token_bytes -- cgit v1.2.3