Add event unit tests for dynamic filters and names (#6785)

This commit is contained in:
Celtic Minstrel 2022-06-21 22:25:01 -04:00 committed by GitHub
parent fdb931bb16
commit be8783154e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 157 additions and 8 deletions

View file

@ -332,7 +332,7 @@
)}
#####
# API(s) being tested: [event]delayed_variable_substitution
# API(s) being tested: [event]delayed_variable_substitution=yes
##
# Actions:
# Define a nested event with delayed_variable_substitution=yes
@ -340,7 +340,7 @@
# Expected end state:
# The nested event delays substituting the variable's value until it executes, rather than when the outer event executes
#####
{GENERIC_UNIT_TEST "event_handers_in_events__delayed" (
{GENERIC_UNIT_TEST "event_handlers_in_events__delayed" (
[event]
name=prestart
{VARIABLE pass_test 0}
@ -356,6 +356,42 @@
[/event]
)}
#####
# API(s) being tested: [event]delayed_variable_substitution=yes, name=$variable
##
# Actions:
# Define a nested event with delayed_variable_substitution=yes and a dynamic name
##
# Expected end state:
# The nested event delays substituting the variable's value until it executes, rather than when the outer event executes
# Because of this, the variable in the event name is substituted on the fly, so the event never executes.
#####
{GENERIC_UNIT_TEST "event_handlers_in_events__delayed__dynamic_name" (
[event]
name=turn 1
{VARIABLE pass_test 0}
[event]
name="turn $($turn_number + 1)"
delayed_variable_substitution=yes
{VARIABLE_OP pass_test add 1}
[/event]
{VARIABLE pass_test 1}
[end_turn][/end_turn]
[/event]
[event]
name=side turn
first_time_only=no
[end_turn][/end_turn]
[/event]
[event]
name=turn 2 end
[end_turn][/end_turn]
{RETURN ({VARIABLE_CONDITIONAL pass_test equals 1})}
[/event]
)}
#####
# API(s) being tested: [event]delayed_variable_substitution
##
@ -365,7 +401,7 @@
# Expected end state:
# The nested event immediately substitutes the variable's value when the outer event executes
#####
{GENERIC_UNIT_TEST "event_handers_in_events__immediate" (
{GENERIC_UNIT_TEST "event_handlers_in_events__immediate" (
[event]
name=prestart
{VARIABLE pass_test 0}
@ -382,17 +418,54 @@
)}
#####
# API(s) being tested: [event][insert_tag]
# API(s) being tested: [event]delayed_variable_substitution=no, name=$variable
##
# Actions:
# Define a nested event with delayed_variable_substitution=no and a dynamic name
##
# Expected end state:
# The nested event immediately substitutes the variable's value when the outer event executes
# Because of this, the variable in the event name is substituted immediately, so the event executes on the next turn.
{GENERIC_UNIT_TEST "event_handlers_in_events__immediate__dynamic_name" (
[event]
name=turn 1
{VARIABLE pass_test 0}
[event]
name="turn $($turn_number + 1)"
delayed_variable_substitution=no
{VARIABLE_OP pass_test add 1}
[/event]
{VARIABLE pass_test 1}
[end_turn][/end_turn]
[/event]
[event]
name=side turn
first_time_only=no
[end_turn][/end_turn]
[/event]
[event]
name=turn 2 end
[end_turn][/end_turn]
{RETURN ({VARIABLE_CONDITIONAL pass_test equals 2})}
[/event]
)}
#####
# API(s) being tested: [event]delayed_variable_substitution=yes[insert_tag]
##
# Actions:
# Define a post_advance event which includes a filter created via [insert_tag]
# Two units are created, exactly one of which matches the filter
# Both units are advanced a level
# The filter variable is changed to a race not present
# Both units are advanced another level
##
# Expected end state:
# The event was triggered exactly once
#####
{GENERIC_UNIT_TEST "event_handlers_in_events__dynamic_filter" (
{GENERIC_UNIT_TEST "event_handlers_in_events__delayed__dynamic_filter" (
[event]
name=start
{VARIABLE pass_test 0}
@ -407,6 +480,7 @@
[event]
name=post_advance
first_time_only=no
delayed_variable_substitution=yes
[insert_tag]
name=filter
variable=filter
@ -420,10 +494,82 @@
[/filter]
experience=50
[/modify_unit]
[set_variables]
name=filter
[value]
race=bat
[/value]
[/set_variables]
[modify_unit]
[filter]
x=1,2
y=1,2
[/filter]
experience=100
[/modify_unit]
{RETURN ({VARIABLE_CONDITIONAL pass_test equals 1})}
[/event]
)}
#####
# API(s) being tested: [event]delayed_variable_substitution=no[insert_tag]
##
# Actions:
# Define a post_advance event which includes a filter created via [insert_tag]
# Two units are created, exactly one of which matches the filter
# Both units are advanced a level
# The filter variable is changed to a race not present
# Both units are advanced another level
##
# Expected end state:
# The event was triggered twice, because the [insert_tag] is substituted when the event was registered.
#####
{GENERIC_UNIT_TEST "event_handlers_in_events__immediate__dynamic_filter" (
[event]
name=start
{VARIABLE pass_test 0}
[set_variables]
name=filter
[value]
race=elf
[/value]
[/set_variables]
{UNIT 1 "Orcish Grunt" 1 1 ()}
{UNIT 1 "Elvish Archer" 2 2 ()}
[event]
name=post_advance
first_time_only=no
delayed_variable_substitution=no
[insert_tag]
name=filter
variable=filter
[/insert_tag]
{VARIABLE_OP pass_test add 1}
[/event]
[modify_unit]
[filter]
x=1,2
y=1,2
[/filter]
experience=50
[/modify_unit]
[set_variables]
name=filter
[value]
race=bat
[/value]
[/set_variables]
[modify_unit]
[filter]
x=1,2
y=1,2
[/filter]
experience=100
[/modify_unit]
{RETURN ({VARIABLE_CONDITIONAL pass_test equals 2})}
[/event]
)}
#####
# API(s) being tested: [remove_event]
##

View file

@ -119,9 +119,12 @@
0 event_handlers_in_events_6
0 event_handlers_in_events_7
0 event_handlers_in_events_8
0 event_handers_in_events__delayed
0 event_handers_in_events__immediate
0 event_handlers_in_events__dynamic_filter
0 event_handlers_in_events__delayed
0 event_handlers_in_events__delayed__dynamic_name
0 event_handlers_in_events__delayed__dynamic_filter
0 event_handlers_in_events__immediate
0 event_handlers_in_events__immediate__dynamic_name
0 event_handlers_in_events__immediate__dynamic_filter
0 event_remove_test
0 event_repeat_test
0 event_test_auto_variables_side_turn