Assignment tests.
This commit is contained in:
@@ -2,6 +2,7 @@ package com.gempukku.lotro.at;
|
||||
|
||||
import com.gempukku.lotro.game.DefaultUserFeedback;
|
||||
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.formats.MovieFormat;
|
||||
import com.gempukku.lotro.logic.decisions.AwaitingDecision;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
@@ -81,6 +82,13 @@ public abstract class AbstractAtTest {
|
||||
}
|
||||
}
|
||||
|
||||
protected String[] toCardIdArray(PhysicalCard... cards) {
|
||||
String[] result = new String[cards.length];
|
||||
for (int i = 0; i < cards.length; i++)
|
||||
result[i] = String.valueOf(cards[i].getCardId());
|
||||
return result;
|
||||
}
|
||||
|
||||
protected String getArbitraryCardId(AwaitingDecision awaitingDecision, String blueprintId) {
|
||||
String[] blueprints = (String[]) awaitingDecision.getDecisionParameters().get("blueprintId");
|
||||
for (int i = 0; i < blueprints.length; i++)
|
||||
@@ -119,7 +127,12 @@ public abstract class AbstractAtTest {
|
||||
protected void playerDecided(String player, String answer) throws DecisionResultInvalidException {
|
||||
AwaitingDecision decision = _userFeedback.getAwaitingDecision(player);
|
||||
_userFeedback.participantDecided(player);
|
||||
decision.decisionMade(answer);
|
||||
try {
|
||||
decision.decisionMade(answer);
|
||||
} catch (DecisionResultInvalidException exp) {
|
||||
_userFeedback.sendAwaitingDecision(player, decision);
|
||||
throw exp;
|
||||
}
|
||||
_game.carryOutPendingActionsUntilDecisionNeeded();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
package com.gempukku.lotro.at;
|
||||
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.PhysicalCardImpl;
|
||||
import com.gempukku.lotro.game.state.Assignment;
|
||||
import com.gempukku.lotro.logic.decisions.AwaitingDecision;
|
||||
import com.gempukku.lotro.logic.decisions.AwaitingDecisionType;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static junit.framework.Assert.*;
|
||||
|
||||
public class AssignmentAtTest extends AbstractAtTest {
|
||||
@Test
|
||||
public void orcAssassinAssignNotToAlly() throws DecisionResultInvalidException {
|
||||
@@ -96,4 +103,133 @@ public class AssignmentAtTest extends AbstractAtTest {
|
||||
assertEquals(AwaitingDecisionType.CARD_SELECTION, chooseCompanion.getDecisionType());
|
||||
validateContents(new String[]{String.valueOf(merry.getCardId()), String.valueOf(pippin.getCardId())}, (String[]) chooseCompanion.getDecisionParameters().get("cardId"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void normalAssignment() throws DecisionResultInvalidException {
|
||||
initializeSimplestGame();
|
||||
|
||||
skipMulligans();
|
||||
|
||||
PhysicalCardImpl merry = new PhysicalCardImpl(100, "1_303", P1, _library.getLotroCardBlueprint("1_303"));
|
||||
PhysicalCardImpl pippin = new PhysicalCardImpl(101, "1_306", P1, _library.getLotroCardBlueprint("1_306"));
|
||||
PhysicalCardImpl urukHaiRaidingParty1 = new PhysicalCardImpl(102, "1_158", P2, _library.getLotroCardBlueprint("1_158"));
|
||||
PhysicalCardImpl urukHaiRaidingParty2 = new PhysicalCardImpl(103, "1_158", P2, _library.getLotroCardBlueprint("1_158"));
|
||||
|
||||
_game.getGameState().addCardToZone(_game, merry, Zone.FREE_CHARACTERS);
|
||||
_game.getGameState().addCardToZone(_game, pippin, Zone.FREE_CHARACTERS);
|
||||
|
||||
// End fellowship phase
|
||||
playerDecided(P1, "");
|
||||
|
||||
_game.getGameState().addCardToZone(_game, urukHaiRaidingParty1, Zone.SHADOW_CHARACTERS);
|
||||
_game.getGameState().addCardToZone(_game, urukHaiRaidingParty2, Zone.SHADOW_CHARACTERS);
|
||||
|
||||
// End shadow phase
|
||||
playerDecided(P2, "");
|
||||
|
||||
// End maneuvers phase
|
||||
playerDecided(P1, "");
|
||||
playerDecided(P2, "");
|
||||
|
||||
// End arhcery phase
|
||||
playerDecided(P1, "");
|
||||
playerDecided(P2, "");
|
||||
|
||||
// End assignment phase
|
||||
playerDecided(P1, "");
|
||||
playerDecided(P2, "");
|
||||
|
||||
final List<Assignment> assignmentsBeforeFreePlayer = _game.getGameState().getAssignments();
|
||||
assertEquals(0, assignmentsBeforeFreePlayer.size());
|
||||
|
||||
AwaitingDecision assignmentDecision = _userFeedback.getAwaitingDecision(P1);
|
||||
assertEquals(AwaitingDecisionType.ASSIGN_MINIONS, assignmentDecision.getDecisionType());
|
||||
validateContents(toCardIdArray(urukHaiRaidingParty1, urukHaiRaidingParty2), (String[]) assignmentDecision.getDecisionParameters().get("minions"));
|
||||
validateContents(toCardIdArray(merry, pippin, _game.getGameState().getRingBearer(P1)), (String[]) assignmentDecision.getDecisionParameters().get("freeCharacters"));
|
||||
playerDecided(P1, merry.getCardId() + " " + urukHaiRaidingParty1.getCardId());
|
||||
|
||||
final List<Assignment> assignmentsAfterFreePlayer = _game.getGameState().getAssignments();
|
||||
assertEquals(1, assignmentsAfterFreePlayer.size());
|
||||
assertEquals(merry, assignmentsAfterFreePlayer.get(0).getFellowshipCharacter());
|
||||
assertEquals(1, assignmentsAfterFreePlayer.get(0).getShadowCharacters().size());
|
||||
assertTrue(assignmentsAfterFreePlayer.get(0).getShadowCharacters().contains(urukHaiRaidingParty1));
|
||||
|
||||
AwaitingDecision shadowAssignmentDecision = _userFeedback.getAwaitingDecision(P2);
|
||||
assertEquals(AwaitingDecisionType.ASSIGN_MINIONS, shadowAssignmentDecision.getDecisionType());
|
||||
validateContents(toCardIdArray(urukHaiRaidingParty2), (String[]) shadowAssignmentDecision.getDecisionParameters().get("minions"));
|
||||
validateContents(toCardIdArray(merry, pippin, _game.getGameState().getRingBearer(P1)), (String[]) shadowAssignmentDecision.getDecisionParameters().get("freeCharacters"));
|
||||
playerDecided(P2, pippin.getCardId() + " " + urukHaiRaidingParty2.getCardId());
|
||||
|
||||
final List<Assignment> assignmentsAfterShadowPlayer = _game.getGameState().getAssignments();
|
||||
assertEquals(2, assignmentsAfterFreePlayer.size());
|
||||
assertEquals(merry, assignmentsAfterFreePlayer.get(0).getFellowshipCharacter());
|
||||
assertEquals(1, assignmentsAfterFreePlayer.get(0).getShadowCharacters().size());
|
||||
assertTrue(assignmentsAfterFreePlayer.get(0).getShadowCharacters().contains(urukHaiRaidingParty1));
|
||||
assertEquals(pippin, assignmentsAfterFreePlayer.get(1).getFellowshipCharacter());
|
||||
assertEquals(1, assignmentsAfterFreePlayer.get(1).getShadowCharacters().size());
|
||||
assertTrue(assignmentsAfterFreePlayer.get(1).getShadowCharacters().contains(urukHaiRaidingParty2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void assignmentsWithDefender() throws DecisionResultInvalidException {
|
||||
initializeSimplestGame();
|
||||
|
||||
skipMulligans();
|
||||
|
||||
PhysicalCardImpl merry = new PhysicalCardImpl(100, "1_303", P1, _library.getLotroCardBlueprint("1_303"));
|
||||
PhysicalCardImpl pippin = new PhysicalCardImpl(101, "1_306", P1, _library.getLotroCardBlueprint("1_306"));
|
||||
PhysicalCardImpl urukHaiRaidingParty1 = new PhysicalCardImpl(102, "1_158", P2, _library.getLotroCardBlueprint("1_158"));
|
||||
PhysicalCardImpl urukHaiRaidingParty2 = new PhysicalCardImpl(103, "1_158", P2, _library.getLotroCardBlueprint("1_158"));
|
||||
|
||||
_game.getGameState().addCardToZone(_game, merry, Zone.FREE_CHARACTERS);
|
||||
_game.getGameState().addCardToZone(_game, pippin, Zone.FREE_CHARACTERS);
|
||||
|
||||
// End fellowship phase
|
||||
playerDecided(P1, "");
|
||||
|
||||
_game.getGameState().addCardToZone(_game, urukHaiRaidingParty1, Zone.SHADOW_CHARACTERS);
|
||||
_game.getGameState().addCardToZone(_game, urukHaiRaidingParty2, Zone.SHADOW_CHARACTERS);
|
||||
|
||||
// End shadow phase
|
||||
playerDecided(P2, "");
|
||||
|
||||
// End maneuvers phase
|
||||
playerDecided(P1, "");
|
||||
playerDecided(P2, "");
|
||||
|
||||
// End arhcery phase
|
||||
playerDecided(P1, "");
|
||||
playerDecided(P2, "");
|
||||
|
||||
// Merry gets Defender +1
|
||||
_game.getModifiersEnvironment().addUntilEndOfPhaseModifier(
|
||||
new KeywordModifier(null, merry, Keyword.DEFENDER, 1), Phase.ASSIGNMENT);
|
||||
|
||||
// End assignment phase
|
||||
playerDecided(P1, "");
|
||||
playerDecided(P2, "");
|
||||
|
||||
final List<Assignment> assignmentsBeforeFreePlayer = _game.getGameState().getAssignments();
|
||||
assertEquals(0, assignmentsBeforeFreePlayer.size());
|
||||
|
||||
AwaitingDecision assignmentDecision = _userFeedback.getAwaitingDecision(P1);
|
||||
assertEquals(AwaitingDecisionType.ASSIGN_MINIONS, assignmentDecision.getDecisionType());
|
||||
validateContents(toCardIdArray(urukHaiRaidingParty1, urukHaiRaidingParty2), (String[]) assignmentDecision.getDecisionParameters().get("minions"));
|
||||
validateContents(toCardIdArray(merry, pippin, _game.getGameState().getRingBearer(P1)), (String[]) assignmentDecision.getDecisionParameters().get("freeCharacters"));
|
||||
try {
|
||||
playerDecided(P1, pippin.getCardId() + " " + urukHaiRaidingParty1.getCardId() + " " + urukHaiRaidingParty2.getCardId());
|
||||
fail("Pippin can't have multiple minions assigned by FP player");
|
||||
} catch (DecisionResultInvalidException exp) {
|
||||
// Expected
|
||||
}
|
||||
// Merry gets two minions (he has Defender +1)
|
||||
playerDecided(P1, merry.getCardId() + " " + urukHaiRaidingParty1.getCardId() + " " + urukHaiRaidingParty2.getCardId());
|
||||
|
||||
final List<Assignment> assignmentsAfterFreePlayer = _game.getGameState().getAssignments();
|
||||
assertEquals(1, assignmentsAfterFreePlayer.size());
|
||||
assertEquals(merry, assignmentsAfterFreePlayer.get(0).getFellowshipCharacter());
|
||||
assertEquals(2, assignmentsAfterFreePlayer.get(0).getShadowCharacters().size());
|
||||
assertTrue(assignmentsAfterFreePlayer.get(0).getShadowCharacters().contains(urukHaiRaidingParty1));
|
||||
assertTrue(assignmentsAfterFreePlayer.get(0).getShadowCharacters().contains(urukHaiRaidingParty2));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user