mirror of
https://github.com/correl/mage.git
synced 2024-11-28 19:19:55 +00:00
[ZNR] Added tests for YasharnImplacableEarth
This commit is contained in:
parent
a70297ff32
commit
9ea62a1862
1 changed files with 158 additions and 0 deletions
|
@ -0,0 +1,158 @@
|
|||
package org.mage.test.cards.single.znr;
|
||||
|
||||
import mage.cards.decks.Deck;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
/**
|
||||
* {@link mage.cards.y.YasharnImplacableEarth Yasharn, Implacable Earth}
|
||||
* When Yasharn enters the battlefield, search your library for a basic Forest card and a basic Plains card, reveal those cards, put them into your hand, then shuffle.
|
||||
* Players can’t pay life or sacrifice nonland permanents to cast spells or activate abilities.
|
||||
*
|
||||
* @author Alex-Vasile
|
||||
*/
|
||||
public class YasharnImplacableEarthTest extends CardTestPlayerBase {
|
||||
|
||||
private static final String yasharn = "Yasharn, Implacable Earth";
|
||||
|
||||
/**
|
||||
* Test that players can't pay life to cast a spell.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void cantPayLifeToCast() {
|
||||
// {W}{B}
|
||||
// As an additional cost to cast this spell, pay 5 life or sacrifice a creature or enchantment.
|
||||
// Destroy target creature.
|
||||
addCard(Zone.HAND, playerA, "Final Payment");
|
||||
addCard(Zone.BATTLEFIELD, playerA, yasharn);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Final Payment", yasharn);
|
||||
setChoice(playerA, "No");
|
||||
setChoice(playerA, "Silvercoat Lion");
|
||||
|
||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
execute();
|
||||
assertPermanentCount(playerA, "Silvercoat Lion", 1);
|
||||
assertLife(playerA, 20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that players can't pay life to activate an ability.
|
||||
*/
|
||||
@Test
|
||||
public void cantPayLifeToActivate() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, yasharn);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Flooded Strand");
|
||||
addCard(Zone.LIBRARY, playerA, "Island");
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}");
|
||||
|
||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
try {
|
||||
execute();
|
||||
Assert.fail("must throw exception on execute");
|
||||
} catch (Throwable e) {
|
||||
if (!e.getMessage().contains("Can't find ability to activate command: {T}")) {
|
||||
Assert.fail("must throw error about having 0 actions, but got:\n" + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that players can't sacrifice a nonland permanent to cast a spell.
|
||||
*/
|
||||
@Test
|
||||
@Ignore
|
||||
public void cantSacrificeNonlandToCast() {
|
||||
// {1}{B}
|
||||
// As an additional cost to cast this spell, sacrifice an artifact or creature.
|
||||
// Draw two cards and create a Treasure token.
|
||||
addCard(Zone.HAND, playerA, "Deadly Dispute");
|
||||
addCard(Zone.BATTLEFIELD, playerA, yasharn);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
|
||||
|
||||
setStrictChooseMode(true);
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Deadly Dispute");
|
||||
setChoice(playerA, yasharn);
|
||||
|
||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
execute();
|
||||
assertPermanentCount(playerA, "Treasure Token", 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that players can't sacrifice nonland permanent to activate an ability.
|
||||
*/
|
||||
@Test
|
||||
public void cantSacrificeNonlandtoActive() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, yasharn);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Armillary Sphere");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{2}");
|
||||
|
||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
try {
|
||||
execute();
|
||||
Assert.fail("must throw exception on execute");
|
||||
} catch (Throwable e) {
|
||||
if (!e.getMessage().contains("Can't find ability to activate command: {2}")) {
|
||||
Assert.fail("must throw error about having 0 actions, but got:\n" + e.getMessage());
|
||||
}
|
||||
}
|
||||
assertHandCount(playerA, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that a player can still sacrifice a land to cast a spell.
|
||||
*/
|
||||
@Test
|
||||
public void canSacrificeLandToCast() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, yasharn);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest");
|
||||
addCard(Zone.HAND, playerA, "Crop Rotation");
|
||||
addCard(Zone.LIBRARY, playerA, "Mountain");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Crop Rotation");
|
||||
setChoice(playerA, "Forest");
|
||||
addTarget(playerA, "Mountain");
|
||||
|
||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
execute();
|
||||
|
||||
assertPermanentCount(playerA, "Mountain", 1);
|
||||
assertPermanentCount(playerA, "Forest", 0);
|
||||
|
||||
assertGraveyardCount(playerA, "Forest", 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that a player can still sacrifice a land to activate an abiltiy.
|
||||
*/
|
||||
@Test
|
||||
public void canSacrificeLandToActivate() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, yasharn);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Evolving Wilds");
|
||||
addCard(Zone.LIBRARY, playerA, "Island");
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}");
|
||||
|
||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
execute();
|
||||
|
||||
assertPermanentCount(playerA, "Island", 1);
|
||||
assertGraveyardCount(playerA, "Evolving Wilds", 1);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue