Now for Wrath errata test cases
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02;
|
||||
|
||||
import com.gempukku.lotro.cards.GenericCardTestHelper;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.CardNotFoundException;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.modifiers.HasInitiativeModifier;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -20,8 +18,18 @@ public class Card_V2_051_Tests
|
||||
return new GenericCardTestHelper(
|
||||
new HashMap<>()
|
||||
{{
|
||||
put("card", "102_51");
|
||||
// put other cards in here as needed for the test case
|
||||
put("wrath", "102_51");
|
||||
put("sam", "7_327");
|
||||
put("eowyn", "5_122");
|
||||
put("javelin", "7_248");
|
||||
put("deor", "7_222");
|
||||
put("bounder", "1_286");
|
||||
put("castout", "12_108");
|
||||
|
||||
put("unspoiled", "7_327");
|
||||
put("lord", "4_219");
|
||||
put("cantea", "1_230");
|
||||
put("terror", "1_226");
|
||||
}},
|
||||
GenericCardTestHelper.FellowshipSites,
|
||||
GenericCardTestHelper.FOTRFrodo,
|
||||
@@ -47,7 +55,7 @@ public class Card_V2_051_Tests
|
||||
|
||||
var scn = GetScenario();
|
||||
|
||||
var card = scn.GetFreepsCard("card");
|
||||
var card = scn.GetFreepsCard("wrath");
|
||||
|
||||
assertEquals("Now for Wrath", card.getBlueprint().getTitle());
|
||||
assertNull(card.getBlueprint().getSubtitle());
|
||||
@@ -59,29 +67,265 @@ public class Card_V2_051_Tests
|
||||
assertEquals(1, card.getBlueprint().getTwilightCost());
|
||||
}
|
||||
|
||||
// Uncomment any @Test markers below once this is ready to be used
|
||||
//@Test
|
||||
public void NowforWrathTest1() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
@Test
|
||||
public void NowforWrathDoesNotReactToFellowshipPhasePossessionDiscard() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var card = scn.GetFreepsCard("card");
|
||||
scn.FreepsMoveCardToHand(card);
|
||||
scn.FreepsMoveCharToTable(card);
|
||||
scn.FreepsMoveCardToSupportArea(card);
|
||||
scn.FreepsMoveCardToDiscard(card);
|
||||
scn.FreepsMoveCardsToTopOfDeck(card);
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var javelin = scn.GetFreepsCard("javelin");
|
||||
var sam = scn.GetFreepsCard("sam");
|
||||
scn.FreepsMoveCardToHand(javelin);
|
||||
scn.FreepsMoveCharToTable(sam);
|
||||
scn.FreepsMoveCardToSupportArea(wrath);
|
||||
|
||||
// var card = scn.GetShadowCard("card");
|
||||
// scn.ShadowMoveCardToHand(card);
|
||||
// scn.ShadowMoveCharToTable(card);
|
||||
// scn.ShadowMoveCardToSupportArea(card);
|
||||
// scn.ShadowMoveCardToDiscard(card);
|
||||
// scn.ShadowMoveCardsToTopOfDeck(card);
|
||||
//cheating to get around Sam's initiative requirement
|
||||
scn.ApplyAdHocModifier(new HasInitiativeModifier(null, null, Side.FREE_PEOPLE));
|
||||
|
||||
scn.StartGame();
|
||||
scn.FreepsPlayCard(card);
|
||||
|
||||
assertEquals(1, scn.GetTwilight());
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(Zone.HAND, javelin.getZone());
|
||||
|
||||
scn.FreepsUseCardAction(sam);
|
||||
assertEquals(Zone.DISCARD, javelin.getZone());
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathReactsToManeuverPhaseRohanAllyKill() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var deor = scn.GetFreepsCard("deor");
|
||||
var bounder = scn.GetFreepsCard("bounder");
|
||||
var eowyn = scn.GetFreepsCard("eowyn");
|
||||
scn.FreepsMoveCharToTable(eowyn);
|
||||
scn.FreepsMoveCardToSupportArea(wrath, deor, bounder);
|
||||
|
||||
scn.AddWoundsToChar(deor, 1);
|
||||
scn.AddWoundsToChar(bounder, 1);
|
||||
|
||||
var terror = scn.GetShadowCard("terror");
|
||||
scn.ShadowMoveCharToTable("cantea");
|
||||
scn.ShadowMoveCardToHand(terror);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToPhase(Phase.MANEUVER);
|
||||
scn.FreepsPassCurrentPhaseAction();
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(Zone.SUPPORT, deor.getZone());
|
||||
assertEquals(Zone.SUPPORT, bounder.getZone());
|
||||
|
||||
scn.ShadowPlayCard(terror);
|
||||
scn.FreepsResolveRuleFirst();
|
||||
assertEquals(Zone.DEAD, deor.getZone());
|
||||
assertEquals(Zone.DEAD, bounder.getZone());
|
||||
//Token from Deor, but not from Bounder
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathReactsToArcheryPhasePossessionDiscard() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var javelin = scn.GetFreepsCard("javelin");
|
||||
var eowyn = scn.GetFreepsCard("eowyn");
|
||||
scn.FreepsMoveCharToTable(eowyn);
|
||||
scn.AttachCardsTo(eowyn, javelin);
|
||||
scn.FreepsMoveCardToSupportArea(wrath);
|
||||
|
||||
scn.ShadowMoveCharToTable("cantea");
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToPhase(Phase.ARCHERY);
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(Zone.ATTACHED, javelin.getZone());
|
||||
|
||||
scn.FreepsUseCardAction(javelin);
|
||||
assertEquals(Zone.DISCARD, javelin.getZone());
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathReactsToSkirmishPhaseShadowPossessionDiscard() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var javelin = scn.GetFreepsCard("javelin");
|
||||
var eowyn = scn.GetFreepsCard("eowyn");
|
||||
scn.FreepsMoveCharToTable(eowyn);
|
||||
scn.AttachCardsTo(eowyn, javelin);
|
||||
scn.FreepsMoveCardToSupportArea(wrath);
|
||||
|
||||
var cantea = scn.GetShadowCard("cantea");
|
||||
scn.ShadowMoveCharToTable(cantea);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToAssignments();
|
||||
scn.FreepsAssignAndResolve(eowyn, cantea);
|
||||
scn.FreepsPassCurrentPhaseAction();
|
||||
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(Zone.ATTACHED, javelin.getZone());
|
||||
|
||||
scn.ShadowUseCardAction(cantea);
|
||||
assertEquals(Zone.DISCARD, javelin.getZone());
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathReactsToReconciledPossessionDiscard() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var javelin = scn.GetFreepsCard("javelin");
|
||||
scn.FreepsMoveCardToSupportArea(wrath);
|
||||
scn.FreepsMoveCardToHand(javelin);
|
||||
|
||||
scn.StartGame();
|
||||
scn.SkipToPhase(Phase.REGROUP);
|
||||
scn.PassCurrentPhaseActions();
|
||||
scn.FreepsChooseToStay();
|
||||
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
scn.FreepsChooseCard(javelin);
|
||||
assertEquals(Zone.DISCARD, javelin.getZone());
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathReactsToReconciledAllyDiscard() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var deor = scn.GetFreepsCard("deor");
|
||||
scn.FreepsMoveCardToSupportArea(wrath);
|
||||
scn.FreepsMoveCardToHand(deor);
|
||||
|
||||
scn.StartGame();
|
||||
scn.SkipToPhase(Phase.REGROUP);
|
||||
scn.PassCurrentPhaseActions();
|
||||
scn.FreepsChooseToStay();
|
||||
|
||||
assertEquals(0, scn.GetCultureTokensOn(wrath));
|
||||
scn.FreepsChooseCard(deor);
|
||||
assertEquals(Zone.DISCARD, deor.getZone());
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathDoesNotRespondToMinionExertedByFreepsCardIfLessThan2Tokens() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var eowyn = scn.GetFreepsCard("eowyn");
|
||||
var castout = scn.GetFreepsCard("castout");
|
||||
|
||||
scn.FreepsMoveCharToTable(eowyn);
|
||||
scn.FreepsMoveCardToSupportArea(wrath, castout);
|
||||
scn.AddTokensToCard(wrath, 1);
|
||||
|
||||
var cantea = scn.GetShadowCard("cantea");
|
||||
scn.ShadowMoveCharToTable(cantea);
|
||||
scn.AddWoundsToChar(cantea, 1);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToPhase(Phase.MANEUVER);
|
||||
assertTrue(scn.FreepsActionAvailable("Exert a Minion"));
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
assertTrue(scn.hasKeyword(eowyn, Keyword.VALIANT));
|
||||
assertEquals(0, scn.GetWoundsOn(eowyn));
|
||||
assertEquals(1, scn.GetWoundsOn(cantea));
|
||||
|
||||
scn.FreepsUseCardAction(castout);
|
||||
assertTrue(scn.ShadowDecisionAvailable("Play Maneuver action or pass"));
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(0, scn.GetWoundsOn(eowyn));
|
||||
assertEquals(2, scn.GetWoundsOn(cantea));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathDoesNotRespondToMinionExertedByFreepsCardIfHas2TokensButNoValiantComp() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var deor = scn.GetFreepsCard("deor");
|
||||
var castout = scn.GetFreepsCard("castout");
|
||||
|
||||
scn.FreepsMoveCardToSupportArea(wrath, castout, deor);
|
||||
scn.AddTokensToCard(wrath, 2);
|
||||
|
||||
var cantea = scn.GetShadowCard("cantea");
|
||||
scn.ShadowMoveCharToTable(cantea);
|
||||
scn.AddWoundsToChar(cantea, 1);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToPhase(Phase.MANEUVER);
|
||||
assertTrue(scn.FreepsActionAvailable("Exert a Minion"));
|
||||
assertEquals(2, scn.GetCultureTokensOn(wrath));
|
||||
assertFalse(scn.hasKeyword(deor, Keyword.VALIANT));
|
||||
assertEquals(0, scn.GetWoundsOn(deor));
|
||||
assertEquals(1, scn.GetWoundsOn(cantea));
|
||||
|
||||
scn.FreepsUseCardAction(castout);
|
||||
assertTrue(scn.ShadowDecisionAvailable("Play Maneuver action or pass"));
|
||||
assertEquals(2, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(0, scn.GetWoundsOn(deor));
|
||||
assertEquals(2, scn.GetWoundsOn(cantea));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NowforWrathRemoves2TokenAndExertsValiantCompToWoundMinionExertedByFreepsCard() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
var scn = GetScenario();
|
||||
|
||||
var wrath = scn.GetFreepsCard("wrath");
|
||||
var eowyn = scn.GetFreepsCard("eowyn");
|
||||
var castout = scn.GetFreepsCard("castout");
|
||||
|
||||
scn.FreepsMoveCharToTable(eowyn);
|
||||
scn.FreepsMoveCardToSupportArea(wrath, castout);
|
||||
scn.AddTokensToCard(wrath, 3);
|
||||
|
||||
var cantea = scn.GetShadowCard("cantea");
|
||||
scn.ShadowMoveCharToTable(cantea);
|
||||
scn.AddWoundsToChar(cantea, 1);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToPhase(Phase.MANEUVER);
|
||||
assertTrue(scn.FreepsActionAvailable("Exert a Minion"));
|
||||
assertEquals(3, scn.GetCultureTokensOn(wrath));
|
||||
assertTrue(scn.hasKeyword(eowyn, Keyword.VALIANT));
|
||||
assertEquals(0, scn.GetWoundsOn(eowyn));
|
||||
assertEquals(1, scn.GetWoundsOn(cantea));
|
||||
assertEquals(Zone.SHADOW_CHARACTERS, cantea.getZone());
|
||||
|
||||
scn.FreepsUseCardAction(castout);
|
||||
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
|
||||
scn.FreepsAcceptOptionalTrigger();
|
||||
|
||||
assertEquals(1, scn.GetCultureTokensOn(wrath));
|
||||
assertEquals(1, scn.GetWoundsOn(eowyn));
|
||||
assertEquals(Zone.DISCARD, cantea.getZone());
|
||||
|
||||
assertTrue(scn.ShadowDecisionAvailable("Play Maneuver action or pass"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user