diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_172_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_172_Tests.java index 23db7af0a..28c63f5f1 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_172_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_172_Tests.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.GenericCardTestHelper; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier; import org.junit.Test; import java.util.HashMap; @@ -17,8 +18,8 @@ public class Card_01_172_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "1_172"); - // put other cards in here as needed for the test case + put("archer", "1_172"); + put("runner", "1_178"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -46,7 +47,7 @@ public class Card_01_172_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("archer"); assertEquals("Goblin Archer", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -62,18 +63,38 @@ public class Card_01_172_Tests assertEquals(4, card.getBlueprint().getSiteNumber()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void GoblinArcherTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void GoblinArcherSpotsAnotherMoriaOrcToMakeFellowshipArcheryTotalMinus6() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var archer = scn.GetShadowCard("archer"); + var runner = scn.GetShadowCard("runner"); + + scn.ShadowMoveCharToTable(runner); + scn.ShadowMoveCardToHand(archer); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.FREE_PEOPLE, 7)); + scn.SkipToPhase(Phase.ARCHERY); - assertEquals(5, scn.GetTwilight()); + assertEquals(7, scn.GetFreepsArcheryTotal()); + scn.FreepsMoveCharToTable(archer); + assertEquals(1, scn.GetFreepsArcheryTotal()); + } + + @Test + public void GoblinArcherDoesNotAlterFellowshipArcheryTotalIfNoOtherMoriaOrc() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var archer = scn.GetShadowCard("archer"); + scn.ShadowMoveCharToTable(archer); + + scn.StartGame(); + scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.FREE_PEOPLE, 7)); + scn.SkipToPhase(Phase.ARCHERY); + + assertEquals(7, scn.GetFreepsArcheryTotal()); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_172_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_172_ErrataTests.java index 8427f6d02..a4081428d 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_172_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_172_ErrataTests.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.GenericCardTestHelper; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier; import org.junit.Test; import java.util.HashMap; @@ -17,12 +18,17 @@ public class Card_01_172_ErrataTests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "51_172"); - // put other cards in here as needed for the test case + put("archer", "51_172"); + put("marksman", "1_176"); + put("commander", "2_49"); + put("bowman", "2_60"); + put("troop", "2_67"); + put("runner", "1_178"); + }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, - GenericCardTestHelper.RulingRing + GenericCardTestHelper.ATARRing ); } @@ -48,7 +54,7 @@ public class Card_01_172_ErrataTests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("archer"); assertEquals("Goblin Archer", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -64,29 +70,63 @@ public class Card_01_172_ErrataTests assertEquals(4, card.getBlueprint().getSiteNumber()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void GoblinArcherTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void GoblinArcherMakesFellowshipArcheryTotalMinus1PerMoriaArcher() 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 archer = scn.GetShadowCard("archer"); + var marksman = scn.GetShadowCard("marksman"); + var commander = scn.GetShadowCard("commander"); + var bowman = scn.GetShadowCard("bowman"); + var troop = scn.GetShadowCard("troop"); + var runner = scn.GetShadowCard("runner"); - var card = scn.GetShadowCard("card"); - scn.ShadowMoveCardToHand(card); - scn.ShadowMoveCharToTable(card); - scn.ShadowMoveCardToSupportArea(card); - scn.ShadowMoveCardToDiscard(card); - scn.ShadowMoveCardsToTopOfDeck(card); + scn.ShadowMoveCharToTable(marksman, commander, bowman, troop, runner); + scn.ShadowMoveCardToHand(archer); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.FREE_PEOPLE, 6)); + scn.SkipToPhase(Phase.ARCHERY); + + assertEquals(6, scn.GetFreepsArcheryTotal()); + scn.FreepsMoveCharToTable(archer); + // -5 for the 5 archers, the runner doesn't count + assertEquals(1, scn.GetFreepsArcheryTotal()); + } + + @Test + public void GoblinArcherAssignmentAbilityPreventsMoriaArchersFromSkirmishing() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var archer = scn.GetShadowCard("archer"); + var marksman = scn.GetShadowCard("marksman"); + var commander = scn.GetShadowCard("commander"); + var bowman = scn.GetShadowCard("bowman"); + var troop = scn.GetShadowCard("troop"); + var runner = scn.GetShadowCard("runner"); + scn.ShadowMoveCharToTable(archer, marksman, commander, bowman, troop, runner); + + var frodo = scn.GetRingBearer(); + + //so frodo doesn't die to all the arrows + scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.SHADOW, -6)); + + scn.StartGame(); + scn.SkipToPhase(Phase.ASSIGNMENT); + + scn.FreepsPassCurrentPhaseAction(); + + assertTrue(scn.ShadowActionAvailable(archer)); + assertEquals(0, scn.GetWoundsOn(archer)); + scn.ShadowUseCardAction(archer); + + assertEquals(1, scn.GetWoundsOn(archer)); + scn.PassAssignmentActions(); + + //Only the runner is now assignable + assertEquals(1, scn.FreepsGetShadowAssignmentTargetCount()); - assertEquals(5, scn.GetTwilight()); } }