diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Sauron-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Sauron-errata.hjson index b1275cf5b..ee6e246f1 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Sauron-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Sauron-errata.hjson @@ -575,6 +575,7 @@ site: 6 effects: { type: trigger + optional: true trigger: { type: winsSkirmish filter: self diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_040_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_040_ErrataTests.java index 3f94fbf58..0d5fff369 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_040_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_040_ErrataTests.java @@ -1,8 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.SitesBlock; +import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; @@ -72,6 +71,10 @@ public class Card_01_040_ErrataTests PhysicalCardImpl elrond = scn.GetFreepsCard("elrond"); assertTrue(elrond.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, elrond.getBlueprint().getSide()); + assertEquals(Culture.ELVEN, elrond.getBlueprint().getCulture()); + assertEquals(CardType.ALLY, elrond.getBlueprint().getCardType()); + assertEquals(Race.ELF, elrond.getBlueprint().getRace()); assertEquals(4, elrond.getBlueprint().getTwilightCost()); assertEquals(8, elrond.getBlueprint().getStrength()); assertEquals(4, elrond.getBlueprint().getVitality()); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_045_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_045_ErrataTests.java index cd3f111bd..066e950d4 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_045_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_045_ErrataTests.java @@ -1,8 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.SitesBlock; +import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; @@ -62,8 +61,11 @@ public class Card_01_045_ErrataTests PhysicalCardImpl galadriel = scn.GetFreepsCard("galadriel"); assertTrue(galadriel.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, galadriel.getBlueprint().getSide()); + assertEquals(Culture.ELVEN, galadriel.getBlueprint().getCulture()); + assertEquals(CardType.ALLY, galadriel.getBlueprint().getCardType()); + assertEquals(Race.ELF, galadriel.getBlueprint().getRace()); assertEquals(3, galadriel.getBlueprint().getTwilightCost()); - assertEquals(3, galadriel.getBlueprint().getStrength()); assertEquals(3, galadriel.getBlueprint().getVitality()); assertEquals(6, galadriel.getBlueprint().getAllyHomeSiteNumbers()[0]); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_108_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_108_ErrataTests.java index 578da415a..d0b48620c 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_108_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_108_ErrataTests.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; -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; @@ -47,6 +47,9 @@ public class Card_01_108_ErrataTests PhysicalCardImpl nostranger = scn.GetFreepsCard("nostranger"); assertTrue(nostranger.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, nostranger.getBlueprint().getSide()); + assertEquals(Culture.GONDOR, nostranger.getBlueprint().getCulture()); + assertEquals(CardType.CONDITION, nostranger.getBlueprint().getCardType()); assertEquals(0, nostranger.getBlueprint().getTwilightCost()); assertTrue(scn.HasKeyword(nostranger, Keyword.STEALTH)); } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_138_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_138_ErrataTests.java index 35c4c1d95..109451b19 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_138_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_138_ErrataTests.java @@ -53,6 +53,8 @@ public class Card_01_138_ErrataTests assertFalse(snows.getBlueprint().isUnique()); assertEquals(2, snows.getBlueprint().getTwilightCost()); + assertEquals(Side.SHADOW, snows.getBlueprint().getSide()); + assertEquals(Culture.ISENGARD, snows.getBlueprint().getCulture()); assertEquals(CardType.CONDITION, snows.getBlueprint().getCardType()); assertEquals(Culture.ISENGARD, snows.getBlueprint().getCulture()); assertTrue(scn.HasKeyword(snows, Keyword.SPELL)); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_248_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_248_ErrataTests.java index 5853f87c5..73df2fc7f 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_248_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_248_ErrataTests.java @@ -3,6 +3,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.Side; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -48,6 +49,7 @@ public class Card_01_248_ErrataTests var forces = scn.GetFreepsCard("forces1"); assertEquals(0, forces.getBlueprint().getTwilightCost()); + assertEquals(Side.SHADOW, forces.getBlueprint().getSide()); assertEquals(CardType.EVENT, forces.getBlueprint().getCardType()); assertEquals(Culture.SAURON, forces.getBlueprint().getCulture()); } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_280_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_280_ErrataTests.java new file mode 100644 index 000000000..55b77d782 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_280_ErrataTests.java @@ -0,0 +1,149 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set01; + +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 org.junit.Test; + +import java.util.HashMap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class Card_01_280_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("lt", "51_280"); + put("filler1", "1_281"); + put("filler2", "1_282"); + + + put("sam", "1_311"); + put("aragorn", "1_89"); + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.FOTRRing + ); + } + + @Test + public void TowerLieutenantStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 1 + * Title: Tower Lieutenant + * Unique: True + * Side: SHADOW + * Culture: Sauron + * Twilight Cost: 4 + * Type: minion + * Subtype: Orc + * Strength: 10 + * Vitality: 3 + * Site Number: 6 + * Game Text: Each time this minion wins a skirmish, you may exhaust a companion (except the Ring-bearer). + * The Free Peoples player may discard 2 cards at random from hand to prevent this. + */ + + //Pre-game setup + var scn = GetScenario(); + + var lt = scn.GetFreepsCard("lt"); + + assertTrue(lt.getBlueprint().isUnique()); + assertEquals(Side.SHADOW, lt.getBlueprint().getSide()); + assertEquals(Culture.SAURON, lt.getBlueprint().getCulture()); + assertEquals(CardType.MINION, lt.getBlueprint().getCardType()); + assertEquals(Race.ORC, lt.getBlueprint().getRace()); + assertEquals(4, lt.getBlueprint().getTwilightCost()); + assertEquals(10, lt.getBlueprint().getStrength()); + assertEquals(3, lt.getBlueprint().getVitality()); + assertEquals(6, lt.getBlueprint().getSiteNumber()); + } + + @Test + public void TowerLieutenantWinningASkirmishExhaustsACompanion() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var lt = scn.GetShadowCard("lt"); + scn.ShadowMoveCharToTable(lt); + + var aragorn = scn.GetFreepsCard("aragorn"); + scn.FreepsMoveCharToTable(aragorn); + scn.FreepsMoveCardToHand("filler1"); + + scn.StartGame(); + scn.SkipToAssignments(); + + scn.FreepsAssignToMinions(aragorn, lt); + scn.FreepsResolveSkirmish(aragorn); + scn.PassCurrentPhaseActions(); + + assertTrue(scn.ShadowHasOptionalTriggerAvailable()); + + assertEquals(1, scn.GetWoundsOn(aragorn)); + scn.ShadowAcceptOptionalTrigger(); + assertEquals(3, scn.GetWoundsOn(aragorn)); + } + + @Test + public void TowerLieutenantOffersChoiceOfNonRBCompanion() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var lt = scn.GetShadowCard("lt"); + scn.ShadowMoveCharToTable(lt); + + var aragorn = scn.GetFreepsCard("aragorn"); + var sam = scn.GetFreepsCard("sam"); + scn.FreepsMoveCharToTable(aragorn, sam); + + scn.StartGame(); + scn.SkipToAssignments(); + + scn.FreepsAssignToMinions(aragorn, lt); + scn.FreepsResolveSkirmish(aragorn); + scn.PassCurrentPhaseActions(); + + assertTrue(scn.ShadowHasOptionalTriggerAvailable()); + + scn.ShadowAcceptOptionalTrigger(); + assertEquals(2, scn.GetShadowCardChoiceCount()); + } + + @Test + public void TowerLieutenantExhaustCanBePreventedByDiscarding2RandomCardsFromHand() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var lt = scn.GetShadowCard("lt"); + scn.ShadowMoveCharToTable(lt); + + var aragorn = scn.GetFreepsCard("aragorn"); + scn.FreepsMoveCharToTable(aragorn); + scn.FreepsMoveCardToHand("filler1", "filler2"); + + scn.StartGame(); + scn.SkipToAssignments(); + + scn.FreepsAssignToMinions(aragorn, lt); + scn.FreepsResolveSkirmish(aragorn); + scn.PassCurrentPhaseActions(); + + assertTrue(scn.ShadowHasOptionalTriggerAvailable()); + scn.ShadowAcceptOptionalTrigger(); + assertTrue(scn.FreepsDecisionAvailable("prevent exhausting")); + assertEquals(2, scn.GetFreepsHandCount()); + assertEquals(0, scn.GetFreepsDiscardCount()); + scn.FreepsChooseYes(); + assertEquals(0, scn.GetFreepsHandCount()); + assertEquals(2, scn.GetFreepsDiscardCount()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_282_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_282_ErrataTests.java index 05d82a66d..096104a0f 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_282_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_282_ErrataTests.java @@ -3,11 +3,11 @@ 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.Side; +import com.gempukku.lotro.common.Zone; 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; @@ -18,10 +18,16 @@ public class Card_01_282_ErrataTests protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { return new GenericCardTestHelper( - new HashMap() + new HashMap<>() {{ - put("card", "51_282"); - // put other cards in here as needed for the test case + put("legacy", "51_282"); + put("legacy2", "51_282"); + put("orc", "1_280"); + put("orc2", "1_271"); + + put("boromir", "1_97"); + put("tale1", "1_24"); + put("tale2", "1_24"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -29,9 +35,7 @@ public class Card_01_282_ErrataTests ); } - // Uncomment both @Test markers below once this is ready to be used - - //@Test + @Test public void TheWeightofaLegacyStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { /** @@ -50,34 +54,67 @@ public class Card_01_282_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl card = scn.GetFreepsCard("card"); - - assertFalse(card.getBlueprint().isUnique()); - assertEquals(Side.SHADOW, card.getBlueprint().getSide()); - assertEquals(Culture.SAURON, card.getBlueprint().getCulture()); - assertEquals(CardType.CONDITION, card.getBlueprint().getCardType()); - //assertEquals(Race.CREATURE, card.getBlueprint().getRace()); - assertTrue(scn.HasKeyword(card, Keyword.SUPPORT_AREA)); - assertEquals(0, card.getBlueprint().getTwilightCost()); - assertEquals(-1, card.getBlueprint().getStrength()); - //assertEquals(, card.getBlueprint().getVitality()); - //assertEquals(, card.getBlueprint().getResistance()); - //assertEquals(Signet., card.getBlueprint().getSignet()); - //assertEquals(, card.getBlueprint().getSiteNumber()); // Change this to getAllyHomeSiteNumbers for allies + var legacy = scn.GetFreepsCard("legacy"); + assertFalse(legacy.getBlueprint().isUnique()); + assertEquals(Side.SHADOW, legacy.getBlueprint().getSide()); + assertEquals(Culture.SAURON, legacy.getBlueprint().getCulture()); + assertEquals(CardType.CONDITION, legacy.getBlueprint().getCardType()); + assertEquals(0, legacy.getBlueprint().getTwilightCost()); + assertEquals(-1, legacy.getBlueprint().getStrength()); } - //@Test - public void TheWeightofaLegacyTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void TheWeightofaLegacyExertsAnOrcToPlay() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var legacy = scn.GetShadowCard("legacy"); + var orc = scn.GetShadowCard("orc"); + scn.ShadowMoveCardToHand(legacy, orc); + + var boromir = scn.GetFreepsCard("boromir"); + scn.FreepsMoveCharToTable(boromir); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); - assertEquals(0, scn.GetTwilight()); + assertFalse(scn.ShadowPlayAvailable(legacy)); + scn.ShadowPlayCard(orc); + + assertEquals(Zone.HAND, legacy.getZone()); + assertEquals(0, scn.GetWoundsOn(orc)); + assertEquals(7, scn.GetStrength(boromir)); + assertTrue(scn.ShadowPlayAvailable(legacy)); + + scn.ShadowPlayCard(legacy); + assertEquals(Zone.ATTACHED, legacy.getZone()); + assertEquals(boromir, legacy.getAttachedTo()); + assertEquals(1, scn.GetWoundsOn(orc)); + assertEquals(6, scn.GetStrength(boromir)); + } + + @Test + public void TheWeightofaLegacyLimit1PerBearer() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + var legacy = scn.GetShadowCard("legacy"); + + var boromir = scn.GetFreepsCard("boromir"); + var tale1 = scn.GetFreepsCard("tale1"); + var tale2 = scn.GetFreepsCard("tale2"); + scn.FreepsMoveCardToHand(tale1, tale2); + scn.FreepsMoveCharToTable(boromir); + scn.AttachCardsTo(boromir, legacy); + + scn.StartGame(); + + assertEquals(6, scn.GetStrength(boromir)); + scn.FreepsPlayCard(tale1); + assertEquals(6, scn.GetStrength(boromir)); + scn.FreepsPlayCard(tale2); + assertEquals(4, scn.GetStrength(boromir)); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_311_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_311_ErrataTests.java index 7231a347f..6f7b52911 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_311_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_311_ErrataTests.java @@ -1,17 +1,15 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Signet; +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 static org.junit.Assert.*; import org.junit.Test; import java.util.HashMap; +import static org.junit.Assert.*; + public class Card_01_311_ErrataTests { protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { @@ -46,15 +44,17 @@ public class Card_01_311_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl sam = scn.GetFreepsCard("sam"); + var sam = scn.GetFreepsCard("sam"); assertTrue(sam.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, sam.getBlueprint().getSide()); + assertEquals(Culture.SHIRE, sam.getBlueprint().getCulture()); + assertEquals(CardType.COMPANION, sam.getBlueprint().getCardType()); + assertEquals(Race.HOBBIT, sam.getBlueprint().getRace()); assertEquals(2, sam.getBlueprint().getTwilightCost()); - assertEquals(3, sam.getBlueprint().getStrength()); assertEquals(4, sam.getBlueprint().getVitality()); assertEquals(Signet.ARAGORN, sam.getBlueprint().getSignet()); - } @Test @@ -62,8 +62,8 @@ public class Card_01_311_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl frodo = scn.GetRingBearer(); - PhysicalCardImpl sam = scn.GetFreepsCard("sam"); + var frodo = scn.GetRingBearer(); + var sam = scn.GetFreepsCard("sam"); scn.FreepsMoveCharToTable(sam); scn.StartGame(); @@ -88,9 +88,9 @@ public class Card_01_311_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl frodo = scn.GetRingBearer(); - PhysicalCardImpl sam = scn.GetFreepsCard("sam"); - PhysicalCardImpl orc = scn.GetShadowCard("orc"); + var frodo = scn.GetRingBearer(); + var sam = scn.GetFreepsCard("sam"); + var orc = scn.GetShadowCard("orc"); scn.FreepsMoveCharToTable(sam); scn.StartGame(); @@ -101,5 +101,7 @@ public class Card_01_311_ErrataTests scn.PassCurrentPhaseActions(); assertTrue(scn.FreepsActionAvailable("Optional Trigger")); + scn.FreepsAcceptOptionalTrigger(); + assertSame(scn.GetRingBearer(), sam); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_313_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_313_ErrataTests.java index e2f2cc423..b63a4f414 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_313_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_313_ErrataTests.java @@ -1,10 +1,8 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.common.Zone; +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.Assert; import org.junit.Test; @@ -52,9 +50,13 @@ public class Card_01_313_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl sting = scn.GetFreepsCard("sting"); + var sting = scn.GetFreepsCard("sting"); assertTrue(sting.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, sting.getBlueprint().getSide()); + assertEquals(Culture.SHIRE, sting.getBlueprint().getCulture()); + assertEquals(CardType.POSSESSION, sting.getBlueprint().getCardType()); + assertTrue(sting.getBlueprint().getPossessionClasses().contains(PossessionClass.HAND_WEAPON)); assertEquals(1, sting.getBlueprint().getTwilightCost()); assertEquals(2, sting.getBlueprint().getStrength()); } @@ -65,9 +67,9 @@ public class Card_01_313_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl frodo = scn.GetRingBearer(); - PhysicalCardImpl sam = scn.GetFreepsCard("sam"); - PhysicalCardImpl sting = scn.GetFreepsCard("sting"); + var frodo = scn.GetRingBearer(); + var sam = scn.GetFreepsCard("sam"); + var sting = scn.GetFreepsCard("sting"); scn.FreepsMoveCharToTable(sam); scn.FreepsMoveCardToHand(sting); @@ -86,8 +88,8 @@ public class Card_01_313_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl frodo = scn.GetRingBearer(); - PhysicalCardImpl sting = scn.GetFreepsCard("sting"); + var frodo = scn.GetRingBearer(); + var sting = scn.GetFreepsCard("sting"); scn.AttachCardsTo(frodo, sting); @@ -104,13 +106,13 @@ public class Card_01_313_ErrataTests public void StingAbilityExertsFrodoAndRevealsFourCards() throws DecisionResultInvalidException, CardNotFoundException { GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl frodo = scn.GetRingBearer(); - PhysicalCardImpl sting = scn.GetFreepsCard("sting"); + var frodo = scn.GetRingBearer(); + var sting = scn.GetFreepsCard("sting"); - PhysicalCardImpl orc1 = scn.GetShadowCard("orc1"); - PhysicalCardImpl orc2 = scn.GetShadowCard("orc2"); - PhysicalCardImpl orc3 = scn.GetShadowCard("orc3"); - PhysicalCardImpl scimitar1 = scn.GetShadowCard("scimitar1"); + var orc1 = scn.GetShadowCard("orc1"); + var orc2 = scn.GetShadowCard("orc2"); + var orc3 = scn.GetShadowCard("orc3"); + var scimitar1 = scn.GetShadowCard("scimitar1"); scn.AttachCardsTo(frodo, sting); @@ -129,12 +131,12 @@ public class Card_01_313_ErrataTests public void StingAbilityRemovesTwilight() throws DecisionResultInvalidException, CardNotFoundException { GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl frodo = scn.GetRingBearer(); - PhysicalCardImpl sting = scn.GetFreepsCard("sting"); - PhysicalCardImpl sam = scn.GetFreepsCard("sam"); - PhysicalCardImpl merry = scn.GetFreepsCard("merry"); + var frodo = scn.GetRingBearer(); + var sting = scn.GetFreepsCard("sting"); + var sam = scn.GetFreepsCard("sam"); + var merry = scn.GetFreepsCard("merry"); - PhysicalCardImpl orc1 = scn.GetShadowCard("orc1"); + var orc1 = scn.GetShadowCard("orc1"); scn.FreepsMoveCharToTable(sam, merry); scn.AttachCardsTo(frodo, sting); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_316_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_316_ErrataTests.java index 3e148d46e..09558070b 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_316_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_316_ErrataTests.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; -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; @@ -44,12 +44,16 @@ public class Card_01_316_ErrataTests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl talent = scn.GetFreepsCard("talent"); + var talent = scn.GetFreepsCard("talent"); assertFalse(talent.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, talent.getBlueprint().getSide()); + assertEquals(Culture.SHIRE, talent.getBlueprint().getCulture()); + assertEquals(CardType.CONDITION, talent.getBlueprint().getCardType()); assertEquals(0, talent.getBlueprint().getTwilightCost()); assertTrue(scn.HasKeyword(talent, Keyword.STEALTH)); + assertFalse(scn.HasKeyword(talent, Keyword.SUPPORT_AREA)); } @Test diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_333_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_333_ErrataTests.java new file mode 100644 index 000000000..4e5a0e539 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_333_ErrataTests.java @@ -0,0 +1,149 @@ +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.Keyword; +import com.gempukku.lotro.common.SitesBlock; +import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import java.util.HashMap; + +import static org.junit.Assert.*; + +public class Card_01_333_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("moors", "51_333"); + put("goblin1", "1_174"); + put("goblin2", "1_174"); + put("goblin3", "1_174"); + }}, + new HashMap<>() {{ + put("site1", "1_319"); + put("moors", "51_333"); + put("site3", "1_337"); + put("site4", "1_343"); + put("site5", "1_349"); + put("site6", "1_350"); + put("site7", "1_353"); + put("site8", "1_356"); + put("site9", "1_360"); + }}, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.FOTRRing + ); + } + + @Test + public void MidgewaterMoorsStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 1 + * Title: Midgewater Moors + * Unique: False + * Side: + * Culture: + * Twilight Cost: 1 + * Type: site + * Subtype: Standard + * Site Number: 2 + * Game Text: Plains. Each time a minion is played, the Free Peoples player must exert a companion or discard a card from hand. + */ + + //Pre-game setup + var scn = GetScenario(); + + var moors = scn.GetFreepsCard("moors"); + + assertFalse(moors.getBlueprint().isUnique()); + assertEquals(CardType.SITE, moors.getBlueprint().getCardType()); + assertTrue(scn.HasKeyword(moors, Keyword.PLAINS)); + assertEquals(1, moors.getBlueprint().getTwilightCost()); + assertEquals(2, moors.getBlueprint().getSiteNumber()); + assertEquals(SitesBlock.FELLOWSHIP, moors.getBlueprint().getSiteBlock()); + } + + @Test + public void MidgewaterMoorsPlayingMinionsWithNoCardsInHandExerts() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var frodo = scn.GetRingBearer(); + + scn.ShadowMoveCardToHand("goblin1", "goblin2", "goblin3"); + + scn.StartGame(); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); + + assertEquals("Midgewater Moors", scn.GetCurrentSite().getBlueprint().getTitle()); + + assertEquals(0, scn.GetWoundsOn(frodo)); + scn.ShadowPlayCard("goblin1"); + assertEquals(1, scn.GetWoundsOn(frodo)); + scn.ShadowPlayCard("goblin2"); + assertEquals(2, scn.GetWoundsOn(frodo)); + scn.ShadowPlayCard("goblin3"); + assertEquals(3, scn.GetWoundsOn(frodo)); + } + + @Test + public void MidgewaterMoorsPlayingMinionsWithNoVitalityDiscardsACardFromHand() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var frodo = scn.GetRingBearer(); + + scn.ShadowMoveCardToHand("goblin1", "goblin2", "goblin3"); + scn.FreepsMoveCardToHand("goblin1", "goblin2", "goblin3"); + + scn.StartGame(); + scn.SetTwilight(10); + scn.AddWoundsToChar(frodo, 3); + scn.FreepsPassCurrentPhaseAction(); + + assertEquals("Midgewater Moors", scn.GetCurrentSite().getBlueprint().getTitle()); + + assertEquals(3, scn.GetFreepsHandCount()); + scn.ShadowPlayCard("goblin1"); + scn.FreepsChooseCard("goblin1"); + assertEquals(2, scn.GetFreepsHandCount()); + scn.ShadowPlayCard("goblin2"); + scn.FreepsChooseCard("goblin2"); + assertEquals(1, scn.GetFreepsHandCount()); + scn.ShadowPlayCard("goblin3"); + assertEquals(0, scn.GetFreepsHandCount()); + } + + @Test + public void MidgewaterMoorsFreepsChoosesExertionOrDiscard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var frodo = scn.GetRingBearer(); + + scn.ShadowMoveCardToHand("goblin1", "goblin2", "goblin3"); + scn.FreepsMoveCardToHand("goblin1", "goblin2", "goblin3"); + + scn.StartGame(); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); + + assertEquals("Midgewater Moors", scn.GetCurrentSite().getBlueprint().getTitle()); + + assertEquals(3, scn.GetFreepsHandCount()); + assertEquals(0, scn.GetWoundsOn(frodo)); + scn.ShadowPlayCard("goblin1"); + assertTrue(scn.FreepsDecisionAvailable("Choose action to perform")); + scn.FreepsChoiceAvailable("Exert a companion"); + scn.FreepsChoiceAvailable("Discard a card from hand"); + } + + +}