forked from External/mage
add test coverage
This commit is contained in:
parent
7129c02d86
commit
3fa021a295
4 changed files with 238 additions and 0 deletions
|
|
@ -0,0 +1,58 @@
|
|||
package org.mage.test.cards.single.acr;
|
||||
|
||||
import mage.constants.CardType;
|
||||
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 AdrestiaTest extends CardTestPlayerBase {
|
||||
|
||||
/*
|
||||
Adrestia
|
||||
{3}
|
||||
Legendary Artifact — Vehicle
|
||||
|
||||
Islandwalk (This creature can’t be blocked as long as defending player controls an Island.)
|
||||
|
||||
Whenever Adrestia attacks, if an Assassin crewed it this turn, draw a card. Adrestia becomes an Assassin in addition to its other types until end of turn.
|
||||
|
||||
Crew 1
|
||||
*/
|
||||
private static final String adrestia = "Adrestia";
|
||||
/*
|
||||
Nekrataal
|
||||
{2}{B}{B}
|
||||
Creature — Human Assassin
|
||||
|
||||
First strike
|
||||
|
||||
When this creature enters, destroy target nonartifact, nonblack creature. That creature can’t be regenerated.
|
||||
|
||||
2/1
|
||||
*/
|
||||
private static final String nekrataal = "Nekrataal";
|
||||
|
||||
@Test
|
||||
public void testAdrestia() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, adrestia);
|
||||
addCard(Zone.BATTLEFIELD, playerA, nekrataal);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Crew");
|
||||
setChoice(playerA, nekrataal);
|
||||
attack(1, playerA, adrestia);
|
||||
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
|
||||
assertSubtype(adrestia, SubType.VEHICLE);
|
||||
assertType(adrestia, CardType.CREATURE, true);
|
||||
assertType(adrestia, CardType.ARTIFACT, true);
|
||||
assertSubtype(adrestia, SubType.ASSASSIN);
|
||||
assertHandCount(playerA, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package org.mage.test.cards.single.big;
|
||||
|
||||
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 EsotericDuplicatorTest extends CardTestPlayerBase {
|
||||
|
||||
/*
|
||||
Esoteric Duplicator
|
||||
{2}{U}
|
||||
Artifact — Clue
|
||||
|
||||
Whenever you sacrifice this artifact or another artifact, you may pay {2}. If you do, at the beginning of the next end step, create a token that’s a copy of that artifact.
|
||||
|
||||
{2}, Sacrifice this artifact: Draw a card.
|
||||
*/
|
||||
private static final String esotericDuplicator = "Esoteric Duplicator";
|
||||
|
||||
@Test
|
||||
@Ignore("Sculpting steel doesn't retain copy on entering battlefield")
|
||||
public void testEsotericDuplicator() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, esotericDuplicator);
|
||||
addCard(Zone.HAND, playerA, "Sculpting Steel");
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 7);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sculpting Steel");
|
||||
setChoice(playerA, true);
|
||||
setChoice(playerA, esotericDuplicator);
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{2}, Sacrifice"); // Sacrifice duplicator
|
||||
setChoice(playerA, true); // duplicate
|
||||
|
||||
|
||||
setStopAt(2, PhaseStep.UPKEEP);
|
||||
execute();
|
||||
|
||||
assertPermanentCount(playerA, esotericDuplicator, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
package org.mage.test.cards.single.kld;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.target.common.TargetPermanentOrPlayer;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
|
||||
public class AnimationModuleTest extends CardTestPlayerBase {
|
||||
|
||||
/*
|
||||
Animation Module
|
||||
{1}
|
||||
Artifact
|
||||
|
||||
Whenever one or more +1/+1 counters are put on a permanent you control, you may pay {1}. If you do, create a 1/1 colorless Servo artifact creature token.
|
||||
|
||||
{3}, {T}: Choose a counter on target permanent or player. Give that permanent or player another counter of that kind.
|
||||
*/
|
||||
private static final String animationModule = "Animation Module";
|
||||
|
||||
@Test
|
||||
public void testGivePermanentCounter() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||
new ManaCostsImpl<>("")
|
||||
);
|
||||
ability.addTarget(new TargetPermanentOrPlayer(1));
|
||||
addCustomCardWithAbility("add counter", playerA, ability);
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, animationModule);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 10);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "put", animationModule);
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
setChoice(playerA, true); //pay to create servo
|
||||
|
||||
activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{3}, {T}: Choose a counter", animationModule);
|
||||
setChoice(playerA, true); //pay to create servo
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
assertCounterCount(playerA, animationModule, CounterType.P1P1, 2);
|
||||
assertPermanentCount(playerA, "Servo Token", 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGivePlayerCounter() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new AddCountersTargetEffect(CounterType.ENERGY.createInstance()),
|
||||
new ManaCostsImpl<>("")
|
||||
);
|
||||
ability.addTarget(new TargetPermanentOrPlayer(1));
|
||||
addCustomCardWithAbility("add counter", playerA, ability);
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, animationModule);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 10);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "put", playerA);
|
||||
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
|
||||
|
||||
activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{3}, {T}: Choose a counter", playerA);
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
assertCounterCount(playerA, CounterType.ENERGY, 2);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package org.mage.test.cards.single.leg;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class AlAbarasCarpetTest extends CardTestPlayerBase {
|
||||
|
||||
/*
|
||||
Al-abara's Carpet
|
||||
{5}
|
||||
Artifact
|
||||
|
||||
{5}, {T}: Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
|
||||
*/
|
||||
private static final String alabarasCarpet = "Al-abara's Carpet";
|
||||
|
||||
/*
|
||||
Storm Crow
|
||||
{1}{U}
|
||||
Creature — Bird
|
||||
|
||||
Flying (This creature can’t be blocked except by creatures with flying or reach.)
|
||||
|
||||
1/2
|
||||
*/
|
||||
private static final String stormCrow = "Storm Crow";
|
||||
/*
|
||||
Balduvian Bears
|
||||
{1}{G}
|
||||
Creature — Bear
|
||||
|
||||
2/2
|
||||
*/
|
||||
private static final String balduvianBears = "Balduvian Bears";
|
||||
@Test
|
||||
public void testCarpet() {
|
||||
setStrictChooseMode(true);
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, alabarasCarpet);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 5);
|
||||
addCard(Zone.BATTLEFIELD, playerB, balduvianBears);
|
||||
addCard(Zone.BATTLEFIELD, playerB, stormCrow);
|
||||
|
||||
attack(2, playerB, balduvianBears);
|
||||
attack(2, playerB, stormCrow);
|
||||
activateAbility(2, PhaseStep.DECLARE_ATTACKERS, playerA, "{5}, {T}");
|
||||
|
||||
setStopAt(2, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
assertLife(playerA, 20 - 1);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue