From c50b9d60c5197d5aad580590366db8a502321175 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Fri, 19 Aug 2022 19:28:47 -0500 Subject: [PATCH] Added Relics of Moria unit tests for both original and errata --- .../official/set01/Card_1_195_Tests.java | 107 ++++++++++++++++++ .../errata/set01/Card_01_195_ErrataTests.java | 88 ++++++++++++-- 2 files changed, 184 insertions(+), 11 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_1_195_Tests.java diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_1_195_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_1_195_Tests.java new file mode 100644 index 000000000..99d7f3d8c --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_1_195_Tests.java @@ -0,0 +1,107 @@ +package com.gempukku.lotro.cards.official.set01; + +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; + +import java.util.HashMap; + +import static org.junit.Assert.*; + +public class Card_1_195_Tests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap() + {{ + put("relics", "1_195"); + put("runner", "1_178"); + put("scimitar", "1_180"); + + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.FOTRRing + ); + } + + @Test + public void RelicsStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 1 + * Title: Relics of Moria + * Unique: false + * Side: Shadow + * Culture: Moria + * Twilight Cost: 1 + * Type: Condition + * Subtype: Support Area + * Game Text: Plays to your support area. + * Shadow: Remove (2) to play a [MORIA] possession from your discard pile. + */ + + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl relics = scn.GetFreepsCard("relics"); + + assertFalse(relics.getBlueprint().isUnique()); + assertEquals(Side.SHADOW, relics.getBlueprint().getSide()); + assertEquals(Culture.MORIA, relics.getBlueprint().getCulture()); + assertEquals(CardType.CONDITION, relics.getBlueprint().getCardType()); + assertEquals(1, relics.getBlueprint().getTwilightCost()); + assertTrue(scn.HasKeyword(relics, Keyword.SUPPORT_AREA)); + } + + @Test + public void ShadowAbilityRemoves2ToPlayMoriaPossessionFromDiscard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + var relics = scn.GetShadowCard("relics"); + var runner = scn.GetShadowCard("runner"); + var scimitar = scn.GetShadowCard("scimitar"); + scn.ShadowMoveCardToSupportArea(relics); + scn.ShadowMoveCharToTable(runner); + scn.ShadowMoveCardToDiscard(scimitar); + + scn.StartGame(); + + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(3, scn.GetTwilight()); + assertEquals(Zone.DISCARD, scimitar.getZone()); + assertTrue(scn.ShadowActionAvailable(relics)); + scn.ShadowUseCardAction(relics); + + assertEquals(1, scn.GetTwilight()); + assertEquals(Zone.ATTACHED, scimitar.getZone()); + assertFalse(scn.ShadowActionAvailable(relics)); + } + + @Test + public void ShadowAbilityNotAvailableIfNoPossessionsInDiscard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + var relics = scn.GetShadowCard("relics"); + var runner = scn.GetShadowCard("runner"); + var scimitar = scn.GetShadowCard("scimitar"); + scn.ShadowMoveCardToSupportArea(relics); + scn.ShadowMoveCharToTable(runner); + + scn.StartGame(); + + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(Zone.DECK, scimitar.getZone()); + assertEquals(0, scn.GetShadowDiscardCount()); + assertFalse(scn.ShadowActionAvailable(relics)); + } + +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_195_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_195_ErrataTests.java index 8d25f1610..8f1595d09 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_195_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_195_ErrataTests.java @@ -1,9 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; 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.*; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; @@ -12,17 +10,23 @@ 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_01_195_ErrataTests { - protected GenericCardTestHelper GetSimpleDeckScenario() throws CardNotFoundException, DecisionResultInvalidException { + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { return new GenericCardTestHelper( - new HashMap<>() {{ + new HashMap() + {{ put("relics", "51_195"); - }} + put("runner", "1_178"); + put("scimitar", "1_180"); + + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.FOTRRing ); } @@ -30,14 +34,76 @@ public class Card_01_195_ErrataTests @Test public void RelicsStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + /** + * Set: 1 + * Title: Relics of Moria + * Unique: true + * Side: Shadow + * Culture: Moria + * Twilight Cost: 1 + * Type: Condition + * Subtype: Support Area + * Game Text: Plays to your support area. + * Shadow: Remove (2) to play a [MORIA] possession from your discard pile. + */ + //Pre-game setup - GenericCardTestHelper scn = GetSimpleDeckScenario(); + GenericCardTestHelper scn = GetScenario(); + PhysicalCardImpl relics = scn.GetFreepsCard("relics"); assertTrue(relics.getBlueprint().isUnique()); - assertEquals(CardType.CONDITION, relics.getBlueprint().getCardType()); + assertEquals(Side.SHADOW, relics.getBlueprint().getSide()); assertEquals(Culture.MORIA, relics.getBlueprint().getCulture()); - Assert.assertTrue(scn.HasKeyword(relics, Keyword.SUPPORT_AREA)); + assertEquals(CardType.CONDITION, relics.getBlueprint().getCardType()); + assertEquals(1, relics.getBlueprint().getTwilightCost()); + assertTrue(scn.HasKeyword(relics, Keyword.SUPPORT_AREA)); + } + + @Test + public void ShadowAbilityRemoves2ToPlayMoriaPossessionFromDiscard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + var relics = scn.GetShadowCard("relics"); + var runner = scn.GetShadowCard("runner"); + var scimitar = scn.GetShadowCard("scimitar"); + scn.ShadowMoveCardToSupportArea(relics); + scn.ShadowMoveCharToTable(runner); + scn.ShadowMoveCardToDiscard(scimitar); + + scn.StartGame(); + + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(3, scn.GetTwilight()); + assertEquals(Zone.DISCARD, scimitar.getZone()); + assertTrue(scn.ShadowActionAvailable(relics)); + scn.ShadowUseCardAction(relics); + + assertEquals(1, scn.GetTwilight()); + assertEquals(Zone.ATTACHED, scimitar.getZone()); + assertFalse(scn.ShadowActionAvailable(relics)); + } + + @Test + public void ShadowAbilityNotAvailableIfNoPossessionsInDiscard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + var relics = scn.GetShadowCard("relics"); + var runner = scn.GetShadowCard("runner"); + var scimitar = scn.GetShadowCard("scimitar"); + scn.ShadowMoveCardToSupportArea(relics); + scn.ShadowMoveCharToTable(runner); + + scn.StartGame(); + + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(Zone.DECK, scimitar.getZone()); + assertEquals(0, scn.GetShadowDiscardCount()); + assertFalse(scn.ShadowActionAvailable(relics)); } }