Test and fix for UnblockableAbility not working

This commit is contained in:
magenoxx 2012-06-14 20:18:38 +04:00
parent be06cb7790
commit d6f1e8be48
2 changed files with 69 additions and 41 deletions

View file

@ -2,6 +2,7 @@ package org.mage.test.combat;
import junit.framework.Assert; import junit.framework.Assert;
import mage.Constants; import mage.Constants;
import mage.counters.CounterType;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import org.junit.Test; import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase; import org.mage.test.serverside.base.CardTestPlayerBase;
@ -203,4 +204,26 @@ public class AttackBlockRestrictionsTest extends CardTestPlayerBase {
assertLife(playerA, 17); assertLife(playerA, 17);
assertLife(playerB, 20); assertLife(playerB, 20);
} }
/**
* Tests Unblockable
*/
@Test
public void testUnblockable() {
addCard(Constants.Zone.BATTLEFIELD, playerB, "Blighted Agent");
addCard(Constants.Zone.BATTLEFIELD, playerA, "Blighted Agent");
addCard(Constants.Zone.BATTLEFIELD, playerA, "Llanowar Elves");
addCard(Constants.Zone.BATTLEFIELD, playerA, "Birds of Paradise");
attack(2, playerB, "Blighted Agent");
block(2, playerA, "Blighted Agent", "Blighted Agent");
block(2, playerA, "Llanowar Elves", "Blighted Agent");
block(2, playerA, "Birds of Paradise", "Blighted Agent");
setStopAt(2, Constants.PhaseStep.END_TURN);
execute();
assertCounterCount(playerA, CounterType.POISON, 1);
}
} }

View file

@ -28,7 +28,6 @@
package mage.abilities.keyword; package mage.abilities.keyword;
import java.io.ObjectStreamException;
import mage.Constants.Duration; import mage.Constants.Duration;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.EvasionAbility; import mage.abilities.EvasionAbility;
@ -36,8 +35,9 @@ import mage.abilities.effects.RestrictionEffect;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import java.io.ObjectStreamException;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public class UnblockableAbility extends EvasionAbility<UnblockableAbility> { public class UnblockableAbility extends EvasionAbility<UnblockableAbility> {
@ -71,16 +71,21 @@ public class UnblockableAbility extends EvasionAbility<UnblockableAbility> {
class UnblockableEffect extends RestrictionEffect<UnblockableEffect> { class UnblockableEffect extends RestrictionEffect<UnblockableEffect> {
public UnblockableEffect() { public UnblockableEffect() {
super(Duration.WhileOnBattlefield); super(Duration.EndOfGame);
} }
public UnblockableEffect(final UnblockableEffect effect) { public UnblockableEffect(final UnblockableEffect effect) {
super(effect); super(effect);
} }
@Override
public void newId() {
// do nothing
}
@Override @Override
public boolean applies(Permanent permanent, Ability source, Game game) { public boolean applies(Permanent permanent, Ability source, Game game) {
if (permanent.getId().equals(source.getSourceId())) { if (permanent.getAbilities().containsKey(UnblockableAbility.getInstance().getId())) {
return true; return true;
} }
return false; return false;