Roaming AT tests.

This commit is contained in:
marcins78@gmail.com
2011-12-01 19:24:51 +00:00
parent 8c14c91f91
commit 0677f2dab0
3 changed files with 203 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
package com.gempukku.lotro.cards.modifiers;
import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
@@ -10,7 +10,7 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
public class RoamingPenaltyModifier extends AbstractModifier {
private int _modifier;
public RoamingPenaltyModifier(PhysicalCard source, Filter affectFilter, int modifier) {
public RoamingPenaltyModifier(PhysicalCard source, Filterable affectFilter, int modifier) {
super(source, "Roaming penalty " + ((modifier > 0) ? ("+" + modifier) : modifier), affectFilter, ModifierEffect.TWILIGHT_COST_MODIFIER);
_modifier = modifier;
}

View File

@@ -7,12 +7,11 @@ import com.gempukku.lotro.logic.decisions.AwaitingDecision;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.DefaultLotroGame;
import com.gempukku.lotro.logic.vo.LotroDeck;
import static org.junit.Assert.fail;
import org.junit.BeforeClass;
import java.util.*;
import static org.junit.Assert.fail;
public abstract class AbstractAtTest {
protected static LotroCardBlueprintLibrary _library;
@@ -118,7 +117,7 @@ public abstract class AbstractAtTest {
lotroDeck.setRing("1_2");
// 7_330,7_336,8_117,7_342,7_345,7_350,8_120,10_120,7_360
lotroDeck.addSite("7_330");
lotroDeck.addSite("7_336");
lotroDeck.addSite("7_335");
lotroDeck.addSite("8_117");
lotroDeck.addSite("7_342");
lotroDeck.addSite("7_345");

View File

@@ -0,0 +1,199 @@
package com.gempukku.lotro.at;
import com.gempukku.lotro.cards.modifiers.MinionSiteNumberModifier;
import com.gempukku.lotro.cards.modifiers.RoamingPenaltyModifier;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Zone;
import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.AwaitingDecision;
import com.gempukku.lotro.logic.decisions.AwaitingDecisionType;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.modifiers.RemoveKeywordModifier;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class RoamingAtTest extends AbstractAtTest {
@Test
public void cantPlayRoamingMinionIfNotEnoughTwilight() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<String, Collection<String>>();
initializeSimplestGame(extraCards);
PhysicalCardImpl orcChieftain = new PhysicalCardImpl(100, "1_266", P2, _library.getLotroCardBlueprint("1_266"));
skipMulligans();
_game.getGameState().addCardToZone(_game, orcChieftain, Zone.HAND);
// End fellowship phase
playerDecided(P1, "");
assertEquals(2, _game.getGameState().getTwilightPool());
// Can't play the Orc Chieftain
AwaitingDecision shadowPhaseDecision = _userFeedback.getAwaitingDecision(P2);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, shadowPhaseDecision.getDecisionType());
validateContents(new String[0], (String[]) shadowPhaseDecision.getDecisionParameters().get("actionId"));
// Orc Chieftain still in hand
assertEquals(Zone.HAND, orcChieftain.getZone());
}
@Test
public void payingForRoamingMinionDefaultRoamingPenalty() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<String, Collection<String>>();
initializeSimplestGame(extraCards);
PhysicalCardImpl orcChieftain = new PhysicalCardImpl(100, "1_266", P2, _library.getLotroCardBlueprint("1_266"));
skipMulligans();
_game.getGameState().addCardToZone(_game, orcChieftain, Zone.HAND);
_game.getGameState().addTwilight(2);
// End fellowship phase
playerDecided(P1, "");
assertEquals(4, _game.getGameState().getTwilightPool());
// Can't play the Orc Chieftain
AwaitingDecision shadowPhaseDecision = _userFeedback.getAwaitingDecision(P2);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, shadowPhaseDecision.getDecisionType());
validateContents(new String[]{"" + orcChieftain.getCardId()}, (String[]) shadowPhaseDecision.getDecisionParameters().get("cardId"));
playerDecided(P2, getCardActionId(shadowPhaseDecision, "Play "));
// Orc Chieftain in play
assertEquals(Zone.SHADOW_CHARACTERS, orcChieftain.getZone());
assertEquals(0, _game.getGameState().getTwilightPool());
assertTrue(_game.getModifiersQuerying().hasKeyword(_game.getGameState(), orcChieftain, Keyword.ROAMING));
}
@Test
public void payingForRoamingMinionDiscountRoamingPenalty() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<String, Collection<String>>();
initializeSimplestGame(extraCards);
PhysicalCardImpl orcChieftain = new PhysicalCardImpl(100, "1_266", P2, _library.getLotroCardBlueprint("1_266"));
skipMulligans();
_game.getGameState().addCardToZone(_game, orcChieftain, Zone.HAND);
_game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new RoamingPenaltyModifier(orcChieftain, Culture.SAURON, -1));
_game.getGameState().addTwilight(2);
// End fellowship phase
playerDecided(P1, "");
assertEquals(4, _game.getGameState().getTwilightPool());
// Can't play the Orc Chieftain
AwaitingDecision shadowPhaseDecision = _userFeedback.getAwaitingDecision(P2);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, shadowPhaseDecision.getDecisionType());
validateContents(new String[]{"" + orcChieftain.getCardId()}, (String[]) shadowPhaseDecision.getDecisionParameters().get("cardId"));
playerDecided(P2, getCardActionId(shadowPhaseDecision, "Play "));
// Orc Chieftain in play
assertEquals(Zone.SHADOW_CHARACTERS, orcChieftain.getZone());
assertEquals(1, _game.getGameState().getTwilightPool());
assertTrue(_game.getModifiersQuerying().hasKeyword(_game.getGameState(), orcChieftain, Keyword.ROAMING));
}
@Test
public void payingForRoamingMinionNotRoamingModifier() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<String, Collection<String>>();
initializeSimplestGame(extraCards);
PhysicalCardImpl orcChieftain = new PhysicalCardImpl(100, "1_266", P2, _library.getLotroCardBlueprint("1_266"));
skipMulligans();
_game.getGameState().addCardToZone(_game, orcChieftain, Zone.HAND);
_game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new RemoveKeywordModifier(orcChieftain, Culture.SAURON, Keyword.ROAMING));
_game.getGameState().addTwilight(2);
// End fellowship phase
playerDecided(P1, "");
assertEquals(4, _game.getGameState().getTwilightPool());
// Can't play the Orc Chieftain
AwaitingDecision shadowPhaseDecision = _userFeedback.getAwaitingDecision(P2);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, shadowPhaseDecision.getDecisionType());
validateContents(new String[]{"" + orcChieftain.getCardId()}, (String[]) shadowPhaseDecision.getDecisionParameters().get("cardId"));
playerDecided(P2, getCardActionId(shadowPhaseDecision, "Play "));
// Orc Chieftain in play
assertEquals(Zone.SHADOW_CHARACTERS, orcChieftain.getZone());
assertEquals(2, _game.getGameState().getTwilightPool());
assertFalse(_game.getModifiersQuerying().hasKeyword(_game.getGameState(), orcChieftain, Keyword.ROAMING));
}
@Test
public void payingForRoamingMinionSiteNumberModifier() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<String, Collection<String>>();
initializeSimplestGame(extraCards);
PhysicalCardImpl orcChieftain = new PhysicalCardImpl(100, "1_266", P2, _library.getLotroCardBlueprint("1_266"));
skipMulligans();
_game.getGameState().addCardToZone(_game, orcChieftain, Zone.HAND);
_game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MinionSiteNumberModifier(orcChieftain, Culture.SAURON, null, -4));
_game.getGameState().addTwilight(2);
// End fellowship phase
playerDecided(P1, "");
assertEquals(4, _game.getGameState().getTwilightPool());
// Can't play the Orc Chieftain
AwaitingDecision shadowPhaseDecision = _userFeedback.getAwaitingDecision(P2);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, shadowPhaseDecision.getDecisionType());
validateContents(new String[]{"" + orcChieftain.getCardId()}, (String[]) shadowPhaseDecision.getDecisionParameters().get("cardId"));
playerDecided(P2, getCardActionId(shadowPhaseDecision, "Play "));
// Orc Chieftain in play
assertEquals(Zone.SHADOW_CHARACTERS, orcChieftain.getZone());
assertEquals(2, _game.getGameState().getTwilightPool());
assertFalse(_game.getModifiersQuerying().hasKeyword(_game.getGameState(), orcChieftain, Keyword.ROAMING));
}
@Test
public void payingForRoamingMinionSiteNumberModifierNotEnough() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<String, Collection<String>>();
initializeSimplestGame(extraCards);
PhysicalCardImpl orcChieftain = new PhysicalCardImpl(100, "1_266", P2, _library.getLotroCardBlueprint("1_266"));
skipMulligans();
_game.getGameState().addCardToZone(_game, orcChieftain, Zone.HAND);
_game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MinionSiteNumberModifier(orcChieftain, Culture.SAURON, null, -3));
_game.getGameState().addTwilight(2);
// End fellowship phase
playerDecided(P1, "");
assertEquals(4, _game.getGameState().getTwilightPool());
// Can't play the Orc Chieftain
AwaitingDecision shadowPhaseDecision = _userFeedback.getAwaitingDecision(P2);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, shadowPhaseDecision.getDecisionType());
validateContents(new String[]{"" + orcChieftain.getCardId()}, (String[]) shadowPhaseDecision.getDecisionParameters().get("cardId"));
playerDecided(P2, getCardActionId(shadowPhaseDecision, "Play "));
// Orc Chieftain in play
assertEquals(Zone.SHADOW_CHARACTERS, orcChieftain.getZone());
assertEquals(0, _game.getGameState().getTwilightPool());
assertTrue(_game.getModifiersQuerying().hasKeyword(_game.getGameState(), orcChieftain, Keyword.ROAMING));
}
}