From ba273f06f8dfae29f8638f99d90685df0b746b76 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Mon, 7 Apr 2025 19:50:48 -0500 Subject: [PATCH] Added unit tests for all V2 Dunland cards; cleaned up the tests for the V2 Maps. --- .../pc/vsets/set_v02/Card_V2_002_Tests.java | 57 +++++++++--- .../pc/vsets/set_v02/Card_V2_003_Tests.java | 52 ++++++++--- .../pc/vsets/set_v02/Card_V2_004_Tests.java | 86 ++++++++++++++++--- .../pc/vsets/set_v02/Card_V2_074_Tests.java | 18 +--- .../pc/vsets/set_v02/Card_V2_075_Tests.java | 18 +--- .../pc/vsets/set_v02/Card_V2_076_Tests.java | 18 +--- 6 files changed, 164 insertions(+), 85 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_002_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_002_Tests.java index 878c54d60..4d03c0cc7 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_002_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_002_Tests.java @@ -1,9 +1,11 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -18,8 +20,12 @@ public class Card_V2_002_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "102_2"); - // put other cards in here as needed for the test case + put("raider", "102_2"); + + put("card1", "102_3"); + put("card2", "102_4"); + put("card3", "102_5"); + put("card4", "102_6"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -47,7 +53,7 @@ public class Card_V2_002_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("raider"); assertEquals("Dunlending Raider", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -62,18 +68,45 @@ public class Card_V2_002_Tests assertEquals(3, card.getBlueprint().getSiteNumber()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void DunlendingRaiderTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void DunlendingRaiderCosts3IfFreepsHasInitiative() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var raider = scn.GetShadowCard("raider"); + scn.ShadowMoveCardToHand(raider); + + scn.FreepsMoveCardToHand("card1", "card2", "card3", "card4"); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.SetTwilight(7); - assertEquals(3, scn.GetTwilight()); + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowPlayAvailable(raider)); + assertEquals(10, scn.GetTwilight()); + + scn.ShadowPlayCard(raider); + //10 in the pool, -3 for full price -2 for roaming + assertEquals(5, scn.GetTwilight()); + } + + @Test + public void DunlendingRaiderCosts1IfShadowHasInitiative() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var raider = scn.GetShadowCard("raider"); + scn.ShadowMoveCardToHand(raider); + + scn.StartGame(); + scn.SetTwilight(7); + + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowPlayAvailable(raider)); + assertEquals(10, scn.GetTwilight()); + + scn.ShadowPlayCard(raider); + //10 in the pool, -1 for full price -2 for roaming + assertEquals(7, scn.GetTwilight()); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_003_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_003_Tests.java index 2568fe91d..88d686561 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_003_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_003_Tests.java @@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02; import com.gempukku.lotro.cards.GenericCardTestHelper; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -18,8 +17,12 @@ public class Card_V2_003_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "102_3"); - // put other cards in here as needed for the test case + put("reaver", "102_3"); + + put("card1", "102_4"); + put("card2", "102_5"); + put("card3", "102_6"); + put("card4", "102_7"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -47,7 +50,7 @@ public class Card_V2_003_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("reaver"); assertEquals("Dunlending Reaver", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -62,18 +65,45 @@ public class Card_V2_003_Tests assertEquals(3, card.getBlueprint().getSiteNumber()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void DunlendingReaverTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void DunlendingReaverNoBonusIfFreepsHasInitiative() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var reaver = scn.GetShadowCard("reaver"); + scn.ShadowMoveCardToHand(reaver); + + scn.FreepsMoveCardToHand("card1", "card2", "card3", "card4"); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.SetTwilight(10); - assertEquals(2, scn.GetTwilight()); + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowPlayAvailable(reaver)); + + scn.ShadowPlayCard(reaver); + + assertEquals(8, scn.GetStrength(reaver)); + assertFalse(scn.hasKeyword(reaver, Keyword.DAMAGE)); + } + + @Test + public void DunlendingReaverIsStrengthPlus3AndDamagePlus1IfShadowHasInitiative() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var reaver = scn.GetShadowCard("reaver"); + scn.ShadowMoveCardToHand(reaver); + + scn.StartGame(); + scn.SetTwilight(10); + + scn.FreepsPassCurrentPhaseAction(); + assertTrue(scn.ShadowPlayAvailable(reaver)); + + scn.ShadowPlayCard(reaver); + + assertEquals(11, scn.GetStrength(reaver)); + assertTrue(scn.hasKeyword(reaver, Keyword.DAMAGE)); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_004_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_004_Tests.java index 51bdd6c03..813f01e78 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_004_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_004_Tests.java @@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02; import com.gempukku.lotro.cards.GenericCardTestHelper; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -18,8 +17,16 @@ public class Card_V2_004_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "102_4"); - // put other cards in here as needed for the test case + put("horsemen", "102_4"); + put("band", "4_4"); + put("chief", "4_20"); + put("club", "4_36"); + put("hides", "4_19"); + + put("card1", "1_3"); + put("card2", "1_4"); + put("card3", "1_5"); + put("card4", "1_6"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -44,7 +51,7 @@ public class Card_V2_004_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("horsemen"); assertEquals("Horsemen Took Your Lands", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -56,18 +63,75 @@ public class Card_V2_004_Tests assertEquals(1, card.getBlueprint().getTwilightCost()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void HorsemenTookYourLandsTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void HorsemenTookYourLandsPlaysNonUniqueDunlendingFromDiscardWithPossessionWithInitiative() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var horsemen = scn.GetShadowCard("horsemen"); + var band = scn.GetShadowCard("band"); + var chief = scn.GetShadowCard("chief"); + var club = scn.GetShadowCard("club"); + var hides = scn.GetShadowCard("hides"); + scn.ShadowMoveCardToHand(horsemen); + scn.ShadowMoveCardToDiscard(band, chief, club, hides); + + var card1 = scn.GetFreepsCard("card1"); + var card2 = scn.GetFreepsCard("card2"); + var card3 = scn.GetFreepsCard("card3"); + var card4 = scn.GetFreepsCard("card4"); + scn.FreepsMoveCardToHand(card1, card2, card3); + scn.FreepsMoveCardToDiscard(card4); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); - assertEquals(1, scn.GetTwilight()); + assertEquals(Zone.DISCARD, band.getZone()); + assertEquals(Zone.DISCARD, chief.getZone()); + assertEquals(Zone.DISCARD, club.getZone()); + assertEquals(Zone.DISCARD, hides.getZone()); + assertTrue(scn.ShadowPlayAvailable(horsemen)); + scn.ShadowPlayCard(horsemen); + assertEquals(Zone.SHADOW_CHARACTERS, band.getZone()); + assertEquals(Zone.DISCARD, chief.getZone()); + assertEquals(Zone.ATTACHED, club.getZone()); + assertEquals(band, club.getAttachedTo()); + assertEquals(Zone.DISCARD, hides.getZone()); + } + + @Test + public void HorsemenTookYourLandsPlaysNonUniqueDunlendingFromDiscardWithNoPossessionWithNoInitiative() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var horsemen = scn.GetShadowCard("horsemen"); + var band = scn.GetShadowCard("band"); + var chief = scn.GetShadowCard("chief"); + var club = scn.GetShadowCard("club"); + var hides = scn.GetShadowCard("hides"); + scn.ShadowMoveCardToHand(horsemen); + scn.ShadowMoveCardToDiscard(band, chief, club, hides); + + var card1 = scn.GetFreepsCard("card1"); + var card2 = scn.GetFreepsCard("card2"); + var card3 = scn.GetFreepsCard("card3"); + var card4 = scn.GetFreepsCard("card4"); + scn.FreepsMoveCardToHand(card1, card2, card3, card4); + + scn.StartGame(); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(Zone.DISCARD, band.getZone()); + assertEquals(Zone.DISCARD, chief.getZone()); + assertEquals(Zone.DISCARD, club.getZone()); + assertEquals(Zone.DISCARD, hides.getZone()); + assertTrue(scn.ShadowPlayAvailable(horsemen)); + scn.ShadowPlayCard(horsemen); + assertEquals(Zone.SHADOW_CHARACTERS, band.getZone()); + assertEquals(Zone.DISCARD, chief.getZone()); + assertEquals(Zone.DISCARD, club.getZone()); + assertEquals(Zone.DISCARD, hides.getZone()); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_074_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_074_Tests.java index 536148808..d7b5a3edc 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_074_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_074_Tests.java @@ -1,9 +1,8 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -52,19 +51,4 @@ public class Card_V2_074_Tests assertFalse(card.getBlueprint().isUnique()); assertEquals(CardType.MAP, card.getBlueprint().getCardType()); } - - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void PathoftheFellowshipTest1() throws DecisionResultInvalidException, CardNotFoundException { - //Pre-game setup - var scn = GetScenario(); - - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); - - scn.StartGame(); - scn.FreepsPlayCard(card); - - assertEquals(0, scn.GetTwilight()); - } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_075_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_075_Tests.java index 580e0392f..d50a7dcc9 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_075_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_075_Tests.java @@ -1,9 +1,8 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -52,19 +51,4 @@ public class Card_V2_075_Tests assertFalse(card.getBlueprint().isUnique()); assertEquals(CardType.MAP, card.getBlueprint().getCardType()); } - - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void RoadtotheTowersTest1() throws DecisionResultInvalidException, CardNotFoundException { - //Pre-game setup - var scn = GetScenario(); - - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); - - scn.StartGame(); - scn.FreepsPlayCard(card); - - assertEquals(0, scn.GetTwilight()); - } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_076_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_076_Tests.java index 227eb5cfe..a0f2f19e8 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_076_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_076_Tests.java @@ -1,9 +1,8 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -52,19 +51,4 @@ public class Card_V2_076_Tests assertFalse(card.getBlueprint().isUnique()); assertEquals(CardType.MAP, card.getBlueprint().getCardType()); } - - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void JourneyoftheKingTest1() throws DecisionResultInvalidException, CardNotFoundException { - //Pre-game setup - var scn = GetScenario(); - - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); - - scn.StartGame(); - scn.FreepsPlayCard(card); - - assertEquals(0, scn.GetTwilight()); - } }