mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Updated Card Tokens (with test) to retain cards even if not legal.
This will be now used in DeckImporter in combination with Card Preview. Signed-off-by: leriomaggio <valeriomaggio@gmail.com>
This commit is contained in:
@@ -69,16 +69,14 @@ public class DeckRecognizer {
|
||||
return new Token(theCard, TokenType.LEGAL_CARD_REQUEST, count, null);
|
||||
}
|
||||
|
||||
public static Token IllegalCard(final String cardName, final String setCode, final int count) {
|
||||
String ttext = setCode == null || setCode.equals("") ? cardName :
|
||||
String.format("%s (%s)", cardName, setCode);
|
||||
return new Token(null, TokenType.ILLEGAL_CARD_REQUEST, count, ttext);
|
||||
public static Token IllegalCard(final PaperCard theCard, final int count) {
|
||||
String ttext = String.format("%s (%s)", theCard.getName(), theCard.getEdition());
|
||||
return new Token(theCard, TokenType.ILLEGAL_CARD_REQUEST, count, ttext);
|
||||
}
|
||||
|
||||
public static Token InvalidCard(final String cardName, final String setCode, final int count) {
|
||||
String ttext = setCode == null || setCode.equals("") ? cardName :
|
||||
String.format("%s (%s)", cardName, setCode);
|
||||
return new Token(null, TokenType.INVALID_CARD_REQUEST, count, ttext);
|
||||
public static Token InvalidCard(final PaperCard theCard, final int count) {
|
||||
String ttext = String.format("%s (%s)", theCard.getName(), theCard.getEdition());
|
||||
return new Token(theCard, TokenType.INVALID_CARD_REQUEST, count, ttext);
|
||||
}
|
||||
|
||||
public static Token UnknownCard(final String cardName, final String setCode, final int count) {
|
||||
@@ -105,8 +103,8 @@ public class DeckRecognizer {
|
||||
return null;
|
||||
}
|
||||
|
||||
private Token(final PaperCard knownCard, final TokenType type1, final int count, final String message) {
|
||||
this.card = knownCard;
|
||||
private Token(final PaperCard tokenCard, final TokenType type1, final int count, final String message) {
|
||||
this.card = tokenCard;
|
||||
this.number = count;
|
||||
this.type = type1;
|
||||
this.text = message;
|
||||
@@ -333,8 +331,6 @@ public class DeckRecognizer {
|
||||
uknonwnCardToken = Token.UnknownCard(cardName, setCode, cardCount);
|
||||
continue;
|
||||
}
|
||||
if (isNotCompliantWithReleaseDateRestrictions(edition))
|
||||
return Token.InvalidCard(cr.cardName, edition.getCode(), cardCount);
|
||||
|
||||
// we now name is ok, set is ok - we just need to be sure about collector number (if any)
|
||||
// and if that card can be actually found in the requested set.
|
||||
@@ -344,7 +340,11 @@ public class DeckRecognizer {
|
||||
// ok so the card has been found - let's see if there's any restriction on the set
|
||||
if (isIllegalSetInGameFormat(edition.getCode()) || isIllegalCardInDeckFormat(pc))
|
||||
// Mark as illegal card
|
||||
return Token.IllegalCard(pc.getName(), pc.getEdition(), cardCount);
|
||||
return Token.IllegalCard(pc, cardCount);
|
||||
|
||||
if (isNotCompliantWithReleaseDateRestrictions(edition))
|
||||
return Token.InvalidCard(pc, cardCount);
|
||||
|
||||
return Token.KnownCard(pc, cardCount);
|
||||
}
|
||||
// UNKNOWN card as in the Counterspell|FEM case
|
||||
@@ -363,10 +363,10 @@ public class DeckRecognizer {
|
||||
|
||||
if (pc != null) {
|
||||
if (isIllegalSetInGameFormat(pc.getEdition()) || isIllegalCardInDeckFormat(pc))
|
||||
return Token.IllegalCard(pc.getName(), pc.getEdition(), cardCount);
|
||||
return Token.IllegalCard(pc, cardCount);
|
||||
CardEdition edition = StaticData.instance().getCardEdition(pc.getEdition());
|
||||
if (isNotCompliantWithReleaseDateRestrictions(edition))
|
||||
return Token.InvalidCard(pc.getName(), pc.getEdition(), cardCount);
|
||||
return Token.InvalidCard(pc, cardCount);
|
||||
return Token.KnownCard(pc, cardCount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1230,13 +1230,13 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
Token cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
|
||||
lineRequest = "2x Counterspell"; // It does not exist any Counterspell in Urza's block
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
}
|
||||
|
||||
@Test void testRequestingCardWithRestrictionsOnDeckFormat(){
|
||||
@@ -1260,7 +1260,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
}
|
||||
|
||||
@Test void testRequestingCardWithReleaseDateConstraints(){
|
||||
@@ -1318,7 +1318,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.INVALID_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
}
|
||||
|
||||
@Test void testCardMatchWithDateANDGameFormatConstraints(){
|
||||
@@ -1372,14 +1372,14 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.INVALID_CARD_REQUEST);
|
||||
assertEquals(cardToken.getNumber(), 2);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
|
||||
lineRequest = "2x Lightning Dragon";
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.INVALID_CARD_REQUEST);
|
||||
assertEquals(cardToken.getNumber(), 2);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Lightning Dragon (USG)");
|
||||
|
||||
// Now relaxing date constraint but removing USG from allowed sets
|
||||
@@ -1392,14 +1392,14 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertEquals(cardToken.getNumber(), 2);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
|
||||
lineRequest = "2x Lightning Dragon";
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertEquals(cardToken.getNumber(), 2);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
|
||||
// Now relaxing date constraint but removing USG from allowed sets
|
||||
// VMA release date: 2014-06-16
|
||||
@@ -1442,7 +1442,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Flash (6ED)");
|
||||
|
||||
lineRequest = "2x Cancel";
|
||||
@@ -1460,7 +1460,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.INVALID_CARD_REQUEST);
|
||||
assertEquals(cardToken.getNumber(), 2);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Cancel (M21)");
|
||||
}
|
||||
|
||||
@@ -1489,7 +1489,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Flash (MIR)");
|
||||
|
||||
lineRequest = "2x Femeref Knight";
|
||||
@@ -1517,7 +1517,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST); // violating Deck format
|
||||
assertEquals(cardToken.getNumber(), 1);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Noble Elephant (MIR)");
|
||||
|
||||
lineRequest = "Incinerate|ICE";
|
||||
@@ -1525,7 +1525,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST); // violating Game format
|
||||
assertEquals(cardToken.getNumber(), 1);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Incinerate (ICE)");
|
||||
}
|
||||
|
||||
@@ -1555,21 +1555,21 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Flash (MIR)");
|
||||
|
||||
lineRequest = "Ardent Militia";
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST); // illegal in deck format
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Ardent Militia (WTH)"); // within set constraints
|
||||
|
||||
lineRequest = "Buried Alive|UMA";
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.INVALID_CARD_REQUEST); // illegal in game format
|
||||
assertNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getType(), TokenType.ILLEGAL_CARD_REQUEST); // illegal in game format
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Buried Alive (UMA)"); // within set constraints
|
||||
|
||||
lineRequest = "Buried Alive";
|
||||
@@ -1585,7 +1585,7 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
cardToken = recognizer.recogniseCardToken(lineRequest);
|
||||
assertNotNull(cardToken);
|
||||
assertEquals(cardToken.getType(), TokenType.INVALID_CARD_REQUEST);
|
||||
assertNull(cardToken.getCard());
|
||||
assertNotNull(cardToken.getCard());
|
||||
assertEquals(cardToken.getText(), "Buried Alive (WTH)");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user