diff --git a/forge-core/src/main/java/forge/deck/DeckRecognizer.java b/forge-core/src/main/java/forge/deck/DeckRecognizer.java index 999d68ff54d..a01168bffcf 100644 --- a/forge-core/src/main/java/forge/deck/DeckRecognizer.java +++ b/forge-core/src/main/java/forge/deck/DeckRecognizer.java @@ -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); } } diff --git a/forge-gui-desktop/src/test/java/forge/deck/DeckRecognizerTest.java b/forge-gui-desktop/src/test/java/forge/deck/DeckRecognizerTest.java index adc6a8a0177..617656691f3 100644 --- a/forge-gui-desktop/src/test/java/forge/deck/DeckRecognizerTest.java +++ b/forge-gui-desktop/src/test/java/forge/deck/DeckRecognizerTest.java @@ -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)"); }