Unit tests for deterministic unit facings

This commit is contained in:
Alexander van Gessel 2014-05-27 17:30:13 +02:00
parent 311d7bad80
commit 4d7de12e47
2 changed files with 221 additions and 0 deletions

View file

@ -0,0 +1,215 @@
#define CHECK_RECRUIT CONTENT
[event]
name=recruit
[lua]
code =<<
local temp = wesnoth.get_variable("unit")
local result = wesnoth.synchronize_choice(
function()
return { value = temp.facing }
end)
wesnoth.set_variable("synced_temp", result.value)
>>
[/lua]
{ASSERT ({VARIABLE_CONDITIONAL unit.facing equals $synced_temp})}
{CONTENT}
[/event]
#enddef
#define CHECK_FACES FACEDIR
{CHECK_RECRUIT (
{ASSERT ({VARIABLE_CONDITIONAL unit.facing equals {FACEDIR}})}
)}
#enddef
#define RECRUIT TYPE TO FROM
[do_command]
[recruit]
type={TYPE}
x,y={TO}
[from]
x,y={FROM}
[/from]
[/recruit]
[/do_command]
#enddef
#define RECRUIT_TEST NAME CONTENT
{GENERIC_UNIT_TEST {NAME} (
[event]
name=start
[allow_recruit]
side=1
type=Spearman
[/allow_recruit]
[allow_recruit]
side,type=2,Orcish Grunt
[/allow_recruit]
[/event]
[event]
name=turn refresh
first_time_only=no
[kill]
canrecruit=no
[/kill]
[/event]
{CONTENT}
)}
#enddef
{RECRUIT_TEST recruit_facing_enemy_one (
[event]
name=side 1 turn refresh
{CHECK_FACES "ne"}
{RECRUIT ("Spearman") (7,4) (7,3)}
[end_turn]
[/end_turn]
[/event]
[event]
name=side 2 turn refresh
{CHECK_FACES "nw"}
{RECRUIT ("Orcish Grunt") (13,4) (13,3)}
[end_turn]
[/end_turn]
[/event]
[event]
name=side 1 turn 2
{RETURN ([true][/true])}
[/event]
)}
{RECRUIT_TEST recruit_facing_enemy_two (
[event]
name=side 2 turn refresh
first_time_only=no
[end_turn]
[/end_turn]
[/event]
[event]
name=side 1 turn 1 refresh
{CHECK_FACES "ne"}
{RECRUIT ("Spearman") (7,4) (7,3)}
[end_turn]
[/end_turn]
[/event]
[event]
name=side 1 turn 2 refresh
[unit]
x,y,side,type=7,1,2,Orcish Grunt
[/unit]
{CHECK_FACES "n"}
{RECRUIT ("Spearman") (7,4) (7,3)}
[end_turn]
[/end_turn]
[/event]
[event]
name=side 1 turn 3 refresh
[unit]
x,y,side,type=7,7,2,Orcish Warrior
[/unit]
{CHECK_FACES "s"}
{RECRUIT ("Spearman") (7,4) (7,3)}
[end_turn]
[/end_turn]
[/event]
[event]
name=side 1 turn 4 refresh
{RETURN ([true][/true])}
[/event]
)}
#define EMPTY_MAP
victory_when_enemies_defeated=no
map_data="Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg
Gg, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Gg
Gg, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Gg
Gg, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Gg
Gg, Ch, Ch, Ch, Ch,1 Kh, Ch, Ch, Ch, Ch, Gg
Gg, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Gg
Gg, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Ch, Gg
Gg, Ch, Ch, Ch, Ch,2 Ch, Ch, Ch, Ch, Ch, Gg
Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg, Gg"
[event]
name=start
[gold]
side,amount=1,1000
[/gold]
[kill]
side=2
[/kill]
[/event]
#enddef
#define RECRUIT_AND_CHECK TURN FACING LOC
[event]
name=side 1 turn {TURN} refresh
{CHECK_FACES {FACING}}
{RECRUIT ("Spearman") {LOC} (5,4)}
[end_turn]
[/end_turn]
[/event]
#enddef
#define RECALL_AND_CHECK TURN FACING LOC
[event]
name=side 1 turn {TURN} refresh
[store_unit]
[filter]
canrecruit=yes
[/filter]
variable=leader_store
[/store_unit]
{CHECK_FACES {FACING}}
[unit]
type=Spearman
x,y=recall,recall
side=1
id=test_{TURN}
[/unit]
[do_command]
[recall]
value=test_{TURN}
x,y={LOC}
[/recall]
[/do_command]
[unstore_unit]
variable=leader_store
[/unstore_unit]
[end_turn]
[/end_turn]
[/event]
#enddef
{RECRUIT_TEST recruit_facing_leader (
{EMPTY_MAP}
{RECRUIT_AND_CHECK 1 ("n") (5,2)}
{RECRUIT_AND_CHECK 2 ("s") (5,5)}
{RECRUIT_AND_CHECK 3 ("nw") (2,3)}
{RECRUIT_AND_CHECK 4 ("ne") (8,3)}
{RECRUIT_AND_CHECK 5 ("sw") (2,4)}
{RECRUIT_AND_CHECK 6 ("sw") (3,5)}
#Rotational symmetry edge cases
{RECRUIT_AND_CHECK 7 ("nw") (3,4)}
{RECRUIT_AND_CHECK 8 ("se") (7,4)}
[event]
name=side 1 turn 9 refresh
{RETURN ([true][/true])}
[/event]
)}
{RECRUIT_TEST recruit_facing_center (
{EMPTY_MAP}
{RECALL_AND_CHECK 1 ("s") (5,2)}
{RECALL_AND_CHECK 2 ("n") (5,5)}
{RECALL_AND_CHECK 3 ("se") (2,3)}
{RECALL_AND_CHECK 4 ("sw") (8,3)}
{RECALL_AND_CHECK 5 ("ne") (2,4)}
{RECALL_AND_CHECK 6 ("ne") (3,5)}
#Rotational symmetry edge cases
{RECALL_AND_CHECK 7 ("se") (3,4)}
{RECALL_AND_CHECK 8 ("nw") (7,4)}
[event]
name=side 1 turn 9 refresh
{RETURN ([true][/true])}
[/event]
)}

View file

@ -76,3 +76,9 @@
#
0 test_grunt_tod_damage
0 test_berzerk_firststrike
#
# Deterministic unit facing tests
0 recruit_facing_enemy_one
0 recruit_facing_enemy_two
0 recruit_facing_leader
0 recruit_facing_center