mirror of
https://github.com/magefree/mage.git
synced 2026-01-18 01:10:00 -08:00
add some m21 tests
This commit is contained in:
parent
072e3e40c7
commit
452ba945e0
14 changed files with 370 additions and 26 deletions
|
|
@ -0,0 +1,4 @@
|
|||
package org.mage.test.cards.single.iko;
|
||||
|
||||
public class BlitzLeechTest {
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class ContainmentPriestTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void replacementEffect(){
|
||||
// If a nontoken creature would enter the battlefield and it wasn't cast, exile it instead.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Containment Priest");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
|
||||
addCard(Zone.GRAVEYARD, playerA, "Grizzly Bears");
|
||||
addCard(Zone.GRAVEYARD, playerB, "Scryb Sprites");
|
||||
|
||||
// Each player puts a creature card from their graveyard onto the battlefield.
|
||||
addCard(Zone.HAND, playerA, "Exhume");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Exhume");
|
||||
addTarget(playerA, "Grizzly Bears");
|
||||
addTarget(playerB, "Scryb Sprites");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertExileCount(playerA, "Grizzly Bears", 1);
|
||||
assertExileCount(playerB, "Scryb Sprites", 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class CrashThroughTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void crashThrough() {
|
||||
// Creatures you control gain trample until end of turn.
|
||||
// Draw a card.
|
||||
addCard(Zone.HAND, playerA, "Crash Through");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears");
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Scryb Sprites");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Crash Through");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
assertAbility(playerA, "Grizzly Bears", TrampleAbility.getInstance(), true);
|
||||
assertAbility(playerB, "Scryb Sprites", TrampleAbility.getInstance(), false);
|
||||
assertHandCount(playerA, 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DaybreakChargerTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void etbTrigger(){
|
||||
// When Daybreak Charger enters the battlefield, target creature gets +2/+0 until end of turn.
|
||||
addCard(Zone.HAND, playerA, "Daybreak Charger");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Daybreak Charger");
|
||||
addTarget(playerA, "Daybreak Charger");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertPowerToughness(playerA, "Daybreak Charger", 5, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DeathbloomThallidTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void diesTrigger() {
|
||||
// When Deathbloom Thallid dies, create a 1/1 green Saproling creature token.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Deathbloom Thallid");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
|
||||
addCard(Zone.HAND, playerA, "Shock");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Shock", "Deathbloom Thallid");
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
setStrictChooseMode(true);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertPermanentCount(playerA, "Saproling", 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DemonicEmbraceTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void playFromGraveyard() {
|
||||
// Enchanted creature gets +3/+1, has flying, and is a Demon in addition to its other types.
|
||||
// You may cast Demonic Embrace from your graveyard by paying 3 life and discarding a card in addition to paying its other costs.
|
||||
addCard(Zone.GRAVEYARD, playerA, "Demonic Embrace");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 3);
|
||||
addCard(Zone.HAND, playerA, "Mountain");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Demonic Embrace", "Grizzly Bears");
|
||||
//addTarget(playerA, );
|
||||
addTarget(playerA, "Mountain");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DireFleetWarmongerTest extends CardTestPlayerBase {
|
||||
|
||||
|
||||
@Test
|
||||
public void sacCreatureToBoost() {
|
||||
// At the beginning of combat on your turn, you may sacrifice another creature.
|
||||
// If you do, Dire Fleet Warmonger gets +2/+2 and gains trample until end of turn.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Dire Fleet Warmonger");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears");
|
||||
|
||||
setChoice(playerA, "Yes");
|
||||
addTarget(playerA, "Grizzly Bears");
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
setStrictChooseMode(true);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertPowerToughness(playerA, "Dire Fleet Warmonger", 5, 5);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DiscontinuityTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void testCostReduction(){
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 2);
|
||||
|
||||
// As long as it's your turn, this spell costs {2}{U}{U} less to cast.
|
||||
addCard(Zone.HAND, playerA, "Discontinuity");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Discontinuity");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
assertTappedCount("Island", true, 2);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DoubleVisionTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void testFirstInstant(){
|
||||
// Whenever you cast your first instant or sorcery spell each turn, copy that spell.
|
||||
// You may choose new targets for the copy.
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Double Vision");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain");
|
||||
addCard(Zone.HAND, playerA, "Shock");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Shock", playerB);
|
||||
setChoice(playerA, "Yes");
|
||||
addTarget(playerA, playerB);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
setStrictChooseMode(true);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertLife(playerB, 16);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class DubTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void testBoostAndAbilities(){
|
||||
|
||||
// Enchanted creature gets +2/+2, has first strike, and is a Knight in addition to its other types.
|
||||
addCard(Zone.HAND, playerA, "Dub");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 3);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Scryb Sprites");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Dub", "Scryb Sprites");
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
setStrictChooseMode(true);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertAbility(playerA, "Scryb Sprites", FirstStrikeAbility.getInstance(), true);
|
||||
assertAbility(playerA, "Scryb Sprites", FlyingAbility.getInstance(), true);
|
||||
assertPowerToughness(playerA, "Scryb Sprites", 3, 3);
|
||||
assertSubtype("Scryb Sprites", SubType.KNIGHT);
|
||||
assertSubtype("Scryb Sprites", SubType.FAERIE);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class ElderGargarothTest extends CardTestPlayerBase {
|
||||
|
||||
private static final String gargaroth = "Elder Gargaroth";
|
||||
|
||||
@Test
|
||||
public void createToken(){
|
||||
// Whenever Elder Gargaroth attacks or blocks, choose one —
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, gargaroth);
|
||||
|
||||
attack(3, playerA, gargaroth, playerB);
|
||||
// • Create a 3/3 green Beast creature token.
|
||||
setModeChoice(playerA, "1");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
assertPermanentCount(playerA, "Beast", 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void gainLife(){
|
||||
// Whenever Elder Gargaroth attacks or blocks, choose one —
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, gargaroth);
|
||||
|
||||
attack(3, playerA, gargaroth, playerB);
|
||||
// • You gain 3 life.
|
||||
setModeChoice(playerA, "2");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
assertLife(playerA, 23);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void drawCard(){
|
||||
// Whenever Elder Gargaroth attacks or blocks, choose one —
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, gargaroth);
|
||||
|
||||
attack(3, playerA, gargaroth, playerB);
|
||||
|
||||
// • Draw a card.
|
||||
setModeChoice(playerA, "3");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertHandCount(playerA, 2);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package org.mage.test.cards.single.m21;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class EliminateTest extends CardTestPlayerBase {
|
||||
|
||||
@Test
|
||||
public void destroyCreature(){
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Ancient Crab");
|
||||
addCard(Zone.HAND, playerA, "Eliminate");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Eliminate", "Ancient Crab");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
assertGraveyardCount(playerB, "Ancient Crab", 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void destroyPlaneswalker(){
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Basri Ket");
|
||||
addCard(Zone.HAND, playerA, "Eliminate");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Eliminate", "Basri Ket");
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
assertGraveyardCount(playerB, "Basri Ket", 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1115,6 +1115,20 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert whether a permanent is a specified subtype
|
||||
*
|
||||
* @param cardName Name of the permanent that should be checked.
|
||||
* @param subType a subtype to test for
|
||||
*/
|
||||
public void assertSubtype(String cardName, SubType subType) throws AssertionError {
|
||||
//Assert.assertNotEquals("", cardName);
|
||||
Permanent found = getPermanent(cardName);
|
||||
if (subType != null) {
|
||||
Assert.assertTrue("(Battlefield) card sub-type equal (" + cardName + ':' + subType.getDescription() + ')', found.getSubtype(currentGame).contains(subType));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert permanent color
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue