mirror of
https://github.com/correl/mage.git
synced 2024-11-28 19:19:55 +00:00
[MH2] added test for Garth One-Eye
This commit is contained in:
parent
fd495299db
commit
c8154bf018
2 changed files with 165 additions and 7 deletions
|
@ -57,13 +57,19 @@ class GarthOneEyeEffect extends OneShotEffect {
|
|||
private static final List<String> names = Arrays.asList(
|
||||
"Disenchant", "Braingeyser", "Terror", "Shivan Dragon", "Regrowth", "Black Lotus"
|
||||
);
|
||||
private static final Map<String, Card> cardMap
|
||||
= CardRepository
|
||||
.instance
|
||||
.findCards(new CardCriteria().setCodes("LEA"))
|
||||
.stream()
|
||||
.filter(cardInfo -> names.contains(cardInfo.getName()))
|
||||
.collect(Collectors.toMap(CardInfo::getName, CardInfo::getCard));
|
||||
private static final Map<String, Card> cardMap = new HashMap<>();
|
||||
|
||||
private static final void initMap() {
|
||||
if (!cardMap.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
cardMap.putAll(CardRepository
|
||||
.instance
|
||||
.findCards(new CardCriteria().setCodes("LEA"))
|
||||
.stream()
|
||||
.filter(cardInfo -> names.contains(cardInfo.getName()))
|
||||
.collect(Collectors.toMap(CardInfo::getName, CardInfo::getCard)));
|
||||
}
|
||||
|
||||
GarthOneEyeEffect() {
|
||||
super(Outcome.Benefit);
|
||||
|
@ -83,6 +89,7 @@ class GarthOneEyeEffect extends OneShotEffect {
|
|||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
initMap();
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player == null) {
|
||||
return false;
|
||||
|
|
|
@ -0,0 +1,151 @@
|
|||
package org.mage.test.cards.single.mh2;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.PermanentToken;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class GarthOneEyeTest extends CardTestPlayerBase {
|
||||
|
||||
private static final String garth = "Garth One-Eye";
|
||||
private static final String disenchant = "Disenchant";
|
||||
private static final String braingeyser = "Braingeyser";
|
||||
private static final String terror = "Terror";
|
||||
private static final String dragon = "Shivan Dragon";
|
||||
private static final String regrowth = "Regrowth";
|
||||
private static final String lotus = "Black Lotus";
|
||||
private static final String courser = "Nyxborn Courser";
|
||||
|
||||
@Test
|
||||
public void testDisenchant() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 2);
|
||||
addCard(Zone.BATTLEFIELD, playerA, garth);
|
||||
addCard(Zone.BATTLEFIELD, playerA, courser);
|
||||
|
||||
setChoice(playerA, disenchant);
|
||||
setChoice(playerA, "Yes");
|
||||
addTarget(playerA, courser);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Choose");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertTapped(garth, true);
|
||||
assertTapped("Plains", true);
|
||||
assertPermanentCount(playerA, courser, 0);
|
||||
assertGraveyardCount(playerA, disenchant, 0);
|
||||
assertGraveyardCount(playerA, courser, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBraingeyser() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 5);
|
||||
addCard(Zone.BATTLEFIELD, playerA, garth);
|
||||
|
||||
setChoice(playerA, braingeyser);
|
||||
setChoice(playerA, "Yes");
|
||||
setChoice(playerA, "X=3");
|
||||
addTarget(playerA, playerA);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Choose");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertTapped(garth, true);
|
||||
assertTapped("Island", true);
|
||||
assertGraveyardCount(playerA, braingeyser, 0);
|
||||
assertHandCount(playerA, 3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTerror() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
|
||||
addCard(Zone.BATTLEFIELD, playerA, garth);
|
||||
addCard(Zone.BATTLEFIELD, playerA, courser);
|
||||
|
||||
setChoice(playerA, terror);
|
||||
setChoice(playerA, "Yes");
|
||||
addTarget(playerA, courser);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Choose");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertTapped(garth, true);
|
||||
assertTapped("Swamp", true);
|
||||
assertPermanentCount(playerA, courser, 0);
|
||||
assertGraveyardCount(playerA, terror, 0);
|
||||
assertGraveyardCount(playerA, courser, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShivanDragon() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 6);
|
||||
addCard(Zone.BATTLEFIELD, playerA, garth);
|
||||
|
||||
setChoice(playerA, dragon);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Choose");
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertTapped(garth, true);
|
||||
assertTapped("Mountain", true);
|
||||
Permanent permanent = getPermanent(dragon);
|
||||
Assert.assertNotNull(dragon + " should be on the battlefield", permanent);
|
||||
Assert.assertTrue(dragon + " should be a token", permanent instanceof PermanentToken);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegrowth() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
|
||||
addCard(Zone.BATTLEFIELD, playerA, garth);
|
||||
addCard(Zone.GRAVEYARD, playerA, courser);
|
||||
|
||||
setChoice(playerA, regrowth);
|
||||
setChoice(playerA, "Yes");
|
||||
addTarget(playerA, courser);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Choose");
|
||||
|
||||
setStrictChooseMode(true);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertTapped(garth, true);
|
||||
assertTapped("Forest", true);
|
||||
assertHandCount(playerA, courser, 1);
|
||||
assertGraveyardCount(playerA, regrowth, 0);
|
||||
assertGraveyardCount(playerA, courser, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBlackLotus() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, garth);
|
||||
|
||||
setChoice(playerA, lotus);
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Choose");
|
||||
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
assertAllCommandsUsed();
|
||||
|
||||
assertTapped(garth, true);
|
||||
Permanent permanent = getPermanent(lotus);
|
||||
Assert.assertNotNull(lotus + " should be on the battlefield", permanent);
|
||||
Assert.assertTrue(lotus + " should be a token", permanent instanceof PermanentToken);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue