Create attractive VASL scenarios, with loads of useful information embedded to assist with game play.
https://vasl-templates.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.7 KiB
181 lines
5.7 KiB
""" Test comment generation. """
|
|
|
|
import re
|
|
|
|
from vasl_templates.webapp.tests.utils import init_webapp, new_scenario, select_tab, \
|
|
find_child, wait_for_clipboard, set_scenario_date
|
|
from vasl_templates.webapp.tests.test_scenario_persistence import load_scenario
|
|
|
|
# ---------------------------------------------------------------------
|
|
|
|
def test_time_based_comments( webapp, webdriver ):
|
|
"""Test time-based comments."""
|
|
|
|
# initialize
|
|
webapp.control_tests.set_data_dir( "{REAL}" )
|
|
init_webapp( webapp, webdriver, scenario_persistence=1 )
|
|
|
|
# test a "START-" time-range
|
|
_test_comments( "german", "vehicles", "SPW 251/10", [
|
|
( None, "PSK, else ATR" ),
|
|
( "12/31/1942", "| ATR |" ),
|
|
( "08/31/1943", "| ATR |" ),
|
|
( "09/01/1943", "| PSK |" ),
|
|
( "01/01/1944", "| PSK |" ),
|
|
] )
|
|
|
|
# test a "-END" time-range
|
|
_test_comments( "french", "ordnance", "Canon AC de 47 SA mle 37 APX", [
|
|
( None, "En Portee<sup>41+</sup>" ),
|
|
( "12/31/1940", "En Portee NA" ),
|
|
( "01/01/1941", "En Portee (Renault AGR2)" ),
|
|
] )
|
|
|
|
# test a "START-END" time-range
|
|
_test_comments( "british", "ordnance", "OQF 6-Pounder 7-cwt", [
|
|
( None, "En Portee<sup>41-8/43</sup>" ),
|
|
( "12/31/1940", "En Portee NA" ),
|
|
( "01/01/1941", "En Portee (3-ton lorry)" ),
|
|
( "08/01/1943", "En Portee (3-ton lorry)" ),
|
|
( "09/01/1943", "En Portee NA" ),
|
|
( "01/01/1944", "En Portee NA" ),
|
|
] )
|
|
|
|
# ---------------------------------------------------------------------
|
|
|
|
def test_french_veh_f( webapp, webdriver ):
|
|
"""Test French Vehicle Note F."""
|
|
|
|
# initialize
|
|
webapp.control_tests.set_data_dir( "{REAL}" )
|
|
init_webapp( webapp, webdriver, scenario_persistence=1 )
|
|
|
|
# test an "(a)" vehicle
|
|
_test_comments( "french", "vehicles", "Ac de 40 CA(a)", [
|
|
( None, "American ESB+" ),
|
|
( None, "Black TH#" ),
|
|
( None, "Captured Use (unless Free French or US)" ),
|
|
] )
|
|
_test_comments( "french", "vehicles", "AM Dodge(a)", [
|
|
( None, "Captured Use (unless Vichy French)" ),
|
|
] )
|
|
|
|
# test a "(b)" vehicle
|
|
_test_comments( "french", "vehicles", "Valentine V(b)", [
|
|
( None, "British ESB+" ),
|
|
( None, "Black TH#" ),
|
|
( None, "Captured Use (unless Vichy French or British)" ),
|
|
] )
|
|
|
|
# test an "(f)" vehicle
|
|
_test_comments( "free-french", "vehicles", "H39(f)", [
|
|
( None, "French ESB+" ),
|
|
( None, "Red TH#" ),
|
|
( None, "Captured Use (unless Free/Vichy French)" ),
|
|
] )
|
|
|
|
# ---------------------------------------------------------------------
|
|
|
|
def test_axis_minor_veh_e( webapp, webdriver ):
|
|
"""Test Axis Minor Vehicle Note E."""
|
|
|
|
# initialize
|
|
webapp.control_tests.set_data_dir( "{REAL}" )
|
|
init_webapp( webapp, webdriver, scenario_persistence=1 )
|
|
|
|
# test an "(f)" vehicle
|
|
_test_comments( "romanian", "vehicles", "R-35(f)", [
|
|
( None, "| French ESB |" ),
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
|
|
# test a "(g)" vehicle
|
|
_test_comments( "croatian", "vehicles", "LT vz 35(g)", [
|
|
( None, "| German ESB |" ),
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
_test_comments( "hungarian", "vehicles", "LT vz 35(g)", [
|
|
( None, "| German ESB |" ),
|
|
( None, "Black TH#" ),
|
|
] )
|
|
|
|
# test an "(i)" vehicle
|
|
_test_comments( "croatian", "vehicles", "L3/35(i)", [
|
|
( None, "| Italian ESB |" ),
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
|
|
# test an "(r)" vehicle
|
|
_test_comments( "croatian", "vehicles", "Komsomolet(r)", [
|
|
( None, "| Russian ESB |" ),
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
|
|
# test an "(t)" vehicle
|
|
_test_comments( "croatian", "vehicles", "LT vz 38(t)A", [
|
|
( None, "| Czech ESB |" ),
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
_test_comments( "slovakian", "vehicles", "LT vz 38(t)A", [
|
|
( None, "| Czech ESB |" ),
|
|
( None, "Black TH#" ),
|
|
] )
|
|
|
|
# ---------------------------------------------------------------------
|
|
|
|
def test_axis_minor_ord_e( webapp, webdriver ):
|
|
"""Test Axis Minor Ordnance Note E."""
|
|
|
|
# initialize
|
|
webapp.control_tests.set_data_dir( "{REAL}" )
|
|
init_webapp( webapp, webdriver, scenario_persistence=1 )
|
|
|
|
# test a "(g)" gun
|
|
_test_comments( "romanian", "ordnance", "leFH 18(g)", [
|
|
( None, "Black TH#" ),
|
|
] )
|
|
_test_comments( "croatian", "ordnance", "leFH 18(g)", [
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
|
|
# test a "(t)" gun
|
|
_test_comments( "romanian", "ordnance", "Kanon PUV vz. 37(t)", [
|
|
( None, "Black TH#" ),
|
|
] )
|
|
_test_comments( "bulgarian", "ordnance", "Kanon PUV vz. 37(t)", [
|
|
( None, "! Black TH#" ),
|
|
] )
|
|
|
|
# ---------------------------------------------------------------------
|
|
|
|
def _test_comments( nat, vo_type, vo_name, vals ):
|
|
"""Generate and check comments for a series of dates."""
|
|
|
|
# load the specified vehicle/ordnance
|
|
new_scenario()
|
|
load_scenario( {
|
|
"PLAYER_1": nat,
|
|
"OB_{}_1".format( vo_type.upper() ): [ { "name": vo_name } ]
|
|
} )
|
|
|
|
# check the generated comments for each specified date
|
|
for date,expected in vals:
|
|
set_scenario_date( date )
|
|
select_tab( "ob1" )
|
|
btn = find_child( "button[data-id='ob_{}_1']".format( vo_type ) )
|
|
btn.click()
|
|
if expected.startswith( "!" ):
|
|
expected, contains = expected[1:].strip(), False
|
|
else:
|
|
contains = True
|
|
wait_for_clipboard( 2, expected, transform=_extract_comments, contains=contains )
|
|
|
|
def _extract_comments( snippet ):
|
|
"""Extract comments from a snippet."""
|
|
vals = [
|
|
mo.group( 1 ).strip()
|
|
for mo in re.finditer( r'<div class="comment">(.*?)</div>', snippet )
|
|
]
|
|
if not vals:
|
|
return vals
|
|
return "| {} |".format( " | ".join( vals ) )
|
|
|