Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add unit test for an object-based "feeding" ability
based on tekelili's forum post here: http://forums.wesnoth.org/viewtopic.php?f=8&t=40449#p572206
- Loading branch information
Showing
2 changed files
with
163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
# This unit test defines a WML object based implementation of the "feeding" ability | ||
# and checks that it works. What is being tested here, beyond what is tested in | ||
# test_unit_map and other scenarios that test the attack pathway, is that | ||
# - the die event works | ||
# - objects attach to units by id correctly | ||
# - abilities can be properly detected in filters | ||
# - abillities which add other objects works | ||
# - this impl of feeding works | ||
|
||
#define STR_FEEDING | ||
foo | ||
#enddef | ||
|
||
#define STR_FEEDING_EFFECT | ||
bar | ||
#enddef | ||
|
||
#define STR_FEEDING_DESCRIPTION | ||
baz | ||
#enddef | ||
|
||
#define TEST_FEEDING ID EXPECTED_INCREASE | ||
[store_unit] | ||
[filter] | ||
id={ID} | ||
[/filter] | ||
variable=Killer | ||
[/store_unit] | ||
|
||
{VARIABLE victim_x $Killer.x} | ||
{VARIABLE_OP victim_x sub 1} | ||
{VARIABLE victim_y $Killer.y} | ||
|
||
{VARIABLE victim_side 3} | ||
{VARIABLE_OP victim_side sub $Killer.side|} | ||
|
||
{VARIABLE Killer_start_hp $Killer.hitpoints} | ||
|
||
[terrain_mask] | ||
x,y=$victim_x|,$victim_y| | ||
mask="Xv" | ||
[/terrain_mask] | ||
{UNIT $victim_side| "Elvish Archer" $victim_x| $victim_y| (hitpoints=1)} | ||
[do_command] | ||
[attack] | ||
weapon = 0 | ||
defender_weapon = 0 | ||
[source] | ||
x,y=$Killer.x|,$Killer.y| | ||
[/source] | ||
[destination] | ||
x,y=$victim_x|,$victim_y| | ||
[/destination] | ||
[/attack] | ||
[/do_command] | ||
|
||
[store_unit] | ||
[filter] | ||
id={ID} | ||
[/filter] | ||
variable=Killer | ||
[/store_unit] | ||
|
||
{VARIABLE_OP Killer_start_hp add {EXPECTED_INCREASE}} | ||
|
||
{ASSERT ({VARIABLE_CONDITIONAL Killer.hitpoints equals $Killer_start_hp})} | ||
#enddef | ||
|
||
{GENERIC_UNIT_TEST "feeding" ( | ||
[event] | ||
id=ability_feeding_die | ||
name=die | ||
first_time_only=no | ||
[filter] | ||
[not] | ||
[filter_wml] | ||
[status] | ||
not_living="yes" | ||
[/status] | ||
[/filter_wml] | ||
[/not] | ||
[/filter] | ||
[filter_second] | ||
ability=feeding | ||
[/filter_second] | ||
[unstore_unit] | ||
variable=second_unit | ||
{COLOR_HEAL} | ||
text= {STR_FEEDING_EFFECT} | ||
find_vacant=no | ||
[/unstore_unit] | ||
[object] | ||
silent=yes | ||
duration=forever | ||
[filter] | ||
x,y=$x2|,$y2| | ||
[/filter] | ||
[effect] | ||
apply_to=hitpoints | ||
increase_total=1 | ||
increase=1 | ||
[/effect] | ||
[/object] | ||
[/event] | ||
[event] | ||
name=start | ||
[object] | ||
id=feeding_object | ||
silent=yes | ||
[effect] | ||
apply_to=new_ability | ||
[abilities] | ||
[dummy] | ||
id=feeding | ||
name= {STR_FEEDING} | ||
female_name= {STR_FEEDING} | ||
description= {STR_FEEDING_DESCRIPTION} | ||
[/dummy] | ||
[/abilities] | ||
[/effect] | ||
[filter] | ||
id=bob | ||
[/filter] | ||
[/object] | ||
[/event] | ||
[event] | ||
name=start | ||
|
||
{TEST_FEEDING alice 0} | ||
{TEST_FEEDING alice 0} | ||
{TEST_FEEDING alice 0} | ||
|
||
[end_turn] | ||
[/end_turn] | ||
[/event] | ||
[event] | ||
name = side 2 turn 1 | ||
|
||
{TEST_FEEDING bob 1} | ||
{TEST_FEEDING bob 1} | ||
{TEST_FEEDING bob 1} | ||
|
||
[store_unit] | ||
[filter] | ||
id=bob | ||
[/filter] | ||
variable=Bob | ||
[/store_unit] | ||
|
||
{VARIABLE_OP Bob.experience add 50} | ||
|
||
[unstore_unit] | ||
variable=Bob | ||
[/unstore_unit] | ||
|
||
{TEST_FEEDING bob 1} | ||
{TEST_FEEDING bob 1} | ||
{TEST_FEEDING bob 1} | ||
|
||
{RETURN ([true][/true])} | ||
[/event] | ||
)} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters