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:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user