From 4a68fb2d5a410834a68c7bd206c30958d1796665 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Thu, 17 Apr 2025 08:34:36 -0500 Subject: [PATCH] TGAT errata test cases --- .../errata/set03/Card_03_085_ErrataTests.java | 134 ++++++++++++++---- 1 file changed, 110 insertions(+), 24 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_085_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_085_ErrataTests.java index 3e6245096..c296f11fe 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_085_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_085_ErrataTests.java @@ -1,9 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set03; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -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 org.junit.Test; @@ -19,8 +17,12 @@ public class Card_03_085_ErrataTests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "53_85"); - // put other cards in here as needed for the test case + put("tgat", "53_85"); + put("twigul", "101_40"); + put("lord", "4_219"); + + put("sam", "1_311"); + put("bounder", "1_286"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -42,12 +44,13 @@ public class Card_03_085_ErrataTests * Subtype: * Game Text: To play, exert a [ringwraith] minion. Bearer must * be a companion or ally (except the Ring-bearer). Limit 1 per bearer. - * Each time bearer is exerted by a Free Peoples card, exert bearer unless the Free Peoples player discards a card from hand of bearer's culture. + * Each time bearer is exerted by a Free Peoples card, exert bearer unless the Free Peoples player + * discards a card from hand of bearer's culture. */ var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("tgat"); assertEquals("Too Great and Terrible", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -58,29 +61,112 @@ public class Card_03_085_ErrataTests assertEquals(1, card.getBlueprint().getTwilightCost()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void TooGreatandTerribleTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void TooGreatandTerribleExertsARingwraithMinionToPlayOnCompOrAllyExceptRingBearer() 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 tgat = scn.GetShadowCard("tgat"); + var twigul = scn.GetShadowCard("twigul"); + var lord = scn.GetShadowCard("lord"); + scn.ShadowMoveCardToHand(tgat); + scn.ShadowMoveCharToTable(twigul, lord); - var card = scn.GetShadowCard("card"); - scn.ShadowMoveCardToHand(card); - scn.ShadowMoveCharToTable(card); - scn.ShadowMoveCardToSupportArea(card); - scn.ShadowMoveCardToDiscard(card); - scn.ShadowMoveCardsToTopOfDeck(card); + var sam = scn.GetFreepsCard("sam"); + var bounder = scn.GetFreepsCard("bounder"); + scn.FreepsMoveCharToTable(sam); + scn.FreepsMoveCardToSupportArea(bounder); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.FreepsPassCurrentPhaseAction(); - assertEquals(1, scn.GetTwilight()); + assertEquals(0, scn.GetWoundsOn(twigul)); + assertEquals(0, scn.GetWoundsOn(lord)); + assertEquals(Zone.HAND, tgat.getZone()); + assertTrue(scn.ShadowPlayAvailable(tgat)); + + scn.ShadowPlayCard(tgat); + + assertEquals(2, scn.ShadowGetCardChoiceCount()); + assertTrue(scn.ShadowHasCardChoicesAvailable(sam, bounder)); + + scn.ShadowChooseCard(bounder); + assertEquals(Zone.ATTACHED, tgat.getZone()); + assertEquals(bounder, tgat.getAttachedTo()); + assertEquals(1, scn.GetWoundsOn(twigul)); + assertEquals(0, scn.GetWoundsOn(lord)); + } + + @Test + public void TooGreatandTerribleExertsBearerEachTimeTheyExertFromFreepsCard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var sam = scn.GetFreepsCard("sam"); + var bounder = scn.GetFreepsCard("bounder"); + scn.FreepsMoveCharToTable(sam); + scn.FreepsMoveCardToHand(bounder); + + var tgat = scn.GetShadowCard("tgat"); + scn.ShadowAttachCardsTo(sam, tgat); + + scn.StartGame(); + + assertEquals(0, scn.GetWoundsOn(sam)); + scn.FreepsUseCardAction(sam); + + assertTrue(scn.FreepsDecisionAvailable("Discard a card from hand sharing a culture with")); + scn.FreepsChooseNo(); + assertEquals(2, scn.GetWoundsOn(sam)); + } + + @Test + public void TooGreatandTerribleDoesNotExertBearerIfDoneByShadowCard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var sam = scn.GetFreepsCard("sam"); + var bounder = scn.GetFreepsCard("bounder"); + scn.FreepsMoveCharToTable(sam); + scn.FreepsMoveCardToHand(bounder); + + var tgat = scn.GetShadowCard("tgat"); + var lord = scn.GetShadowCard("lord"); + scn.ShadowAttachCardsTo(sam, tgat); + scn.ShadowMoveCharToTable(lord); + + scn.StartGame(); + scn.SkipToPhase(Phase.ARCHERY); + scn.FreepsPassCurrentPhaseAction(); + scn.ShadowUseCardAction(lord); + + assertEquals(1, scn.GetWoundsOn(sam)); + + assertFalse(scn.FreepsDecisionAvailable("Discard a card from hand sharing a culture with")); + } + + @Test + public void TooGreatandTerribleLetsFreepsBlockExertionIfCardDiscardedFromHandOfSameCulture() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var sam = scn.GetFreepsCard("sam"); + var bounder = scn.GetFreepsCard("bounder"); + scn.FreepsMoveCharToTable(sam); + scn.FreepsMoveCardToHand(bounder); + + var tgat = scn.GetShadowCard("tgat"); + scn.ShadowAttachCardsTo(sam, tgat); + + scn.StartGame(false); + + assertEquals(0, scn.GetWoundsOn(sam)); + assertEquals(Zone.HAND, bounder.getZone()); + scn.FreepsUseCardAction(sam); + + assertTrue(scn.FreepsDecisionAvailable("Discard a card from hand sharing a culture with")); + scn.FreepsChooseYes(); + assertEquals(Zone.DISCARD, bounder.getZone()); + assertEquals(1, scn.GetWoundsOn(sam)); } }