Moved older AtTest entries into existing card-specific test beds. I'm reluctant to delete the older ones even tho they overlap quite a bit, partially because they poke at parts of the system I'm mostly unaware of.

This commit is contained in:
Christian 'ketura' McCarty
2022-12-31 02:51:14 -06:00
parent 0ff75b80e5
commit efa6547367
3 changed files with 165 additions and 174 deletions

View File

@@ -20,128 +20,9 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
public class IndividualCardAtTest extends AbstractAtTest {
@Test
public void dwarvenAxeDoesNotFreeze() throws DecisionResultInvalidException, CardNotFoundException {
Map<String, Collection<String>> extraCards = new HashMap<>();
initializeSimplestGame(extraCards);
PhysicalCardImpl gimli = new PhysicalCardImpl(100, "1_13", P1, _cardLibrary.getLotroCardBlueprint("1_13"));
PhysicalCardImpl dwarvenAxe = new PhysicalCardImpl(101, "1_9", P1, _cardLibrary.getLotroCardBlueprint("1_9"));
PhysicalCardImpl goblinRunner = new PhysicalCardImpl(102, "1_178", P2, _cardLibrary.getLotroCardBlueprint("1_178"));
PhysicalCardImpl cardInDeck = new PhysicalCardImpl(103, "1_178", P2, _cardLibrary.getLotroCardBlueprint("1_178"));
skipMulligans();
_game.getGameState().addCardToZone(_game, gimli, Zone.FREE_CHARACTERS);
_game.getGameState().attachCard(_game, dwarvenAxe, gimli);
_game.getGameState().addCardToZone(_game, goblinRunner, Zone.HAND);
_game.getGameState().putCardOnTopOfDeck(cardInDeck);
// End fellowship phase
assertEquals(Phase.FELLOWSHIP, _game.getGameState().getCurrentPhase());
playerDecided(P1, "");
// Play Goblin Runner
assertEquals(Phase.SHADOW, _game.getGameState().getCurrentPhase());
int twilight = _game.getGameState().getTwilightPool();
playerDecided(P2, "0");
// Twilight is -1-2+2 (cost, roaming, effect)
assertEquals(twilight - 1 - 2 + 2, _game.getGameState().getTwilightPool());
// End shadow phase
playerDecided(P2, "");
// End maneuver phase
playerDecided(P1, "");
playerDecided(P2, "");
// End archery phase
playerDecided(P1, "");
playerDecided(P2, "");
// End assignment phase
playerDecided(P1, "");
playerDecided(P2, "");
// Assign
playerDecided(P1, gimli.getCardId() + " " + goblinRunner.getCardId());
// Start skirmish
playerDecided(P1, String.valueOf(gimli.getCardId()));
// End skirmish phase
playerDecided(P1, "");
playerDecided(P2, "");
final AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.ACTION_CHOICE, awaitingDecision.getDecisionType());
validateContents(new String[]{"1_9", "rules"}, (String[]) awaitingDecision.getDecisionParameters().get("blueprintId"));
playerDecided(P1, "0");
assertEquals(Phase.REGROUP, _game.getGameState().getCurrentPhase());
assertEquals(Zone.DISCARD, goblinRunner.getZone());
assertEquals(Zone.DISCARD, cardInDeck.getZone());
}
@Test
public void playDiscountAsfalothOnArwen() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<>();
extraCards.put(P1, Arrays.asList("1_30", "1_31"));
initializeSimplestGame(extraCards);
// Play first character
AwaitingDecision firstCharacterDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, firstCharacterDecision.getDecisionType());
validateContents(new String[]{"1_30"}, ((String[]) firstCharacterDecision.getDecisionParameters().get("blueprintId")));
playerDecided(P1, getArbitraryCardId(firstCharacterDecision, "1_30"));
skipMulligans();
PhysicalCard asfaloth = _game.getGameState().getHand(P1).get(0);
final AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, awaitingDecision.getDecisionType());
validateContents(new String[]{"" + asfaloth.getCardId()}, (String[]) awaitingDecision.getDecisionParameters().get("cardId"));
assertEquals(0, _game.getGameState().getTwilightPool());
playerDecided(P1, "0");
assertEquals(0, _game.getGameState().getTwilightPool());
assertEquals(Zone.ATTACHED, asfaloth.getZone());
}
@Test
public void playDiscountAsfalothOnOtherElf() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<>();
extraCards.put(P1, Arrays.asList("1_51", "1_31"));
initializeSimplestGame(extraCards);
// Play first character
AwaitingDecision firstCharacterDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, firstCharacterDecision.getDecisionType());
validateContents(new String[]{"1_51"}, ((String[]) firstCharacterDecision.getDecisionParameters().get("blueprintId")));
playerDecided(P1, getArbitraryCardId(firstCharacterDecision, "1_51"));
skipMulligans();
PhysicalCard asfaloth = _game.getGameState().getHand(P1).get(0);
final AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, awaitingDecision.getDecisionType());
validateContents(new String[]{"" + asfaloth.getCardId()}, (String[]) awaitingDecision.getDecisionParameters().get("cardId"));
assertEquals(0, _game.getGameState().getTwilightPool());
playerDecided(P1, "0");
assertEquals(2, _game.getGameState().getTwilightPool());
assertEquals(Zone.ATTACHED, asfaloth.getZone());
}
@Test
public void bilboRingBearerWithConsortingAndMorgulBrute() throws DecisionResultInvalidException, CardNotFoundException {
@@ -1406,59 +1287,4 @@ public class IndividualCardAtTest extends AbstractAtTest {
assertEquals(Zone.DISCARD, morgulBlade.getZone());
assertEquals(Zone.ATTACHED, bladeTip.getZone());
}
@Test
public void FarinStrengthBoostWhileSkirmishingOrc() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
initializeSimplestGame();
// Farin, Dwarven Emissary; 5 strength, "while skirmishing an Orc, Farin is strength +2"
final PhysicalCardImpl farin = createCard(P1, "1_11");
_game.getGameState().addCardToZone(_game, farin, Zone.FREE_CHARACTERS);
//Orc Scouting Band, 8 strength
final PhysicalCardImpl orc = createCard(P2, "1_270");
_game.getGameState().addCardToZone(_game, orc, Zone.SHADOW_CHARACTERS);
skipMulligans();
_game.getGameState().setTwilight(10);
playerDecided(P1, "");
// Pass in shadow
playerDecided(P2, "");
//Pass in maneuver
playerDecided(P1, "");
playerDecided(P2, "");
//Pass in archery
playerDecided(P1, "");
playerDecided(P2, "");
//Pass in assignment
playerDecided(P1, "");
playerDecided(P2, "");
// assign Farin to an Orc
playerDecided(P1, farin.getCardId() + " " + orc.getCardId());
//Farin's strength is still the base of 5
assertEquals(5, _game.getModifiersQuerying().getStrength(_game, farin));
//Choose to resolve Farin's skirmish
playerDecided(P1, "" + farin.getCardId());
//This test fails. Farin has two instances of the ModifyStrength modifier applied for some reason,
// which puts him at 9 strength instead of the expected 7.
assertEquals(5 + 2, _game.getModifiersQuerying().getStrength(_game, farin));
playerDecided(P1, "");
playerDecided(P2, "");
// If the above test is commented out, then Farin wins the skirmish and applies skirmish wounds to the Orc
assertEquals(1, _game.getGameState().getWounds(farin));
assertEquals(0, _game.getGameState().getWounds(orc));
}
}

View File

@@ -1,12 +1,18 @@
package com.gempukku.lotro.cards.official.set01;
import com.gempukku.lotro.at.AbstractAtTest;
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.AwaitingDecision;
import com.gempukku.lotro.logic.decisions.AwaitingDecisionType;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.*;
@@ -157,4 +163,78 @@ public class Card_01_009_Tests
assertEquals(1, scn.GetShadowDeckCount());
assertEquals(3, scn.GetShadowDiscardCount());//2 dead runners, and a card discarded from the deck
}
@Test
public void Legacy_dwarvenAxeDoesNotFreeze() throws DecisionResultInvalidException, CardNotFoundException {
var legacy = new LegacyAtTest();
legacy.dwarvenAxeDoesNotFreeze();
}
public static class LegacyAtTest extends AbstractAtTest {
public void dwarvenAxeDoesNotFreeze() throws DecisionResultInvalidException, CardNotFoundException {
Map<String, Collection<String>> extraCards = new HashMap<>();
initializeSimplestGame(extraCards);
PhysicalCardImpl gimli = new PhysicalCardImpl(100, "1_13", P1, _cardLibrary.getLotroCardBlueprint("1_13"));
PhysicalCardImpl dwarvenAxe = new PhysicalCardImpl(101, "1_9", P1, _cardLibrary.getLotroCardBlueprint("1_9"));
PhysicalCardImpl goblinRunner = new PhysicalCardImpl(102, "1_178", P2, _cardLibrary.getLotroCardBlueprint("1_178"));
PhysicalCardImpl cardInDeck = new PhysicalCardImpl(103, "1_178", P2, _cardLibrary.getLotroCardBlueprint("1_178"));
skipMulligans();
_game.getGameState().addCardToZone(_game, gimli, Zone.FREE_CHARACTERS);
_game.getGameState().attachCard(_game, dwarvenAxe, gimli);
_game.getGameState().addCardToZone(_game, goblinRunner, Zone.HAND);
_game.getGameState().putCardOnTopOfDeck(cardInDeck);
// End fellowship phase
assertEquals(Phase.FELLOWSHIP, _game.getGameState().getCurrentPhase());
playerDecided(P1, "");
// Play Goblin Runner
assertEquals(Phase.SHADOW, _game.getGameState().getCurrentPhase());
int twilight = _game.getGameState().getTwilightPool();
playerDecided(P2, "0");
// Twilight is -1-2+2 (cost, roaming, effect)
assertEquals(twilight - 1 - 2 + 2, _game.getGameState().getTwilightPool());
// End shadow phase
playerDecided(P2, "");
// End maneuver phase
playerDecided(P1, "");
playerDecided(P2, "");
// End archery phase
playerDecided(P1, "");
playerDecided(P2, "");
// End assignment phase
playerDecided(P1, "");
playerDecided(P2, "");
// Assign
playerDecided(P1, gimli.getCardId() + " " + goblinRunner.getCardId());
// Start skirmish
playerDecided(P1, String.valueOf(gimli.getCardId()));
// End skirmish phase
playerDecided(P1, "");
playerDecided(P2, "");
final AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.ACTION_CHOICE, awaitingDecision.getDecisionType());
validateContents(new String[]{"1_9", "rules"}, (String[]) awaitingDecision.getDecisionParameters().get("blueprintId"));
playerDecided(P1, "0");
assertEquals(Phase.REGROUP, _game.getGameState().getCurrentPhase());
assertEquals(Zone.DISCARD, goblinRunner.getZone());
assertEquals(Zone.DISCARD, cardInDeck.getZone());
}
}
}

View File

@@ -1,17 +1,24 @@
package com.gempukku.lotro.cards.official.set01;
import com.gempukku.lotro.at.AbstractAtTest;
import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.AwaitingDecision;
import com.gempukku.lotro.logic.decisions.AwaitingDecisionType;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
import com.gempukku.lotro.logic.modifiers.MoveLimitModifier;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -216,4 +223,82 @@ public class Card_01_031_Tests
assertEquals(2, scn.GetTwilight());
}
@Test
public void Legacy_playDiscountAsfalothOnArwen() throws DecisionResultInvalidException, CardNotFoundException {
var legacy = new LegacyAtTest();
legacy.playDiscountAsfalothOnArwen();
}
@Test
public void Legacy_playDiscountAsfalothOnOtherElf() throws DecisionResultInvalidException, CardNotFoundException {
var legacy = new LegacyAtTest();
legacy.playDiscountAsfalothOnOtherElf();
}
//These particular tests are pretty redundant with the new ones that check for twilight results above
// (not to mention somewhat less rigorous about it), but I am hesitant to delete these entirely only
// because they check for certain things around the guts that I do not--for instance, the specific
// existence of arguments instead of just card id counts, or the existence of the specific kind of
// card action choice.
//As I do not understand enough about the system to know what can and cannot be safely discarded, these
// will simply have to stay.
public static class LegacyAtTest extends AbstractAtTest {
public void playDiscountAsfalothOnArwen() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<>();
extraCards.put(P1, Arrays.asList("1_30", "1_31"));
initializeSimplestGame(extraCards);
// Play first character
AwaitingDecision firstCharacterDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, firstCharacterDecision.getDecisionType());
validateContents(new String[]{"1_30"}, ((String[]) firstCharacterDecision.getDecisionParameters().get("blueprintId")));
playerDecided(P1, getArbitraryCardId(firstCharacterDecision, "1_30"));
skipMulligans();
PhysicalCard asfaloth = _game.getGameState().getHand(P1).get(0);
final AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, awaitingDecision.getDecisionType());
validateContents(new String[]{"" + asfaloth.getCardId()}, (String[]) awaitingDecision.getDecisionParameters().get("cardId"));
assertEquals(0, _game.getGameState().getTwilightPool());
playerDecided(P1, "0");
assertEquals(0, _game.getGameState().getTwilightPool());
assertEquals(Zone.ATTACHED, asfaloth.getZone());
}
public void playDiscountAsfalothOnOtherElf() throws DecisionResultInvalidException {
Map<String, Collection<String>> extraCards = new HashMap<>();
extraCards.put(P1, Arrays.asList("1_51", "1_31"));
initializeSimplestGame(extraCards);
// Play first character
AwaitingDecision firstCharacterDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.ARBITRARY_CARDS, firstCharacterDecision.getDecisionType());
validateContents(new String[]{"1_51"}, ((String[]) firstCharacterDecision.getDecisionParameters().get("blueprintId")));
playerDecided(P1, getArbitraryCardId(firstCharacterDecision, "1_51"));
skipMulligans();
PhysicalCard asfaloth = _game.getGameState().getHand(P1).get(0);
final AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(P1);
assertEquals(AwaitingDecisionType.CARD_ACTION_CHOICE, awaitingDecision.getDecisionType());
validateContents(new String[]{"" + asfaloth.getCardId()}, (String[]) awaitingDecision.getDecisionParameters().get("cardId"));
assertEquals(0, _game.getGameState().getTwilightPool());
playerDecided(P1, "0");
assertEquals(2, _game.getGameState().getTwilightPool());
assertEquals(Zone.ATTACHED, asfaloth.getZone());
}
}
}