From 10e6e795328b4339777121927a9438d0113a5448 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Sat, 17 Jun 2023 18:36:31 -0500 Subject: [PATCH] lurtz's sword tests --- .../errata/set02/Card_02_032_ErrataTests.java | 3 +- .../errata/set02/Card_02_043_ErrataTests.java | 199 ++++++++++++++++++ 2 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_043_ErrataTests.java diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_032_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_032_ErrataTests.java index a03785143..8d7bce29b 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_032_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_032_ErrataTests.java @@ -42,7 +42,8 @@ public class Card_02_032_ErrataTests * Subtype: Hand Weapon * Strength: 1 * Game Text: Bearer must be a ranger. This weapon may be borne in addition to 1 other hand weapon. - * Skirmish: Make bearer strength +2 and damage +1 while skirmishing a Nazgûl until the regroup phase (limit once per turn). Discard this possession at the start of the regroup phase. + * Skirmish: Make bearer strength +2 and damage +1 while skirmishing a Nazgûl until the regroup phase + * (limit once per turn). Discard this possession at the start of the regroup phase. */ //Pre-game setup diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_043_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_043_ErrataTests.java new file mode 100644 index 000000000..3fb4b83e3 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_043_ErrataTests.java @@ -0,0 +1,199 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set02; + +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_02_043_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("aragorn", "1_89"); + + put("sword", "52_43"); + put("uruk", "1_154"); + put("captain", "2_46"); + put("lurtz", "1_127"); + put("chaff1", "1_155"); + put("chaff2", "1_156"); + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.FOTRRing + ); + } + + @Test + public void LurtzsSwordStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 2 + * Title: Lurtz's Sword + * Unique: True + * Side: FREE_PEOPLE + * Culture: Isengard + * Twilight Cost: 1 + * Type: possession + * Subtype: Hand Weapon + * Strength: 2 + * Game Text: Bearer must be a unique Uruk-hai. + * If bearer is Lurtz, he is damage +1. + * Each time bearer wins a skirmish, the Free Peoples player must wound a companion or discard the top 3 cards of their draw deck. + */ + + //Pre-game setup + var scn = GetScenario(); + + var sword = scn.GetFreepsCard("sword"); + + assertTrue(sword.getBlueprint().isUnique()); + assertEquals(Side.SHADOW, sword.getBlueprint().getSide()); + assertEquals(Culture.ISENGARD, sword.getBlueprint().getCulture()); + assertEquals(CardType.POSSESSION, sword.getBlueprint().getCardType()); + assertTrue(sword.getBlueprint().getPossessionClasses().contains(PossessionClass.HAND_WEAPON)); + assertEquals(1, sword.getBlueprint().getTwilightCost()); + assertEquals(2, sword.getBlueprint().getStrength()); + } + + @Test + public void LurtzsSwordPlaysOnUniqueUruk() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var uruk = scn.GetShadowCard("uruk"); + var lurtz = scn.GetShadowCard("lurtz"); + var captain = scn.GetShadowCard("captain"); + scn.ShadowMoveCharToTable(uruk, lurtz, captain); + var sword = scn.GetShadowCard("sword"); + scn.ShadowMoveCardToHand(sword); + + scn.StartGame(); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); + + assertTrue(scn.ShadowPlayAvailable(sword)); + assertEquals(Zone.HAND, sword.getZone()); + scn.ShadowPlayCard(sword); + assertEquals(2, scn.GetShadowCardChoiceCount()); + scn.ShadowChooseCard(captain); + assertEquals(Zone.ATTACHED, sword.getZone()); + assertEquals(captain, sword.getAttachedTo()); + } + + @Test + public void LurtzsSwordSkirmishWinCanCauseWound() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var aragorn = scn.GetFreepsCard("aragorn"); + scn.FreepsMoveCharToTable(aragorn); + + var captain = scn.GetShadowCard("captain"); + scn.ShadowMoveCharToTable(captain); + var sword = scn.GetShadowCard("sword"); + scn.ShadowAttachCardsTo(captain, sword); + + scn.StartGame(); + scn.AddWoundsToChar(aragorn, 1); + scn.FreepsPassCurrentPhaseAction(); + + scn.SkipToAssignments(); + scn.FreepsAssignToMinions(aragorn, captain); + scn.FreepsResolveSkirmish(aragorn); + scn.PassCurrentPhaseActions(); + scn.FreepsResolveActionOrder("skirmish"); + + assertTrue(scn.FreepsAnyDecisionsAvailable()); + assertEquals(3, scn.GetWoundsOn(aragorn)); + assertEquals(Zone.FREE_CHARACTERS, aragorn.getZone()); + scn.FreepsChooseMultipleChoiceOption("wound"); + // both aragorn and frodo are valid targets, even tho aragorn is exhausted + assertEquals(2, scn.GetFreepsCardChoiceCount()); + scn.FreepsChooseCard(aragorn); + assertEquals(Zone.DEAD, aragorn.getZone()); + } + + @Test + public void LurtzsSwordSkirmishWinCanCauseTopDeckDiscard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var aragorn = scn.GetFreepsCard("aragorn"); + scn.FreepsMoveCharToTable(aragorn); + + var captain = scn.GetShadowCard("captain"); + scn.ShadowMoveCharToTable(captain); + var sword = scn.GetShadowCard("sword"); + scn.ShadowAttachCardsTo(captain, sword); + + scn.StartGame(); + scn.FreepsPassCurrentPhaseAction(); + + scn.SkipToAssignments(); + scn.FreepsAssignToMinions(aragorn, captain); + scn.FreepsResolveSkirmish(aragorn); + scn.PassCurrentPhaseActions(); + scn.FreepsResolveActionOrder("skirmish"); + + assertTrue(scn.FreepsAnyDecisionsAvailable()); + assertEquals(2, scn.GetWoundsOn(aragorn)); + assertEquals(6, scn.GetFreepsDeckCount()); + assertEquals(0, scn.GetFreepsDiscardCount()); + scn.FreepsChooseMultipleChoiceOption("discard"); + assertEquals(2, scn.GetWoundsOn(aragorn)); + assertEquals(3, scn.GetFreepsDeckCount()); + assertEquals(3, scn.GetFreepsDiscardCount()); + } + + @Test + public void LurtzsSwordGrantsDamageBonusToLurtz() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var lurtz = scn.GetShadowCard("lurtz"); + scn.ShadowMoveCharToTable(lurtz); + var sword = scn.GetShadowCard("sword"); + scn.ShadowMoveCardToHand(sword); + + scn.StartGame(); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); + + assertTrue(scn.ShadowPlayAvailable(sword)); + assertTrue(scn.HasKeyword(lurtz, Keyword.DAMAGE)); + assertEquals(1, scn.GetKeywordCount(lurtz, Keyword.DAMAGE)); + scn.ShadowPlayCard(sword); + assertEquals(2, scn.GetKeywordCount(lurtz, Keyword.DAMAGE)); + } + + @Test + public void LurtzsSwordDoesNotGrantDamageBonusToNonLurtzUruk() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var captain = scn.GetShadowCard("captain"); + scn.ShadowMoveCharToTable(captain); + var sword = scn.GetShadowCard("sword"); + scn.ShadowMoveCardToHand(sword); + + scn.StartGame(); + scn.SetTwilight(10); + scn.FreepsPassCurrentPhaseAction(); + + assertTrue(scn.ShadowPlayAvailable(sword)); + assertTrue(scn.HasKeyword(captain, Keyword.DAMAGE)); + assertEquals(1, scn.GetKeywordCount(captain, Keyword.DAMAGE)); + scn.ShadowPlayCard(sword); + assertEquals(1, scn.GetKeywordCount(captain, Keyword.DAMAGE)); + } +}