package org.mage.test.cards.cost.sacrifice;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.counters.CounterType;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author noxx
*/
public class MomentousFallTest extends CardTestPlayerBase {
/**
* Momentous Fall
* Instant {2}{G}{G}
* As an additional cost to cast Momentous Fall, sacrifice a creature.
* You draw cards equal to the sacrificed creature's power, then you
* gain life equal to its toughness.
*/
@Test
public void testSacrificeCostAndLKI() {
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
addCard(Zone.HAND, playerA, "Momentous Fall");
// Geralf's Messenger enters the battlefield tapped.
// When Geralf's Messenger enters the battlefield, target opponent loses 2 life.
// Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)
addCard(Zone.BATTLEFIELD, playerA, "Geralf's Messenger", 1);
// Creatures you control get +1/+1.
addCard(Zone.BATTLEFIELD, playerA, "Glorious Anthem", 1);
// As an additional cost to cast Momentous Fall, sacrifice a creature.
// You draw cards equal to the sacrificed creature's power, then you gain life equal to its toughness.
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Momentous Fall");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertPermanentCount(playerA, "Geralf's Messenger", 1);
assertCounterCount("Geralf's Messenger", CounterType.P1P1, 1);
assertPowerToughness(playerA, "Geralf's Messenger", 5, 4); // +1/+1 counter + Anthem effect
assertHandCount(playerA, 4); // +4 cards
assertLife(playerA, 23); // +3 life
}
@Test
public void testSacrificeCostForProGreen() {
addCard(Zone.BATTLEFIELD, playerA, "Forest", 4);
addCard(Zone.HAND, playerA, "Momentous Fall");
addCard(Zone.BATTLEFIELD, playerA, "Mirran Crusader");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Momentous Fall");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertPermanentCount(playerA, "Mirran Crusader", 0);
assertHandCount(playerA, 2); // +2 cards
assertLife(playerA, 22); // +2 life
}
}