Merge pull request #1634 from drmDev/master

Test for Breaker of Armies with Menace, reported bug.
This commit is contained in:
Derek M 2016-03-17 10:34:03 -04:00
commit 57a316cfc6
3 changed files with 45 additions and 8 deletions

View file

@ -29,6 +29,7 @@ package org.mage.test.cards.requirement;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Ignore;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
@ -178,9 +179,45 @@ public class BlockRequirementTest extends CardTestPlayerBase {
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
// Hill giant is still alive and Played B looses 3 lives
// Hill giant is still alive and Played B loses 3 lives
assertPermanentCount(playerA, "Hill Giant", 1);
assertLife(playerB, 17);
}
/**
* Reported bug:
* When Breaker of Armies is granted Menace and there is only 1 valid blocker, the game enters a state
* that cannot be continued. He must be blocked by all creatures that are able, however, with menace
* the only valid blocks would be by more than one creature, so the expected behavior is no blocks can be made.
*/
@Ignore
@Test
public void testBreakerOfArmiesWithMenace() {
// {8}
// All creatures able to block Breaker of Armies do so.
addCard(Zone.BATTLEFIELD, playerA, "Breaker of Armies", 1); // 10/8
// 3/3 Vanilla creature
addCard(Zone.BATTLEFIELD, playerB, "Hill Giant", 1);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 8);
// {2}{B} Enchanted creature gets +2/+1 and has menace.
addCard(Zone.HAND, playerA, "Untamed Hunger", 1);
castSpell(1,PhaseStep.PRECOMBAT_MAIN, playerA, "Untamed Hunger", "Breaker of Armies");
attack(1, playerA, "Breaker of Armies");
// not allowed due to Breaker of Armies having menace
block(1, playerB, "Hill Giant", "Breaker of Armies");
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
execute();
// Hill giant is still alive
assertPermanentCount(playerA, "Hill Giant", 1);
// Player B was unable to block, so goes down to 10 life
assertLife(playerB, 10);
}
}

View file

@ -38,21 +38,21 @@ import mage.game.Game;
public class MultipliedValue implements DynamicValue {
private final DynamicValue value;
private final int multiplier;
private final int multplier; // should be renamed to multiplier but don't want to break your stuff
public MultipliedValue(DynamicValue value, int multiplier) {
this.value = value.copy();
this.multiplier = multiplier;
this.multplier = multiplier;
}
MultipliedValue(final MultipliedValue dynamicValue) {
this.value = dynamicValue.value.copy();
this.multiplier = dynamicValue.multiplier;
this.multplier = dynamicValue.multplier;
}
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
return multiplier * value.calculate(game, sourceAbility, effect);
return multplier * value.calculate(game, sourceAbility, effect);
}
@Override
@ -63,10 +63,10 @@ public class MultipliedValue implements DynamicValue {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
if (multiplier == 2) {
if (multplier == 2) {
sb.append("twice ");
} else {
sb.append(multiplier).append(" * ");
sb.append(multplier).append(" * ");
}
return sb.append(value.toString()).toString();
}

View file

@ -52,7 +52,7 @@ public class BlockedCreatureCount implements DynamicValue {
public BlockedCreatureCount(String message, boolean beyondTheFirst) {
this.message = message;
this.beyondTheFirst = beyondTheFirst;
//this.beyondTheFirst = beyondTheFirst; this was never set in the original, so not setting here just in case ??
}
public BlockedCreatureCount(final BlockedCreatureCount dynamicValue) {