/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.mage.test.cards.abilities.enters;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author LevelX2
*/
public class BanisherPriestTest extends CardTestPlayerBase {
/**
* If Banisher Priest leaves the battlefield before its enters-the-battlefield
* ability resolves, the target creature won't be exiled.
*/
@Test
public void testDoNotExileIfBanisherPriestLeavesBattlefieldBeforeResolve() {
addCard(Zone.BATTLEFIELD, playerA, "Plains", 3);
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 2);
/**
* Banisher Pries
* Creature — Human Cleric 2/2, 1WW
* When Banisher Priest enters the battlefield, exile target creature an opponent controls until Banisher Priest leaves the battlefield.
*/
addCard(Zone.HAND, playerA, "Banisher Priest");
addCard(Zone.HAND, playerB, "Incinerate");
/**
* Rockslide Elemental
* Creature — Elemental 1/1, 2R (3)
* First strike.
* Whenever another creature dies, you may put a +1/+1 counter on Rockslide Elemental..
*/
addCard(Zone.BATTLEFIELD, playerB, "Rockslide Elemental");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Banisher Priest");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Incinerate", "Banisher Priest");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertLife(playerA, 20);
assertLife(playerB, 20);
// Rockslide Elemental returned to battlefield
assertPermanentCount(playerB, "Rockslide Elemental", 1);
// Banisher Priest should be in graveyard
assertPermanentCount(playerA, "Banisher Priest", 0);
// check that returning Rockslide Elemental did get a +1/+1 counter from dying Banisher Priest
assertPowerToughness(playerB, "Rockslide Elemental", 2, 2);
}
/**
* Check that the returning target did not trigger the dies Event of
* the dying Banisher Priest
*/
@Test
public void testReturningTargetDoesNotTriggerDieEventOfBanisherPriest() {
addCard(Zone.BATTLEFIELD, playerA, "Plains", 3);
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 2);
/**
* Banisher Priest
* Creature — Human Cleric 2/2, 1WW
* When Banisher Priest enters the battlefield, exile target creature an opponent controls until Banisher Priest leaves the battlefield.
*/
addCard(Zone.HAND, playerA, "Banisher Priest");
addCard(Zone.HAND, playerB, "Incinerate");
/**
* Rockslide Elemental
* Creature — Elemental 1/1, 2R (3)
* First strike.
* Whenever another creature dies, you may put a +1/+1 counter on Rockslide Elemental.
*/
addCard(Zone.BATTLEFIELD, playerB, "Rockslide Elemental");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Banisher Priest");
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Incinerate", "Banisher Priest");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertLife(playerA, 20);
assertLife(playerB, 20);
// Rockslide Elemental returned to battlefield
assertPermanentCount(playerB, "Rockslide Elemental", 1);
// Banisher Priest should be in graveyard
assertPermanentCount(playerA, "Banisher Priest", 0);
// check that returning Rockslide Elemental did not get a +1/+1 counter from dying Banisher Priest
assertPowerToughness(playerB, "Rockslide Elemental", 1, 1);
}
/**
* Check if Banisher Priest is removed from graveyard with Seance and
* the target creature exiled with the token returns to the game, when
* the token is exiled.
*/
@Test
public void testBanisherPriestToken() {
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
/**
* Banisher Priest
* Creature — Human Cleric 2/2, 1WW
* When Banisher Priest enters the battlefield, exile target creature an opponent controls until Banisher Priest leaves the battlefield.
*/
addCard(Zone.GRAVEYARD, playerB, "Banisher Priest");
/**
* Seance {2}{W}{W}
* Enchantment
* At the beginning of each upkeep, you may exile target creature card from your graveyard.
* If you do, put a token onto the battlefield that's a copy of that card except it's a
* Spirit in addition to its other types. Exile it at the beginning of the next end step.
*/
addCard(Zone.BATTLEFIELD, playerB, "Seance");
playerB.addChoice("Banisher Priest"); // return the Banisher Priest from graveyard with Seance
playerB.addChoice("Silvercoat Lion"); // Exile the Silvercoat Lion with the triggered ability of the Banisher Priest token
setStopAt(1, PhaseStep.END_TURN);
execute();
assertLife(playerA, 20);
assertLife(playerB, 20);
// Banisher Priest should be in exile
assertExileCount("Banisher Priest", 1);
// Token ceased to exist
assertPermanentCount(playerB, "Banisher Priest", 0);
// Silvercoat Lion should be back on battlefield
assertPermanentCount(playerA, "Silvercoat Lion", 1);
}
}