Failing test and fix for additional costs not displayed in tooltips

This commit is contained in:
magenoxx 2012-08-23 13:41:40 +04:00
parent f77284d424
commit 3d1bb8e1ab
2 changed files with 49 additions and 5 deletions

View file

@ -0,0 +1,34 @@
package org.mage.test.cards.rules;
import mage.Constants;
import mage.cards.Card;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author magenoxx_at_googlemail.com
*/
public class AdditionalCostRuleTest extends CardTestPlayerBase {
@Test
public void testAdditionalCostDisplayed() {
addCard(Constants.Zone.GRAVEYARD, playerA, "Silvergill Adept");
setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT);
execute();
Card firewildBorderpost = playerA.getGraveyard().getCards(currentGame).iterator().next();
boolean found = false;
for (String rule : firewildBorderpost.getRules()) {
if (rule.startsWith("As an additional cost to cast")) {
found = true;
break;
}
}
Assert.assertTrue("Couldn't find rule text for additional cost on a card: " + firewildBorderpost.getName(), found);
}
}

View file

@ -31,6 +31,7 @@ package mage.abilities;
import mage.Constants.Zone;
import mage.abilities.common.ZoneChangeTriggeredAbility;
import mage.abilities.costs.AlternativeCost;
import mage.abilities.costs.Cost;
import mage.abilities.keyword.KickerAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.abilities.mana.ManaAbility;
@ -73,12 +74,21 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab
for (T ability:this) {
if (!(ability instanceof SpellAbility || ability instanceof PlayLandAbility))
rules.add(ability.getRule());
if (ability instanceof SpellAbility && ability.getAlternativeCosts().size() > 0) {
StringBuilder sbRule = new StringBuilder();
for (AlternativeCost cost: ability.getAlternativeCosts()) {
sbRule.append(cost.getName()).append(".\n");
if (ability instanceof SpellAbility) {
if (ability.getAlternativeCosts().size() > 0) {
StringBuilder sbRule = new StringBuilder();
for (AlternativeCost cost: ability.getAlternativeCosts()) {
sbRule.append(cost.getName()).append(".\n");
}
rules.add(sbRule.toString());
}
if (ability.getCosts().size() > 0) {
StringBuilder sbRule = new StringBuilder();
for (Cost cost: ability.getCosts()) {
sbRule.append(cost.getText()).append(".\n");
}
rules.add(sbRule.toString());
}
rules.add(sbRule.toString());
}
}