Helpless errata, Pale Blade, Band of Wild Men unit tests

This commit is contained in:
Christian 'ketura' McCarty
2025-03-23 18:39:34 -05:00
parent 75818746f6
commit e3d3ce6843
3 changed files with 213 additions and 33 deletions

View File

@@ -3,7 +3,6 @@ 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;
@@ -18,8 +17,14 @@ public class Card_01_221_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "1_221");
// put other cards in here as needed for the test case
put("paleblade", "1_221");
put("twk", "1_237");
put("gimli", "1_13");
put("condition1", "1_16");
put("condition2", "1_21");
put("condition3", "2_1");
put("condition4", "2_9");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -45,7 +50,7 @@ public class Card_01_221_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("paleblade");
assertEquals("The Pale Blade", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -58,18 +63,56 @@ public class Card_01_221_Tests
assertEquals(3, card.getBlueprint().getStrength());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void ThePaleBladeTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void ThePaleBladeCanBeTriggeredMultipleTimesFromSameVictory() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var twk = scn.GetShadowCard("twk");
var paleblade = scn.GetShadowCard("paleblade");
scn.ShadowMoveCharToTable(twk);
scn.AttachCardsTo(twk, paleblade);
var gimli = scn.GetFreepsCard("gimli");
var condition1 = scn.GetFreepsCard("condition1");
var condition2 = scn.GetFreepsCard("condition2");
var condition3 = scn.GetFreepsCard("condition3");
var condition4 = scn.GetFreepsCard("condition4");
scn.FreepsMoveCharToTable(gimli);
scn.FreepsMoveCardToSupportArea(condition1, condition2, condition3, condition4);
scn.StartGame();
scn.FreepsPlayCard(card);
scn.SkipToAssignments();
scn.FreepsAssignToMinions(gimli, twk);
scn.FreepsResolveSkirmish(gimli);
assertEquals(Zone.SUPPORT, condition1.getZone());
assertEquals(Zone.SUPPORT, condition2.getZone());
assertEquals(Zone.SUPPORT, condition3.getZone());
assertEquals(Zone.SUPPORT, condition4.getZone());
assertEquals(0, scn.GetWoundsOn(twk));
scn.PassCurrentPhaseActions();
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertEquals(1, scn.GetWoundsOn(twk));
scn.ShadowChooseCard(condition1);
assertEquals(Zone.DISCARD, condition1.getZone());
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertEquals(2, scn.GetWoundsOn(twk));
scn.ShadowChooseCard(condition2);
assertEquals(Zone.DISCARD, condition2.getZone());
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertEquals(3, scn.GetWoundsOn(twk));
scn.ShadowChooseCard(condition3);
assertEquals(Zone.DISCARD, condition3.getZone());
assertFalse(scn.ShadowHasOptionalTriggerAvailable());
assertEquals(Phase.ASSIGNMENT, scn.GetCurrentPhase());
assertEquals(2, scn.GetTwilight());
}
}

View File

@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.official.set04;
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;
@@ -18,8 +17,10 @@ public class Card_04_004_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "4_4");
// put other cards in here as needed for the test case
put("band", "4_4");
put("sam", "1_311");
put("gimli", "1_13");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -47,7 +48,7 @@ public class Card_04_004_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("band");
assertEquals("Band of Wild Men", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -62,18 +63,75 @@ public class Card_04_004_Tests
assertEquals(3, card.getBlueprint().getSiteNumber());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void BandofWildMenTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void BandofWildMenBecomesFierceIfWinningSkirmishNormally() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var band = scn.GetShadowCard("band");
scn.ShadowMoveCharToTable(band);
var gimli = scn.GetFreepsCard("gimli");
scn.FreepsMoveCharToTable(gimli);
scn.StartGame();
scn.FreepsPlayCard(card);
scn.SkipToAssignments();
scn.FreepsAssignToMinions(gimli, band);
scn.FreepsResolveSkirmish(gimli);
scn.PassCurrentPhaseActions();
assertEquals(5, scn.GetTwilight());
assertFalse(scn.hasKeyword(band, Keyword.FIERCE));
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertTrue(scn.hasKeyword(band, Keyword.FIERCE));
}
@Test
public void BandofWildMenBecomesFierceIfWinningSkirmishWithOverwhelm() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var band = scn.GetShadowCard("band");
scn.ShadowMoveCharToTable(band);
var sam = scn.GetFreepsCard("sam");
scn.FreepsMoveCharToTable(sam);
scn.StartGame();
scn.SkipToAssignments();
scn.FreepsAssignToMinions(sam, band);
scn.FreepsResolveSkirmish(sam);
scn.PassCurrentPhaseActions();
assertFalse(scn.hasKeyword(band, Keyword.FIERCE));
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertTrue(scn.hasKeyword(band, Keyword.FIERCE));
}
@Test
public void BandofWildMenBecomesFierceIfWinningSkirmishKillsOpponentWithWound() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var band = scn.GetShadowCard("band");
scn.ShadowMoveCharToTable(band);
var gimli = scn.GetFreepsCard("gimli");
scn.FreepsMoveCharToTable(gimli);
scn.StartGame();
scn.AddWoundsToChar(gimli, 2);
scn.SkipToAssignments();
scn.FreepsAssignToMinions(gimli, band);
scn.FreepsResolveSkirmish(gimli);
scn.PassCurrentPhaseActions();
assertFalse(scn.hasKeyword(band, Keyword.FIERCE));
assertTrue(scn.ShadowHasOptionalTriggerAvailable());
scn.ShadowAcceptOptionalTrigger();
assertTrue(scn.hasKeyword(band, Keyword.FIERCE));
}
}

View File

@@ -3,7 +3,6 @@ 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.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
@@ -18,8 +17,10 @@ public class Card_02_076_ErrataTests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "52_76");
// put other cards in here as needed for the test case
put("sam", "1_311");
put("helpless", "52_76");
put("toto", "10_68");
put("nelya","1_233");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -45,7 +46,7 @@ public class Card_02_076_ErrataTests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("helpless");
assertEquals("Helpless", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -57,18 +58,96 @@ public class Card_02_076_ErrataTests
assertEquals(1, card.getBlueprint().getTwilightCost());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void HelplessTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void HelplessBlocksSpecialAbilities() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var frodo = scn.GetRingBearer();
var sam = scn.GetFreepsCard("sam");
scn.FreepsMoveCharToTable(sam);
var helpless = scn.GetShadowCard("helpless");
var nelya = scn.GetShadowCard("nelya");
scn.ShadowAttachCardsTo(sam, helpless);
scn.ShadowMoveCharToTable(nelya);
scn.StartGame();
scn.FreepsPlayCard(card);
//The Fellowship burden-removing special ability should be blocked
assertFalse(scn.FreepsActionAvailable(sam));
assertEquals(1, scn.GetTwilight());
scn.SkipToAssignments();
scn.FreepsAssignToMinions(frodo, nelya);
scn.FreepsResolveSkirmish(frodo);
scn.PassCurrentPhaseActions();
//The Response ring-bearer special ability should also be blocked
assertFalse(scn.FreepsHasOptionalTriggerAvailable());
}
@Test
public void HelplessDoesNotBlockAbilitiesWhileInSupportArea() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var frodo = scn.GetRingBearer();
var sam = scn.GetFreepsCard("sam");
scn.FreepsMoveCharToTable(sam);
var helpless = scn.GetShadowCard("helpless");
var nelya = scn.GetShadowCard("nelya");
scn.ShadowMoveCardToSupportArea(helpless);
scn.ShadowMoveCharToTable(nelya);
scn.StartGame();
//The Fellowship burden-removing special ability should NOT be blocked
assertTrue(scn.FreepsActionAvailable(sam));
scn.SkipToAssignments();
scn.FreepsAssignToMinions(frodo, nelya);
scn.FreepsResolveSkirmish(frodo);
scn.PassCurrentPhaseActions();
//The Response ring-bearer special ability should also NOT be blocked
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
}
@Test
public void HelplessManeuverActionTransfersToRingBoundCompanion() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var frodo = scn.GetRingBearer();
var sam = scn.GetFreepsCard("sam");
scn.FreepsMoveCharToTable(sam);
var helpless = scn.GetShadowCard("helpless");
var toto = scn.GetShadowCard("toto");
var nelya = scn.GetShadowCard("nelya");
scn.ShadowMoveCardToSupportArea(helpless);
scn.ShadowMoveCharToTable(toto, nelya);
scn.StartGame();
scn.SkipToPhase(Phase.MANEUVER);
scn.FreepsPassCurrentPhaseAction();
assertTrue(scn.ShadowActionAvailable(helpless));
assertEquals(0, scn.GetWoundsOn(toto));
assertEquals(0, scn.GetWoundsOn(nelya));
assertEquals(Zone.SUPPORT, helpless.getZone());
scn.ShadowUseCardAction(helpless);
assertEquals(2, scn.ShadowGetCardChoiceCount());
scn.ShadowChooseCard(toto);
assertEquals(1, scn.GetWoundsOn(toto));
assertEquals(0, scn.GetWoundsOn(nelya));
//Can go on either Sam or Frodo
assertEquals(2, scn.ShadowGetCardChoiceCount());
scn.ShadowChooseCard(frodo);
assertEquals(Zone.ATTACHED, helpless.getZone());
assertEquals(frodo, helpless.getAttachedTo());
}
}