mirror of
https://github.com/correl/mage.git
synced 2025-01-12 11:08:01 +00:00
* Fixed failing M21 Tests (related to 51af4e7e1d
).
This commit is contained in:
parent
0385d9a653
commit
57de10d609
5 changed files with 30 additions and 17 deletions
|
@ -26,7 +26,7 @@ public final class ChandrasMagmutt extends CardImpl {
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {T}: Chandra's Magmutt deals 1 damage to target player or planeswalker.
|
// {T}: Chandra's Magmutt deals 1 damage to target player or planeswalker.<
|
||||||
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
|
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
|
||||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -29,7 +29,10 @@ public final class GoblinBalloonBrigade extends CardImpl {
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
// {R}: Goblin Balloon Brigade gains flying until end of turn.
|
||||||
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
|
new GainAbilitySourceEffect(FlyingAbility.getInstance(),
|
||||||
|
Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public GoblinBalloonBrigade(final GoblinBalloonBrigade card) {
|
public GoblinBalloonBrigade(final GoblinBalloonBrigade card) {
|
||||||
|
|
|
@ -10,9 +10,10 @@ public class ChandrasMagmuttTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pingPlayer(){
|
public void pingPlayer(){
|
||||||
|
// {T}: Chandra's Magmutt deals 1 damage to target player or planeswalker.<
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Chandra's Magmutt");
|
addCard(Zone.BATTLEFIELD, playerA, "Chandra's Magmutt");
|
||||||
|
|
||||||
activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Chandra's Magmutt", playerB);
|
activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: {source} deals", playerB);
|
||||||
|
|
||||||
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
setStrictChooseMode(true);
|
setStrictChooseMode(true);
|
||||||
|
@ -24,10 +25,14 @@ public class ChandrasMagmuttTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void pingPlanesWalker(){
|
public void pingPlanesWalker(){
|
||||||
|
// {T}: Chandra's Magmutt deals 1 damage to target player or planeswalker.<
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Chandra's Magmutt");
|
addCard(Zone.BATTLEFIELD, playerA, "Chandra's Magmutt");
|
||||||
|
// +1: Put a +1/+1 counter on up to one target creature. It gains indestructible until end of turn.
|
||||||
|
// −2: Whenever one or more nontoken creatures attack this turn, create that many 1/1 white Soldier creature tokens that are tapped and attacking.
|
||||||
|
// −6: You get an emblem with "At the beginning of combat on your turn, create a 1/1 white Soldier creature token, then put a +1/+1 counter on each creature you control."
|
||||||
addCard(Zone.BATTLEFIELD, playerB, "Basri Ket");
|
addCard(Zone.BATTLEFIELD, playerB, "Basri Ket");
|
||||||
|
|
||||||
activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Chandra's Magmutt", "Basri Ket");
|
activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: {source} deals", "Basri Ket");
|
||||||
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
setStopAt(3, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
setStrictChooseMode(true);
|
setStrictChooseMode(true);
|
||||||
execute();
|
execute();
|
||||||
|
|
|
@ -26,9 +26,12 @@ public class ConspicuousSnoopTest extends CardTestPlayerBase {
|
||||||
public void castGoblinSpellsFromLibrary(){
|
public void castGoblinSpellsFromLibrary(){
|
||||||
// You may cast Goblin spells from the top of your library.
|
// You may cast Goblin spells from the top of your library.
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Conspicuous Snoop");
|
addCard(Zone.BATTLEFIELD, playerA, "Conspicuous Snoop");
|
||||||
|
|
||||||
addCard(Zone.LIBRARY, playerA, "Goblin Lackey");
|
addCard(Zone.LIBRARY, playerA, "Goblin Lackey");
|
||||||
|
skipInitShuffling();
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
|
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
|
||||||
|
|
||||||
|
// Whenever Goblin Lackey deals damage to a player, you may put a Goblin permanent card from your hand onto the battlefield.
|
||||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Goblin Lackey");
|
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Goblin Lackey");
|
||||||
|
|
||||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||||
|
@ -41,18 +44,22 @@ public class ConspicuousSnoopTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void hasActivatedAbilities(){
|
public void hasActivatedAbilities(){
|
||||||
// As long as the top card of your library is a Goblin card,
|
|
||||||
// Conspicuous Snoop has all activated abilities of that card.
|
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Conspicuous Snoop");
|
|
||||||
addCard(Zone.LIBRARY, playerA, "Goblin Balloon Brigade");
|
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1);
|
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1);
|
||||||
|
// Play with the top card of your library revealed.
|
||||||
|
// You may cast Goblin spells from the top of your library.
|
||||||
|
// As long as the top card of your library is a Goblin card, Conspicuous Snoop has all activated abilities of that card.
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Conspicuous Snoop");
|
||||||
|
// {R}: Goblin Balloon Brigade gains flying until end of turn.
|
||||||
|
addCard(Zone.LIBRARY, playerA, "Goblin Balloon Brigade");
|
||||||
|
skipInitShuffling();
|
||||||
|
|
||||||
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
|
||||||
|
|
||||||
setStrictChooseMode(true);
|
setStrictChooseMode(true);
|
||||||
execute();
|
execute();
|
||||||
|
|
||||||
assertAllCommandsUsed();
|
assertAllCommandsUsed();
|
||||||
assertAbilityCount(playerA, "Conspicuous Snoop", ActivatedAbility.class,5);
|
assertAbilityCount(playerA, "Conspicuous Snoop", ActivatedAbility.class, 3); // (2 X casts + gains flying )
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -906,21 +906,19 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void assertAbilityCount(Player player, String cardName, Class<? extends Ability> ability, int amount) {
|
public void assertAbilityCount(Player player, String cardName, Class<? extends Ability> searchedAbility, int amount) {
|
||||||
int foundCount = 0;
|
|
||||||
Permanent found = null;
|
Permanent found = null;
|
||||||
for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents(player.getId())) {
|
for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents(player.getId())) {
|
||||||
if (isObjectHaveTargetNameOrAlias(player, permanent, cardName)) {
|
if (isObjectHaveTargetNameOrAlias(player, permanent, cardName)) {
|
||||||
found = permanent;
|
found = permanent;
|
||||||
foundCount++;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.assertNotNull("There is no such permanent under player's control, player=" + player.getName()
|
Assert.assertNotNull("There is no such permanent under player's control, player=" + player.getName()
|
||||||
+ ", cardName=" + cardName, found);
|
+ ", cardName=" + cardName, found);
|
||||||
|
|
||||||
Assert.assertEquals(amount, found.getAbilities(currentGame).stream()
|
Assert.assertEquals(amount, found.getAbilities(currentGame).stream()
|
||||||
.filter(a -> a.getClass().isAssignableFrom(ability)).collect(Collectors.toList()).size());
|
.filter(a -> searchedAbility.isAssignableFrom(a.getClass())).collect(Collectors.toList()).size());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue