mirror of
https://github.com/magefree/mage.git
synced 2026-01-09 12:22:10 -08:00
Added tests.
This commit is contained in:
parent
5754d53b3b
commit
e7014f385b
4 changed files with 114 additions and 16 deletions
|
|
@ -29,6 +29,7 @@ package org.mage.test.cards.triggers;
|
|||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.Filter;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
|
|
@ -227,4 +228,101 @@ public class EntersTheBattlefieldTriggerTest extends CardTestPlayerBase {
|
|||
|
||||
}
|
||||
|
||||
// Test self trigger
|
||||
@Test
|
||||
public void testNoxiousGhoul1() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 5);
|
||||
// Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn.
|
||||
addCard(Zone.HAND, playerA, "Noxious Ghoul", 1); // {3}{B}{B}
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Zephyr Falcon", 1); // 1/1
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1); // 2/2
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Scathe Zombies", 1); // 2/2 Zombie
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Noxious Ghoul");
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
|
||||
execute();
|
||||
|
||||
assertPermanentCount(playerA, "Noxious Ghoul", 1);
|
||||
assertPowerToughness(playerB, "Silvercoat Lion", 1, 1);
|
||||
assertPowerToughness(playerB, "Scathe Zombies", 2, 2);
|
||||
assertGraveyardCount(playerB, "Zephyr Falcon", 1);
|
||||
|
||||
}
|
||||
|
||||
// Test another zombie trigger
|
||||
@Test
|
||||
public void testNoxiousGhoul2() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 8);
|
||||
// Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn.
|
||||
addCard(Zone.HAND, playerA, "Noxious Ghoul", 1); // 3/3 Zombie {3}{B}{B}
|
||||
addCard(Zone.HAND, playerA, "Scathe Zombies", 1); // 2/2 Zombie {2}{B}
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion", 1); // 2/2
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Island", 3);
|
||||
// Changeling (This card is every creature type.)
|
||||
// Creatures target player controls get -2/-0 and lose all creature types until end of turn.
|
||||
addCard(Zone.HAND, playerB, "Ego Erasure", 1); // {2}{U}
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Zephyr Falcon", 1); // 1/1
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1); // 2/2
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Scathe Zombies", 1); // 2/2 Zombie {2}{B}
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Noxious Ghoul");
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Ego Erasure", "targetPlayer=PlayerA", "Whenever");
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Scathe Zombies");
|
||||
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||
|
||||
execute();
|
||||
|
||||
assertPermanentCount(playerA, "Noxious Ghoul", 1);
|
||||
assertGraveyardCount(playerB, "Ego Erasure", 1);
|
||||
assertPowerToughness(playerA, "Noxious Ghoul", -1, 1);// -2/0 from Ego Erasure / -2/0 from the 2 zombies coming into play
|
||||
assertPermanentCount(playerA, "Scathe Zombies", 1);
|
||||
assertPowerToughness(playerB, "Scathe Zombies", 2, 2);
|
||||
assertGraveyardCount(playerB, "Zephyr Falcon", 1);
|
||||
assertGraveyardCount(playerB, "Silvercoat Lion", 1);
|
||||
assertGraveyardCount(playerA, "Silvercoat Lion", 1);
|
||||
}
|
||||
|
||||
// Test copy of Noxious Ghoul
|
||||
@Test
|
||||
public void testCopyNoxiousGhoul() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 3);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 9);
|
||||
// Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn.
|
||||
addCard(Zone.HAND, playerA, "Noxious Ghoul", 1); // 3/3 Zombie {3}{B}{B}
|
||||
// You may have Clone enter the battlefield as a copy of any creature on the battlefield.
|
||||
addCard(Zone.HAND, playerA, "Clone", 1); // 0/0 Shapeshifter {3}{U}
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Carnivorous Plant", 1); // 4/5
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Island", 3);
|
||||
// Changeling (This card is every creature type.)
|
||||
// Creatures target player controls get -2/-0 and lose all creature types until end of turn.
|
||||
addCard(Zone.HAND, playerB, "Ego Erasure", 1); // {2}{U}
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Zephyr Falcon", 1); // 1/1
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Carnivorous Plant", 1); // 4/5
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Scathe Zombies", 1); // 2/2 Zombie {2}{B}
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Noxious Ghoul");
|
||||
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Clone");
|
||||
setChoice(playerA, "Noxious Ghoul");
|
||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Ego Erasure", "targetPlayer=PlayerA", "Whenever");
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
|
||||
execute();
|
||||
|
||||
assertPermanentCount(playerA, "Noxious Ghoul", 2);
|
||||
assertGraveyardCount(playerB, "Ego Erasure", 1);
|
||||
assertPowerToughness(playerA, "Noxious Ghoul", -1, 1, Filter.ComparisonScope.All);// -1/-1 from the second Noxious Ghoul also if it's no zombie
|
||||
|
||||
assertGraveyardCount(playerB, "Zephyr Falcon", 1);
|
||||
assertPowerToughness(playerB, "Carnivorous Plant", 2, 3);
|
||||
assertPowerToughness(playerA, "Carnivorous Plant", 0, 3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -987,9 +987,13 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement
|
|||
*/
|
||||
public void castSpell(int turnNum, PhaseStep step, TestPlayer player, String cardName, String targetName, String spellOnStack, StackClause clause) {
|
||||
if (StackClause.WHILE_ON_STACK.equals(clause)) {
|
||||
player.addAction(turnNum, step, "activate:Cast " + cardName + "$target=" + targetName + "$spellOnStack=" + spellOnStack);
|
||||
player.addAction(turnNum, step, "activate:Cast " + cardName
|
||||
+ "$" + (targetName.startsWith("target") ? targetName : "target=" + targetName)
|
||||
+ "$spellOnStack=" + spellOnStack);
|
||||
} else {
|
||||
player.addAction(turnNum, step, "activate:Cast " + cardName + "$target=" + targetName + "$!spellOnStack=" + spellOnStack);
|
||||
player.addAction(turnNum, step, "activate:Cast " + cardName
|
||||
+ "$" + (targetName.startsWith("target") ? targetName : "target=" + targetName)
|
||||
+ "$!spellOnStack=" + spellOnStack);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue