more V2 tests

This commit is contained in:
Christian 'ketura' McCarty
2025-04-09 22:11:06 -05:00
parent fc9f1b1f70
commit 7937ee914a
6 changed files with 310 additions and 44 deletions

View File

@@ -94,6 +94,7 @@
}
{
type: addTrigger
optional: false
until: endOfTurn
trigger: {
type: killed

View File

@@ -17,6 +17,7 @@
effects: [
{
type: Activated
text: Discard a {SAURON} tracker to make an {Isengard} tracker strength +2
phase: Skirmish
cost: {
type: Discard
@@ -30,6 +31,7 @@
}
{
type: Activated
text: Exert an {ISENGARD} tracker to make a {SAURON} tracker fierce until regroup
phase: Skirmish
cost: {
type: Exert

View File

@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02;
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_V2_014_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "102_14");
// put other cards in here as needed for the test case
put("remember", "102_14");
put("gandalf", "102_13");
put("theoden", "4_292");
put("vcompanion", "5_122");
put("shadowfax", "8_21");
put("snowmane", "7_250");
put("runner", "1_178");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -44,7 +49,7 @@ public class Card_V2_014_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("remember");
assertEquals("Remember Your Old Strength", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -56,18 +61,122 @@ public class Card_V2_014_Tests
assertEquals(2, card.getBlueprint().getTwilightCost());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void RememberYourOldStrengthTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void RememberYourOldStrengthPumpsTheodenAndValiantCompanionsBy1WhenNotEveryUnboundCompanionIsValiant() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var frodo = scn.GetRingBearer();
var remember = scn.GetFreepsCard("remember");
var gandalf = scn.GetFreepsCard("gandalf");
var theoden = scn.GetFreepsCard("theoden");
var vcompanion = scn.GetFreepsCard("vcompanion");
var shadowfax = scn.GetFreepsCard("shadowfax");
var snowmane = scn.GetFreepsCard("snowmane");
scn.FreepsMoveCardToHand(remember);
scn.FreepsMoveCharToTable(gandalf, theoden, vcompanion);
scn.ShadowMoveCharToTable("runner");
scn.StartGame();
scn.FreepsPlayCard(card);
assertEquals(2, scn.GetTwilight());
scn.SkipToPhase(Phase.MANEUVER);
assertEquals(4, scn.GetStrength(frodo));
assertFalse(scn.hasKeyword(frodo, Keyword.VALIANT));
assertEquals(7, scn.GetStrength(gandalf));
assertFalse(scn.hasKeyword(gandalf, Keyword.VALIANT));
assertEquals(6, scn.GetStrength(theoden));
assertFalse(scn.hasKeyword(theoden, Keyword.VALIANT));
assertEquals(6, scn.GetStrength(vcompanion));
assertTrue(scn.hasKeyword(vcompanion, Keyword.VALIANT));
assertEquals(0, scn.GetWoundsOn(gandalf));
assertTrue(scn.FreepsPlayAvailable(remember));
scn.FreepsPlayCard(remember);
assertEquals(1, scn.GetWoundsOn(gandalf));
//Only Theoden and the valiant companion are pumped
assertEquals(4, scn.GetStrength(frodo));
assertEquals(7, scn.GetStrength(gandalf));
assertEquals(7, scn.GetStrength(theoden));
assertEquals(7, scn.GetStrength(vcompanion));
//Lasts until regroup
scn.SkipToAssignments();
assertEquals(4, scn.GetStrength(frodo));
assertEquals(7, scn.GetStrength(gandalf));
assertEquals(7, scn.GetStrength(theoden));
assertEquals(7, scn.GetStrength(vcompanion));
scn.FreepsDeclineAssignments();
scn.ShadowDeclineAssignments();
assertEquals(Phase.REGROUP, scn.GetCurrentPhase());
assertEquals(4, scn.GetStrength(frodo));
assertEquals(7, scn.GetStrength(gandalf));
assertEquals(6, scn.GetStrength(theoden));
assertEquals(6, scn.GetStrength(vcompanion));
}
@Test
public void RememberYourOldStrengthPumpsTheodenAndValiantCompanionsBy2WhenEveryUnboundCompanionIsValiant() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var frodo = scn.GetRingBearer();
var remember = scn.GetFreepsCard("remember");
var gandalf = scn.GetFreepsCard("gandalf");
var theoden = scn.GetFreepsCard("theoden");
var vcompanion = scn.GetFreepsCard("vcompanion");
var shadowfax = scn.GetFreepsCard("shadowfax");
var snowmane = scn.GetFreepsCard("snowmane");
scn.FreepsMoveCardToHand(remember);
scn.FreepsMoveCharToTable(gandalf, theoden, vcompanion);
scn.AttachCardsTo(gandalf, shadowfax);
scn.AttachCardsTo(theoden, snowmane);
scn.ShadowMoveCharToTable("runner");
scn.StartGame();
scn.SkipToPhase(Phase.MANEUVER);
//Everyone unbound should be mounted and valiant due to Gandalf's game text
assertEquals(4, scn.GetStrength(frodo));
assertFalse(scn.hasKeyword(frodo, Keyword.VALIANT));
assertEquals(7, scn.GetStrength(gandalf));
assertTrue(scn.hasKeyword(gandalf, Keyword.VALIANT));
assertEquals(6, scn.GetStrength(theoden));
assertTrue(scn.hasKeyword(theoden, Keyword.VALIANT));
assertEquals(6, scn.GetStrength(vcompanion));
assertTrue(scn.hasKeyword(vcompanion, Keyword.VALIANT));
assertEquals(0, scn.GetWoundsOn(gandalf));
assertTrue(scn.FreepsPlayAvailable(remember));
scn.FreepsPlayCard(remember);
assertEquals(1, scn.GetWoundsOn(gandalf));
//Only Theoden and the valiant companion are pumped
assertEquals(4, scn.GetStrength(frodo));
assertEquals(9, scn.GetStrength(gandalf));
assertEquals(8, scn.GetStrength(theoden));
assertEquals(8, scn.GetStrength(vcompanion));
//Lasts until regroup
scn.SkipToAssignments();
assertEquals(4, scn.GetStrength(frodo));
assertEquals(9, scn.GetStrength(gandalf));
assertEquals(8, scn.GetStrength(theoden));
assertEquals(8, scn.GetStrength(vcompanion));
scn.FreepsDeclineAssignments();
scn.ShadowDeclineAssignments();
assertEquals(Phase.REGROUP, scn.GetCurrentPhase());
assertEquals(4, scn.GetStrength(frodo));
assertEquals(7, scn.GetStrength(gandalf));
assertEquals(6, scn.GetStrength(theoden));
assertEquals(6, scn.GetStrength(vcompanion));
}
}

View File

@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02;
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,12 @@ public class Card_V2_017_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "102_17");
// put other cards in here as needed for the test case
put("die", "102_17");
put("aragorn", "1_89");
put("theoden", "4_292");
put("vcompanion", "5_122");
put("sauron", "9_48");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -45,7 +48,7 @@ public class Card_V2_017_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("die");
assertEquals("I Will Die as One of Them", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -57,18 +60,77 @@ public class Card_V2_017_Tests
assertEquals(1, card.getBlueprint().getTwilightCost());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void IWillDieasOneofThemTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void IWillDieasPumpsValiantCompanionsUntilRegroupAndEnddOfTurnIfAragornDies() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var frodo = scn.GetRingBearer();
var die = scn.GetFreepsCard("die");
var aragorn = scn.GetFreepsCard("aragorn");
var theoden = scn.GetFreepsCard("theoden");
var vcompanion = scn.GetFreepsCard("vcompanion");
scn.FreepsMoveCardToHand(die);
scn.FreepsMoveCharToTable(aragorn, theoden, vcompanion);
var sauron = scn.GetShadowCard("sauron");
scn.ShadowMoveCharToTable(sauron);
scn.StartGame();
scn.FreepsPlayCard(card);
assertEquals(1, scn.GetTwilight());
scn.SkipToPhase(Phase.MANEUVER);
assertEquals(4, scn.GetStrength(frodo));
assertEquals(8, scn.GetStrength(aragorn));
assertEquals(6, scn.GetStrength(theoden));
assertEquals(6, scn.GetStrength(vcompanion));
assertFalse(scn.hasKeyword(frodo, Keyword.VALIANT));
assertFalse(scn.hasKeyword(aragorn, Keyword.VALIANT));
assertFalse(scn.hasKeyword(theoden, Keyword.VALIANT));
assertTrue(scn.hasKeyword(vcompanion, Keyword.VALIANT));
assertEquals(0, scn.GetWoundsOn(aragorn));
assertTrue(scn.FreepsPlayAvailable(die));
scn.FreepsPlayCard(die);
assertEquals(3, scn.GetWoundsOn(aragorn));
assertEquals(4, scn.GetStrength(frodo));
assertEquals(8, scn.GetStrength(aragorn));
assertEquals(6, scn.GetStrength(theoden));
assertEquals(8, scn.GetStrength(vcompanion));
scn.SkipToAssignments();
scn.FreepsAssignToMinions(aragorn, sauron);
scn.FreepsResolveSkirmish(aragorn);
scn.PassCurrentPhaseActions();
scn.FreepsResolveRuleFirst();
assertEquals(Zone.DEAD, aragorn.getZone());
assertEquals(4, scn.GetStrength(frodo));
assertEquals(8, scn.GetStrength(aragorn));
assertEquals(6, scn.GetStrength(theoden));
//+2 until regroup, +1 until end of turn
assertEquals(9, scn.GetStrength(vcompanion));
scn.AddWoundsToChar(sauron, 5); //we're done with him
scn.PassCurrentPhaseActions();
assertEquals(Phase.REGROUP, scn.GetCurrentPhase());
assertEquals(4, scn.GetStrength(frodo));
assertEquals(8, scn.GetStrength(aragorn));
assertEquals(6, scn.GetStrength(theoden));
//+2 until regroup wore off, +1 until end of turn
assertEquals(7, scn.GetStrength(vcompanion));
scn.PassCurrentPhaseActions();
scn.FreepsChooseToMove();
scn.SkipToPhase(Phase.REGROUP);
assertEquals(4, scn.GetStrength(frodo));
assertEquals(8, scn.GetStrength(aragorn));
assertEquals(6, scn.GetStrength(theoden));
//+2 until regroup wore off, +1 until end of turn
assertEquals(7, scn.GetStrength(vcompanion));
}
}

View File

@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02;
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,9 @@ public class Card_V2_018_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "102_18");
// put other cards in here as needed for the test case
put("menu", "102_18");
put("uruk", "2_47");
put("orc", "1_261");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -45,7 +45,7 @@ public class Card_V2_018_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("menu");
assertEquals("Back on the Menu", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -57,18 +57,68 @@ public class Card_V2_018_Tests
assertEquals(0, card.getBlueprint().getTwilightCost());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void BackontheMenuTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void BackontheMenuDiscardsASauronTrackerToMakeAnIsengardTrackerStrengthPlus2() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var menu = scn.GetShadowCard("menu");
var uruk = scn.GetShadowCard("uruk");
var orc = scn.GetShadowCard("orc");
scn.ShadowMoveCardToSupportArea(menu);
scn.ShadowMoveCharToTable(uruk, orc);
var frodo = scn.GetRingBearer();
scn.StartGame();
scn.FreepsPlayCard(card);
assertEquals(0, scn.GetTwilight());
scn.SkipToAssignments();
scn.FreepsAssignToMinions(frodo, uruk);
scn.ShadowDeclineAssignments();
scn.FreepsResolveSkirmish(frodo);
scn.FreepsPassCurrentPhaseAction();
assertEquals(7, scn.GetStrength(uruk));
assertEquals(Zone.SHADOW_CHARACTERS, orc.getZone());
assertTrue(scn.ShadowActionAvailable("Discard"));
scn.ShadowUseCardAction("Discard");
assertEquals(9, scn.GetStrength(uruk));
assertEquals(Zone.DISCARD, orc.getZone());
}
@Test
public void BackontheMenuExertsAnIsengardTrackerToMakeASauronTrackerFierce() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var menu = scn.GetShadowCard("menu");
var uruk = scn.GetShadowCard("uruk");
var orc = scn.GetShadowCard("orc");
scn.ShadowMoveCardToSupportArea(menu);
scn.ShadowMoveCharToTable(uruk, orc);
var frodo = scn.GetRingBearer();
scn.StartGame();
scn.SkipToAssignments();
scn.FreepsAssignToMinions(frodo, orc);
scn.ShadowDeclineAssignments();
scn.FreepsResolveSkirmish(frodo);
scn.FreepsPassCurrentPhaseAction();
assertEquals(0, scn.GetWoundsOn(uruk));
assertFalse(scn.hasKeyword(orc, Keyword.FIERCE));
assertTrue(scn.ShadowActionAvailable("Exert"));
scn.ShadowUseCardAction("Exert");
assertEquals(1, scn.GetWoundsOn(uruk));
assertTrue(scn.hasKeyword(orc, Keyword.FIERCE));
//Have to make sure fierce persists or it won't matter lol
scn.PassCurrentPhaseActions();
scn.FreepsDeclineAssignments(); //ring
assertEquals(Phase.ASSIGNMENT, scn.GetCurrentPhase());
}
}

View File

@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02;
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,9 @@ public class Card_V2_019_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "102_19");
// put other cards in here as needed for the test case
put("deathseeker", "102_19");
put("savage", "1_151");
put("machine", "5_60");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -49,7 +49,7 @@ public class Card_V2_019_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("deathseeker");
assertEquals("Berserk Deathseeker", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -66,18 +66,60 @@ public class Card_V2_019_Tests
assertEquals(5, card.getBlueprint().getSiteNumber());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void BerserkDeathseekerTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void BerserkDeathseekerIsStrenghtPlus1ForEachWoundOnEachCharacterInSkirmish() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
var deathseeker = scn.GetShadowCard("deathseeker");
var savage = scn.GetShadowCard("savage");
var machine = scn.GetShadowCard("machine");
scn.ShadowMoveCharToTable(deathseeker, savage);
scn.ShadowMoveCardToSupportArea(machine);
var frodo = scn.GetRingBearer();
scn.StartGame();
scn.FreepsPlayCard(card);
assertEquals(5, scn.GetTwilight());
scn.addWounds(frodo, 1);
scn.addWounds(deathseeker, 1);
scn.addWounds(savage, 1);
//not in skirmish, should be base
assertEquals(10, scn.getStrength(deathseeker));
scn.SkipToAssignments();
scn.FreepsDeclineAssignments();
scn.ShadowAssignToMinions(frodo, deathseeker, savage);
scn.FreepsResolveSkirmish(frodo);
//Base strength of 10, +1 strength for the single wound on each of itself, the savage, and frodo
assertEquals(13, scn.getStrength(deathseeker));
}
@Test
public void BerserkDeathseekerDyingAdds3TokensToMachine() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var deathseeker = scn.GetShadowCard("deathseeker");
var machine = scn.GetShadowCard("machine");
scn.ShadowMoveCharToTable(deathseeker);
scn.ShadowMoveCardToSupportArea(machine);
scn.StartGame();
scn.addWounds(deathseeker, 2);
assertEquals(1, scn.GetVitality(deathseeker));
assertEquals(0, scn.GetCultureTokensOn(machine));
assertEquals(Zone.SHADOW_CHARACTERS, deathseeker.getZone());
scn.addWounds(deathseeker, 1);
scn.FreepsPassCurrentPhaseAction(); //to get the game to realize he's died
assertEquals(3, scn.GetCultureTokensOn(machine));
assertEquals(Zone.DISCARD, deathseeker.getZone());
}
}