Added more ATs

This commit is contained in:
Marcin Sciesinski
2024-10-17 03:07:01 +07:00
parent 06c7db4a6b
commit 0cd76e2cb7
3 changed files with 209 additions and 8 deletions

View File

@@ -20,7 +20,7 @@ public class CanSpotCultureTokens implements RequirementProducer {
final int count = FieldUtils.getInteger(object.get("amount"), "amount", 1);
final String filter = FieldUtils.getString(object.get("filter"), "filter", "any");
final Culture culture = FieldUtils.getEnum(Culture.class, object.get("culture"), "culture");
final Token tokenForCulture = Token.findTokenForCulture(culture);
final Token tokenForCulture = culture != null ? Token.findTokenForCulture(culture) : null;
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);

View File

@@ -1,9 +1,6 @@
package com.gempukku.lotro.at;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Token;
import com.gempukku.lotro.common.Zone;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.*;
import com.gempukku.lotro.game.formats.LotroFormatLibrary;
import com.gempukku.lotro.logic.actions.SystemQueueAction;
@@ -13,6 +10,7 @@ import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.DefaultLotroGame;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.RuleUtils;
import com.gempukku.lotro.logic.vo.LotroDeck;
import com.gempukku.lotro.packs.ProductLibrary;
import org.apache.commons.lang3.StringUtils;
@@ -41,8 +39,12 @@ public abstract class AbstractAtTest {
return (PhysicalCardImpl) _game.getGameState().createPhysicalCard(owner, _cardLibrary, blueprintId);
}
public void addCultureTokens(PhysicalCard elvenDefender, Token token, int count) {
_game.getGameState().addTokens(elvenDefender, token, count);
public void addCultureTokens(PhysicalCard card, Token token, int count) {
_game.getGameState().addTokens(card, token, count);
}
public int getArcheryTotal(Side side) {
return RuleUtils.calculateArcheryTotal(_game, side);
}
public PhysicalCard getRingBearer(String player) {
@@ -150,6 +152,10 @@ public abstract class AbstractAtTest {
return _game.getGameState().getBurdens();
}
public void addBurdens(int count) {
_game.getGameState().addBurdens(count);
}
public void removeBurdens(int count) {
_game.getGameState().removeBurdens(count);
}

View File

@@ -1,14 +1,22 @@
package com.gempukku.lotro.at;
import com.gempukku.lotro.cards.build.DefaultActionContext;
import com.gempukku.lotro.cards.build.LotroCardBlueprintBuilder;
import com.gempukku.lotro.cards.build.Requirement;
import com.gempukku.lotro.cards.build.field.effect.requirement.*;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.common.Token;
import com.gempukku.lotro.common.Zone;
import com.gempukku.lotro.game.PhysicalCard;
import org.json.simple.JSONObject;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.*;
public class RequirementsAtTest extends AbstractAtTest {
private LotroCardBlueprintBuilder lotroCardBlueprintBuilder = new LotroCardBlueprintBuilder();
@Test
public void canSpotCultureTokens() throws Exception {
initializeSimplestGame();
@@ -20,4 +28,191 @@ public class RequirementsAtTest extends AbstractAtTest {
addCultureTokens(elvenDefender, Token.ELVEN, 1);
assertEquals(7, getStrength(elvenDefender));
}
@Test
public void canSpotAnyCultureTokens() throws Exception {
initializeSimplestGame();
PhysicalCard cruelDunlending = addToZone(createCard(P2, "13_85"), Zone.SHADOW_CHARACTERS);
PhysicalCard desertWind = addToZone(createCard(P2, "13_86"), Zone.HAND);
passUntil(Phase.FELLOWSHIP);
setTwilightPool(10);
passUntil(Phase.SHADOW);
selectCardAction(P2, desertWind);
passUntil(Phase.ARCHERY);
assertEquals(0, getArcheryTotal(Side.SHADOW));
addCultureTokens(desertWind, Token.MEN, 5);
assertEquals(2, getArcheryTotal(Side.SHADOW));
}
@Test
public void cantSpotBurdens() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("amount", 2);
Requirement requirement = new CantSpotBurdens().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertTrue(requirement.accepts(actionContext));
addBurdens(1);
assertFalse(requirement.accepts(actionContext));
}
@Test
public void cantSpotThreats() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("amount", 2);
Requirement requirement = new CantSpotThreats().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertTrue(requirement.accepts(actionContext));
addThreats(P1, 2);
assertFalse(requirement.accepts(actionContext));
}
@Test
public void cardsInDeckCount() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("deck", "fp");
obj.put("count", 1);
Requirement requirement = new CardsInDeckCount().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertFalse(requirement.accepts(actionContext));
putOnTopOfDeck(createCard(P1, "1_3"));
assertTrue(requirement.accepts(actionContext));
}
@Test
public void isAhead() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
Requirement requirement = new IsAhead().getPlayRequirement(new JSONObject(), lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertFalse(requirement.accepts(actionContext));
passUntil(Phase.SHADOW);
assertTrue(requirement.accepts(actionContext));
}
@Test
public void isEqual() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("firstNumber", 2);
obj.put("secondNumber", "burdenCount");
Requirement requirement = new IsEqual().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertFalse(requirement.accepts(actionContext));
addBurdens(1);
assertTrue(requirement.accepts(actionContext));
}
@Test
public void isGreaterThan() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("firstNumber", 2);
obj.put("secondNumber", "burdenCount");
Requirement requirement = new IsGreaterThan().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertTrue(requirement.accepts(actionContext));
addBurdens(1);
assertFalse(requirement.accepts(actionContext));
}
@Test
public void isGreaterThanOrEqual() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("firstNumber", 2);
obj.put("secondNumber", "burdenCount");
Requirement requirement = new IsGreaterThanOrEqual().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertTrue(requirement.accepts(actionContext));
addBurdens(1);
assertTrue(requirement.accepts(actionContext));
addBurdens(1);
assertFalse(requirement.accepts(actionContext));
}
@Test
public void isLessThan() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("firstNumber", 2);
obj.put("secondNumber", "burdenCount");
Requirement requirement = new IsLessThan().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertFalse(requirement.accepts(actionContext));
addBurdens(1);
assertFalse(requirement.accepts(actionContext));
addBurdens(1);
assertTrue(requirement.accepts(actionContext));
}
@Test
public void isLessThanOrEqual() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
obj.put("firstNumber", 2);
obj.put("secondNumber", "burdenCount");
Requirement requirement = new IsLessThanOrEqual().getPlayRequirement(obj, lotroCardBlueprintBuilder);
DefaultActionContext actionContext = new DefaultActionContext(P1, _game, null, null, null);
assertFalse(requirement.accepts(actionContext));
addBurdens(1);
assertTrue(requirement.accepts(actionContext));
addBurdens(1);
assertTrue(requirement.accepts(actionContext));
}
@Test
public void isOwner() throws Exception {
initializeSimplestGame();
passUntil(Phase.FELLOWSHIP);
JSONObject obj = new JSONObject();
PhysicalCard ownerByP1 = createCard(P1, "1_3");
PhysicalCard ownerByP2 = createCard(P2, "1_3");
Requirement requirement = new IsOwnerRequirementProducer().getPlayRequirement(obj, lotroCardBlueprintBuilder);
assertTrue(requirement.accepts(new DefaultActionContext(P1, _game, ownerByP1, null, null)));
assertFalse(requirement.accepts(new DefaultActionContext(P1, _game, ownerByP2, null, null)));
}
}