package org.mage.test.cards.abilities.oneshot.damage; import mage.constants.PhaseStep; import mage.constants.Zone; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; /** * @author ayrat */ public class LightningBoltTest extends CardTestPlayerBase { @Test public void testDamageOpponent() { addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, "Lightning Bolt"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", playerB); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertLife(playerA, 20); assertLife(playerB, 17); } @Test public void testDamageSelf() { addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, "Lightning Bolt"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", playerA); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertLife(playerA, 17); assertLife(playerB, 20); } @Test public void testDamageSmallCreature() { addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, "Lightning Bolt"); addCard(Zone.BATTLEFIELD, playerB, "Sejiri Merfolk"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "Sejiri Merfolk"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertPermanentCount(playerB, "Sejiri Merfolk", 0); } @Test public void testDamageBigCreature() { addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, "Lightning Bolt"); addCard(Zone.BATTLEFIELD, playerB, "Craw Wurm"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "Craw Wurm"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertPermanentCount(playerB, "Craw Wurm", 1); } @Test public void testDamageBigCreatureTwice() { addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, "Lightning Bolt"); addCard(Zone.HAND, playerA, "Lightning Bolt"); addCard(Zone.BATTLEFIELD, playerB, "Craw Wurm"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "Craw Wurm"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "Craw Wurm"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertPermanentCount(playerB, "Craw Wurm", 0); } @Test public void testDamageTarmagoyf() { addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, "Lightning Bolt"); addCard(Zone.GRAVEYARD, playerB, "Forest"); // Destroy target creature with defender. addCard(Zone.GRAVEYARD, playerB, "Clear a Path"); // Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. // (Artifact, creature, enchantment, instant, land, planeswalker, sorcery, and tribal are card types.) addCard(Zone.BATTLEFIELD, playerB, "Tarmogoyf"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", "Tarmogoyf"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); // Tarmogoyf is a 2/3 that then takes 3 damage, then becomes a 3/4 as the // Lightning Bolt is put into the graveyard and then state base actions are checked and Tarmogoyf survives. // First, the Tarmogoyf will receive the damage, then Lightning Bolt goes to the graveyard. // Then the active player would receive priority - which means, that right before that happens, state-based // effects are checked: the game sees a 3/4 creature will 3 damage on it, so nothing happens. // Then the active player receives priority. assertPermanentCount(playerB, "Tarmogoyf", 1); } }