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;
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.Zone;
import mage.counters.CounterType;
@ -7,11 +11,153 @@ import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author escplan9
*/
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
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.
*/
String gbInitiate = "Glory-Bound Initiate";
addCard(Zone.BATTLEFIELD, playerA, gbInitiate);
attack(1, playerA, gbInitiate);
setChoice(playerA, "Yes");
setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
execute();
assertTapped(gbInitiate, true); // does not untap due to exert
assertLife(playerA, 24); // exerted 4/4 lifelink
assertLife(playerB, 16);
}
@Test
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.
*/
String gbInitiate = "Glory-Bound Initiate";
addCard(Zone.BATTLEFIELD, playerA, gbInitiate);
attack(1, playerA, gbInitiate);
setChoice(playerA, "No");
setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
execute();
assertTapped(gbInitiate, false); // untaps as normal
assertLife(playerA, 20);
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."
See issue #3183
@ -70,20 +216,20 @@ public class ExertTest extends CardTestPlayerBase {
*/
String gbInitiate = "Glory-Bound Initiate";
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.BATTLEFIELD, playerA, "Plains", 2);
addCard(Zone.HAND, playerB, aTreason);
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 3);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, gbInitiate);
castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, aTreason, gbInitiate);
attack(2, playerB, gbInitiate);
setChoice(playerB, "Yes");
setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
execute();
assertGraveyardCount(playerB, aTreason, 1);
assertLife(playerA, 16);
assertLife(playerB, 24);
@ -119,7 +265,7 @@ public class ExertTest extends CardTestPlayerBase {
assertTapped(cCelebrant, 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)
*/
@ -160,7 +306,7 @@ public class ExertTest extends CardTestPlayerBase {
assertTapped(memnite, false);
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.
*/

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);
}
}