Merge pull request #3408 from ingmargoudt/unittests

unittests for akh
This commit is contained in:
ingmargoudt 2017-05-21 17:06:15 +02:00 committed by GitHub
commit 0bbbee1f4f
3 changed files with 290 additions and 15 deletions

View file

@ -1,5 +1,9 @@
package org.mage.test.cards.abilities.keywords; package org.mage.test.cards.abilities.keywords;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.MenaceAbility;
import mage.constants.PhaseStep; import mage.constants.PhaseStep;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
@ -7,11 +11,153 @@ import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase; import org.mage.test.serverside.base.CardTestPlayerBase;
/** /**
*
* @author escplan9 * @author escplan9
*/ */
public class ExertTest extends CardTestPlayerBase { public class ExertTest extends CardTestPlayerBase {
@Test
public void exertGustWalker() {
String gWalker = "Gust Walker";
addCard(Zone.BATTLEFIELD, playerA, gWalker);
attack(1, playerA, gWalker);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertAbility(playerA, gWalker, FlyingAbility.getInstance(), true);
assertPowerToughness(playerA, gWalker, 3, 3);
}
@Test
public void exertHoodedBrawler() {
String brawler = "Hooded Brawler";
addCard(Zone.BATTLEFIELD, playerA, brawler);
attack(1, playerA, brawler);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPowerToughness(playerA, brawler, 5, 4);
}
@Test
public void exertBitterbladeWarrior() {
String warrior = "Bitterblade Warrior";
addCard(Zone.BATTLEFIELD, playerA, warrior);
attack(1, playerA, warrior);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertAbility(playerA, warrior, DeathtouchAbility.getInstance(), true);
assertPowerToughness(playerA, warrior, 3, 2);
}
@Test
public void exertRhetCropSpearmaster() {
String spearmaster = "Rhet-Crop Spearmaster";
addCard(Zone.BATTLEFIELD, playerA, spearmaster);
attack(1, playerA, spearmaster);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertAbility(playerA, spearmaster, FirstStrikeAbility.getInstance(), true);
assertPowerToughness(playerA, spearmaster, 4, 1);
}
@Test
public void exertTahCropElite(){
String elite = "Tah-Crop Elite";
addCard(Zone.BATTLEFIELD, playerA, elite);
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears");
addCard(Zone.BATTLEFIELD, playerB, "Grizzly Bears");
attack(1, playerA, elite);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPowerToughness(playerA, "Grizzly Bears", 3, 3);
assertPowerToughness(playerA, elite, 3, 3);
assertPowerToughness(playerB, "Grizzly Bears", 2, 2);
}
@Test
public void exertEmberhornMinotaur(){
String minotaur = "Emberhorn Minotaur";
addCard(Zone.BATTLEFIELD, playerA, minotaur);
attack(1, playerA, minotaur);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertAbility(playerA, minotaur, new MenaceAbility(), true);
assertPowerToughness(playerA, minotaur, 5, 4);
}
@Test
public void exertNefcropEntangler(){
String entangler = "Nef-Crop Entangler";
addCard(Zone.BATTLEFIELD, playerA, entangler);
attack(1, playerA, entangler);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPowerToughness(playerA, entangler, 3, 3);
}
@Test
public void exertTrueheartTwins(){
String twins = "Trueheart Twins";
addCard(Zone.BATTLEFIELD, playerA, twins);
addCard(Zone.BATTLEFIELD, playerA, "Hyena Pack");
addCard(Zone.BATTLEFIELD, playerB, "Dune Beetle");
attack(1, playerA, twins);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPowerToughness(playerA, twins, 5, 4);
assertPowerToughness(playerA, "Hyena Pack", 4, 4);
assertPowerToughness(playerB, "Dune Beetle", 1, 4);
}
@Test
public void exertOtherCreatureTrueheartTwins(){
String twins = "Trueheart Twins";
String gWalker = "Gust Walker";
addCard(Zone.BATTLEFIELD, playerA, gWalker);
addCard(Zone.BATTLEFIELD, playerA, twins);
attack(1, playerA, gWalker);
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPowerToughness(playerA, twins, 5, 4);
assertPowerToughness(playerA, gWalker, 4, 3);
}
@Test @Test
public void exertUsedDoesNotUntapNextUntapStep() { public void exertUsedDoesNotUntapNextUntapStep() {
@ -21,19 +167,19 @@ public class ExertTest extends CardTestPlayerBase {
You may exert Glory-Bound Intiate as it attacks. When you do, it gets +1/+3 and gains lifelink until end of turn. You may exert Glory-Bound Intiate as it attacks. When you do, it gets +1/+3 and gains lifelink until end of turn.
*/ */
String gbInitiate = "Glory-Bound Initiate"; String gbInitiate = "Glory-Bound Initiate";
addCard(Zone.BATTLEFIELD, playerA, gbInitiate); addCard(Zone.BATTLEFIELD, playerA, gbInitiate);
attack(1, playerA, gbInitiate); attack(1, playerA, gbInitiate);
setChoice(playerA, "Yes"); setChoice(playerA, "Yes");
setStopAt(3, PhaseStep.PRECOMBAT_MAIN); setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
execute(); execute();
assertTapped(gbInitiate, true); // does not untap due to exert assertTapped(gbInitiate, true); // does not untap due to exert
assertLife(playerA, 24); // exerted 4/4 lifelink assertLife(playerA, 24); // exerted 4/4 lifelink
assertLife(playerB, 16); assertLife(playerB, 16);
} }
@Test @Test
public void exertNotUsedRegularAttack() { public void exertNotUsedRegularAttack() {
@ -43,19 +189,19 @@ public class ExertTest extends CardTestPlayerBase {
You may exert Glory-Bound Intiate as it attacks. When you do, it gets +1/+3 and gains lifelink until end of turn. You may exert Glory-Bound Intiate as it attacks. When you do, it gets +1/+3 and gains lifelink until end of turn.
*/ */
String gbInitiate = "Glory-Bound Initiate"; String gbInitiate = "Glory-Bound Initiate";
addCard(Zone.BATTLEFIELD, playerA, gbInitiate); addCard(Zone.BATTLEFIELD, playerA, gbInitiate);
attack(1, playerA, gbInitiate); attack(1, playerA, gbInitiate);
setChoice(playerA, "No"); setChoice(playerA, "No");
setStopAt(3, PhaseStep.PRECOMBAT_MAIN); setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
execute(); execute();
assertTapped(gbInitiate, false); // untaps as normal assertTapped(gbInitiate, false); // untaps as normal
assertLife(playerA, 20); assertLife(playerA, 20);
assertLife(playerB, 17); assertLife(playerB, 17);
} }
/* /*
"If you gain control of another player's creature until end of turn and exert it, it will untap during that player's untap step." "If you gain control of another player's creature until end of turn and exert it, it will untap during that player's untap step."
See issue #3183 See issue #3183
@ -70,20 +216,20 @@ public class ExertTest extends CardTestPlayerBase {
*/ */
String gbInitiate = "Glory-Bound Initiate"; String gbInitiate = "Glory-Bound Initiate";
String aTreason = "Act of Treason"; // {2}{R} sorcery gain control target creature, untap, gains haste until end of turn String aTreason = "Act of Treason"; // {2}{R} sorcery gain control target creature, untap, gains haste until end of turn
addCard(Zone.HAND, playerA, gbInitiate); addCard(Zone.HAND, playerA, gbInitiate);
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
addCard(Zone.HAND, playerB, aTreason); addCard(Zone.HAND, playerB, aTreason);
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 3); addCard(Zone.BATTLEFIELD, playerB, "Mountain", 3);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, gbInitiate); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, gbInitiate);
castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, aTreason, gbInitiate); castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, aTreason, gbInitiate);
attack(2, playerB, gbInitiate); attack(2, playerB, gbInitiate);
setChoice(playerB, "Yes"); setChoice(playerB, "Yes");
setStopAt(3, PhaseStep.PRECOMBAT_MAIN); setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
execute(); execute();
assertGraveyardCount(playerB, aTreason, 1); assertGraveyardCount(playerB, aTreason, 1);
assertLife(playerA, 16); assertLife(playerA, 16);
assertLife(playerB, 24); assertLife(playerB, 24);
@ -119,7 +265,7 @@ public class ExertTest extends CardTestPlayerBase {
assertTapped(cCelebrant, true); assertTapped(cCelebrant, true);
assertTapped(memnite, true); assertTapped(memnite, true);
} }
/* /*
* Reported bug: Combat Celebrant able to exert again despite being exerted already if Always Watching is in play. (Or presumably any Vigilance granting effect) * Reported bug: Combat Celebrant able to exert again despite being exerted already if Always Watching is in play. (Or presumably any Vigilance granting effect)
*/ */
@ -160,7 +306,7 @@ public class ExertTest extends CardTestPlayerBase {
assertTapped(memnite, false); assertTapped(memnite, false);
assertLife(playerB, 6); // 5 + 2 + 5 + 2 (Celebrant twice, Memnite twice with +1/+1 on both) assertLife(playerB, 6); // 5 + 2 + 5 + 2 (Celebrant twice, Memnite twice with +1/+1 on both)
} }
/* /*
* Reported bug: Combat Celebrant able to attack again despite being exerted already if Arlinn Kord granted him vigilance. * Reported bug: Combat Celebrant able to attack again despite being exerted already if Arlinn Kord granted him vigilance.
*/ */

View file

@ -0,0 +1,87 @@
package org.mage.test.cards.single.akh;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
public class AnnointedProcessionTest extends CardTestPlayerBase {
public final String anointedProcession = "Anointed Procession";
@Test
public void createDoubleTokens() {
addCard(Zone.BATTLEFIELD, playerA, anointedProcession, 1);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 10);
addCard(Zone.BATTLEFIELD, playerA, "Anointer Priest", 1);
addCard(Zone.HAND, playerA, "Liliana's Mastery");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Liliana's Mastery");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Zombie", 4);
assertLife(playerA, 24);
}
@Test
public void createTwoDoubleTokens() {
addCard(Zone.BATTLEFIELD, playerA, anointedProcession, 2);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 10);
addCard(Zone.BATTLEFIELD, playerA, "Anointer Priest", 1);
addCard(Zone.HAND, playerA, "Liliana's Mastery");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Liliana's Mastery");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Zombie", 8);
assertLife(playerA, 28);
}
@Test
public void notTriggerWhenNotOwned(){
addCard(Zone.BATTLEFIELD, playerB, anointedProcession, 1);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 10);
addCard(Zone.BATTLEFIELD, playerB, "Anointer Priest", 1);
addCard(Zone.HAND, playerA, "Liliana's Mastery");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Liliana's Mastery");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Zombie", 2);
assertLife(playerA, 20);
}
@Test
public void createDoubleTokenOnEmbalm() {
addCard(Zone.GRAVEYARD, playerA, "Sacred Cat", 1);
addCard(Zone.BATTLEFIELD, playerA, "Anointed Procession", 1);
addCard(Zone.BATTLEFIELD, playerA, "Plains", 5);
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Embalm");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Sacred Cat", 2);
}
@Test
public void cycleStirTheSands(){
addCard(Zone.BATTLEFIELD, playerA, anointedProcession, 1);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 10);
addCard(Zone.HAND, playerA, "Stir the Sands");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Stir the Sands");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
assertPermanentCount(playerA, "Zombie", 6);
}
}

View file

@ -0,0 +1,42 @@
package org.mage.test.cards.single.akh;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
public class ThroneOfTheGodPharaohTest extends CardTestPlayerBase {
String throne = "Throne of the God-Pharaoh";
@Test
public void testMyTurn() {
addCard(Zone.BATTLEFIELD, playerA, throne);
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears");
addCard(Zone.BATTLEFIELD, playerB, "Grizzly Bears");
attack(1, playerA, "Grizzly Bears", playerB);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertLife(playerB, 17);
assertLife(playerA, 20);
}
@Test
public void testOpponentsTurn() {
addCard(Zone.BATTLEFIELD, playerA, throne);
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears");
addCard(Zone.BATTLEFIELD, playerB, "Grizzly Bears");
attack(1, playerA, "Grizzly Bears", playerB);
setStopAt(2, PhaseStep.END_TURN);
execute();
assertLife(playerB, 17);
assertLife(playerA, 20);
}
}