From 2d43c49b0dfe9f47f3e2884dd8858367e3aa4531 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Thu, 17 Apr 2025 08:42:18 -0500 Subject: [PATCH] Lathspell errata test cases --- .../pc/vsets/set_v02/Card_V2_013_Tests.java | 170 ++++++++++++++++-- 1 file changed, 154 insertions(+), 16 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java index c04c87267..7c187c380 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java @@ -8,8 +8,7 @@ import org.junit.Test; import java.util.HashMap; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class Card_V2_013_Tests { @@ -18,8 +17,16 @@ public class Card_V2_013_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "102_13"); - // put other cards in here as needed for the test case + put("gandalf", "102_13"); + put("shadowfax", "4_100"); + + put("valiant1", "65_14"); + put("valiant2", "7_224"); + put("valiant3", "18_99"); + + put("shotgun", "1_231"); + put("marauder", "10_76"); + put("grishnakh", "5_100"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -49,7 +56,7 @@ public class Card_V2_013_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("gandalf"); assertEquals("Gandalf", card.getBlueprint().getTitle()); assertEquals("Lathspell", card.getBlueprint().getSubtitle()); @@ -65,22 +72,153 @@ public class Card_V2_013_Tests assertEquals(Signet.THEODEN, card.getBlueprint().getSignet()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void GandalfTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void GandalfMakesMountedCompanionsValiant() 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 gandalf = scn.GetFreepsCard("gandalf"); + var shadowfax = scn.GetFreepsCard("shadowfax"); + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCardToHand(shadowfax); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(4, scn.GetTwilight()); + assertFalse(scn.hasKeyword(gandalf, Keyword.VALIANT)); + scn.FreepsPlayCard(shadowfax); + assertEquals(Zone.ATTACHED, shadowfax.getZone()); + assertEquals(gandalf, shadowfax.getAttachedTo()); + assertTrue(scn.hasKeyword(gandalf, Keyword.VALIANT)); + } + + @Test + public void GandalfCannotRespondWith2ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var gandalf = scn.GetFreepsCard("gandalf"); + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCharToTable("valiant1", "valiant2"); + + var shotgun = scn.GetShadowCard("shotgun"); + scn.ShadowMoveCharToTable(shotgun); + + scn.StartGame(); + + scn.AddBurdens(4); + + scn.SkipToPhase(Phase.MANEUVER); + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowActionAvailable(shotgun)); + + scn.ShadowUseCardAction(shotgun); + assertFalse(scn.FreepsHasOptionalTriggerAvailable()); + } + + @Test + public void GandalfCanBlockMinionAbilityAndWoundItIf3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var gandalf = scn.GetFreepsCard("gandalf"); + var valiant1 = scn.GetFreepsCard("valiant1"); + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCharToTable("valiant1", "valiant2", "valiant3"); + + var shotgun = scn.GetShadowCard("shotgun"); + scn.ShadowMoveCharToTable(shotgun); + + scn.StartGame(); + + scn.AddBurdens(4); + + scn.SkipToPhase(Phase.MANEUVER); + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowActionAvailable(shotgun)); + + assertEquals(0, scn.GetWoundsOn(valiant1)); + assertEquals(0, scn.GetWoundsOn(gandalf)); + assertEquals(0, scn.GetWoundsOn(shotgun)); + scn.ShadowUseCardAction(shotgun); + //Enquea's own exertion + assertEquals(1, scn.GetWoundsOn(shotgun)); + assertTrue(scn.FreepsHasOptionalTriggerAvailable()); + scn.FreepsAcceptOptionalTrigger(); + assertEquals(0, scn.GetWoundsOn(valiant1)); + assertEquals(1, scn.GetWoundsOn(gandalf)); + //Lathspell's retribution no longer wounds, just blocks + assertEquals(1, scn.GetWoundsOn(shotgun)); + } + + @Test + public void GandalfCanBlockGrishnakhAndWoundHimIf3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var gandalf = scn.GetFreepsCard("gandalf"); + var valiant1 = scn.GetFreepsCard("valiant1"); + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCharToTable("valiant1", "valiant2", "valiant3"); + + var grishnakh = scn.GetShadowCard("grishnakh"); + scn.ShadowMoveCharToTable(grishnakh); + scn.ShadowMoveCharToTable("marauder"); + + scn.StartGame(); + + scn.FreepsPassCurrentPhaseAction(); + + assertTrue(scn.ShadowActionAvailable(grishnakh)); + + assertEquals(0, scn.GetWoundsOn(gandalf)); + assertEquals(0, scn.GetWoundsOn(grishnakh)); + assertEquals(0, scn.GetShadowHandCount()); + assertEquals(6, scn.GetShadowDeckCount()); + scn.ShadowUseCardAction(grishnakh); + //Grishnakh's own exertions + assertEquals(2, scn.GetWoundsOn(grishnakh)); + assertTrue(scn.FreepsHasOptionalTriggerAvailable()); + scn.FreepsAcceptOptionalTrigger(); + assertEquals(1, scn.GetWoundsOn(gandalf)); + //Lathspell's retribution no longer wounds + assertEquals(Zone.SHADOW_CHARACTERS, grishnakh.getZone()); + assertEquals(2, scn.GetWoundsOn(grishnakh)); + assertEquals(0, scn.GetShadowHandCount()); + assertEquals(6, scn.GetShadowDeckCount()); + } + + @Test + public void GandalfCannotBlockSkirmishAbilityEvenWith3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var gandalf = scn.GetFreepsCard("gandalf"); + var valiant1 = scn.GetFreepsCard("valiant1"); + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCharToTable("valiant1", "valiant2", "valiant3"); + + var marauder = scn.GetShadowCard("marauder"); + scn.ShadowMoveCharToTable(marauder); + + scn.StartGame(); + + scn.SkipToAssignments(); + scn.FreepsAssignToMinions(valiant1, marauder); + scn.FreepsResolveSkirmish(valiant1); + + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowActionAvailable(marauder)); + + assertEquals(0, scn.GetWoundsOn(gandalf)); + assertEquals(0, scn.GetWoundsOn(marauder)); + assertEquals(9, scn.getStrength(marauder)); + scn.ShadowUseCardAction(marauder); + //marauder's own exertion + assertEquals(1, scn.GetWoundsOn(marauder)); + assertFalse(scn.FreepsHasOptionalTriggerAvailable()); + assertEquals(0, scn.GetWoundsOn(gandalf)); + assertEquals(1, scn.GetWoundsOn(marauder)); + //Ability went through with no objection + assertEquals(12, scn.getStrength(marauder)); } }