Add unit tests for auto-scoped variables in events

This commit is contained in:
Celtic Minstrel 2021-04-07 21:28:27 -04:00 committed by Celtic Minstrel
parent aa8e171816
commit 7cbc6c9d5d
2 changed files with 340 additions and 0 deletions

View file

@ -0,0 +1,334 @@
{GENERIC_UNIT_TEST "event_test_auto_variables_side_turn" (
[event]
name=side 1 turn 1
{ASSERT ({VARIABLE_CONDITIONAL side_number equals 1})}
{ASSERT ({VARIABLE_CONDITIONAL turn_number equals 1})}
[end_turn][/end_turn]
[/event]
[event]
name=side 2 turn 1
{ASSERT ({VARIABLE_CONDITIONAL side_number equals 2})}
{ASSERT ({VARIABLE_CONDITIONAL turn_number equals 1})}
[end_turn][/end_turn]
[/event]
[event]
name=side 1 turn 2
{ASSERT ({VARIABLE_CONDITIONAL side_number equals 1})}
{ASSERT ({VARIABLE_CONDITIONAL turn_number equals 2})}
[end_turn][/end_turn]
[/event]
[event]
name=side 2 turn 2
{ASSERT ({VARIABLE_CONDITIONAL side_number equals 2})}
{ASSERT ({VARIABLE_CONDITIONAL turn_number equals 2})}
[end_turn][/end_turn]
[/event]
[event]
name=side 1 turn 3
{ASSERT ({VARIABLE_CONDITIONAL side_number equals 1})}
{ASSERT ({VARIABLE_CONDITIONAL turn_number equals 3})}
[end_turn][/end_turn]
[/event]
[event]
name=side 2 turn 3
{ASSERT ({VARIABLE_CONDITIONAL side_number equals 2})}
{ASSERT ({VARIABLE_CONDITIONAL turn_number equals 3})}
[end_turn][/end_turn]
[/event]
[event]
name=turn 4
{SUCCEED}
[/event]
)}
{GENERIC_UNIT_TEST "event_test_auto_variables_xy" (
[event]
name=start
[do_command]
[move]
x=7,7
y=3,6
[/move]
[/do_command]
[do_command]
[move]
x=7,10
y=6,3
[/move]
[/do_command]
[do_command]
[move]
x=10,13
y=3,8
[/move]
[/do_command]
[/event]
[event]
name=moveto
[filter]
x,y=7,6
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL x1 equals 7})}
{ASSERT ({VARIABLE_CONDITIONAL y1 equals 6})}
{ASSERT ({VARIABLE_CONDITIONAL x2 equals 7})}
{ASSERT ({VARIABLE_CONDITIONAL y2 equals 3})}
[/event]
[event]
name=moveto
[filter]
x,y=10,3
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL x1 equals 10})}
{ASSERT ({VARIABLE_CONDITIONAL y1 equals 3})}
{ASSERT ({VARIABLE_CONDITIONAL x2 equals 7})}
{ASSERT ({VARIABLE_CONDITIONAL y2 equals 6})}
[/event]
[event]
name=moveto
[filter]
x,y=13,8
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL x1 equals 13})}
{ASSERT ({VARIABLE_CONDITIONAL y1 equals 8})}
{ASSERT ({VARIABLE_CONDITIONAL x2 equals 10})}
{ASSERT ({VARIABLE_CONDITIONAL y2 equals 3})}
[/event]
[event]
name=start
{SUCCEED}
[/event]
)}
{GENERIC_UNIT_TEST "event_test_auto_variables_units" (
[event]
name=start
# Make sure they don't die during the attacks
[modify_unit]
[filter]
[/filter]
[status]
invulnerable=yes
[/status]
[/modify_unit]
[do_command]
[move]
x=7,13
y=3,4
[/move]
[attack]
[source]
x,y=13,4
[/source]
[destination]
x,y=13,3
[/destination]
[/attack]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=side 2 turn
[do_command]
[attack]
[source]
x,y=13,3
[/source]
[destination]
x,y=13,4
[/destination]
[/attack]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=attack
[filter]
side=1
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL unit.side equals 1})}
{ASSERT ({VARIABLE_CONDITIONAL unit.x equals 13})}
{ASSERT ({VARIABLE_CONDITIONAL unit.y equals 4})}
{ASSERT ({VARIABLE_CONDITIONAL second_unit.side equals 2})}
{ASSERT ({VARIABLE_CONDITIONAL second_unit.x equals 13})}
{ASSERT ({VARIABLE_CONDITIONAL second_unit.y equals 3})}
[/event]
[event]
name=attack
[filter]
side=2
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL unit.side equals 2})}
{ASSERT ({VARIABLE_CONDITIONAL unit.x equals 13})}
{ASSERT ({VARIABLE_CONDITIONAL unit.y equals 3})}
{ASSERT ({VARIABLE_CONDITIONAL second_unit.side equals 1})}
{ASSERT ({VARIABLE_CONDITIONAL second_unit.x equals 13})}
{ASSERT ({VARIABLE_CONDITIONAL second_unit.y equals 4})}
[/event]
[event]
name=turn 2
{SUCCEED}
[/event]
)}
{GENERIC_UNIT_TEST "event_test_auto_variables_weapons" (
[event]
name=start
# Make sure they don't die during the attacks
[modify_unit]
[filter]
[/filter]
[status]
invulnerable=yes
[/status]
[/modify_unit]
[do_command]
[move]
x=7,13
y=3,4
[/move]
[attack]
weapon=1
[source]
x,y=13,4
[/source]
[destination]
x,y=13,3
[/destination]
[/attack]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=side 2 turn
[do_command]
[attack]
[source]
x,y=13,3
[/source]
[destination]
x,y=13,4
[/destination]
[/attack]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=attack
[filter]
side=1
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL weapon.name equals bow})}
{ASSERT ({VARIABLE_CONDITIONAL weapon.damage equals 5})}
{ASSERT ({VARIABLE_CONDITIONAL weapon.number equals 4})}
{ASSERT ({VARIABLE_CONDITIONAL second_weapon.name equals "none"})}
[/event]
[event]
name=attack
[filter]
side=2
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL weapon.name equals sword})}
{ASSERT ({VARIABLE_CONDITIONAL weapon.damage equals 9})}
{ASSERT ({VARIABLE_CONDITIONAL weapon.number equals 2})}
{ASSERT ({VARIABLE_CONDITIONAL second_weapon.name equals sword})}
{ASSERT ({VARIABLE_CONDITIONAL second_weapon.damage equals 5})}
{ASSERT ({VARIABLE_CONDITIONAL second_weapon.number equals 2})}
[/event]
[event]
name=turn 2
{SUCCEED}
[/event]
)}
{GENERIC_UNIT_TEST "event_test_auto_variables_damage" (
[event]
name=start
# Make sure the attacks hit
[modify_unit]
[filter]
[/filter]
[attack]
accuracy=100
[/attack]
[/modify_unit]
[do_command]
[move]
x=7,13
y=3,4
[/move]
[attack]
[source]
x,y=13,4
[/source]
[destination]
x,y=13,3
[/destination]
[/attack]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=attacker hits
{ASSERT ({VARIABLE_CONDITIONAL damage_inflicted equals 5})}
[/event]
[event]
name=defender hits
{ASSERT ({VARIABLE_CONDITIONAL damage_inflicted equals 9})}
[/event]
[event]
name=side 2 turn
{SUCCEED}
[/event]
)}
{GENERIC_UNIT_TEST "event_test_auto_variables_owner" (
[event]
name=start
[terrain]
x,y=10,3
terrain=^Vh
layer=overlay
[/terrain]
{GENERIC_UNIT 1 "Elvish Archer" 7 4}
{GENERIC_UNIT 2 "Orcish Grunt" 13 4}
[do_command]
[move]
x=7,10
y=4,3
[/move]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=side 2 turn
[do_command]
[move]
x=13,10
y=4,3
[/move]
[/do_command]
[end_turn][/end_turn]
[/event]
[event]
name=capture
[filter]
side=1
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL owner_side equals 0})}
[kill]
id=$unit.id
[/kill]
[/event]
[event]
name=capture
[filter]
side=2
[/filter]
{ASSERT ({VARIABLE_CONDITIONAL owner_side equals 1})}
[/event]
[event]
name=turn 2
{SUCCEED}
[/event]
)}

View file

@ -91,6 +91,12 @@
0 event_handlers_in_events__dynamic_filter
0 event_remove_test
0 event_repeat_test
0 event_test_auto_variables_side_turn
0 event_test_auto_variables_xy
0 event_test_auto_variables_units
0 event_test_auto_variables_weapons
0 event_test_auto_variables_damage
0 event_test_auto_variables_owner
0 filter_vision
0 scatter_units
0 has_ally