mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Improved support for Unknown cards in DeckImport
DeckImport now avoids including non-deck and metadata info in decklist as UnknownText, whilst any line that looks like a card request (i.e. includes a card quantity in the beginning) is interpreted as Unknown card. This seems a good compromise with showing typo and any mispelling in card list whilst avoiding flooding decklist with unnecessary info.
This commit is contained in:
@@ -758,7 +758,8 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
// Card Warning Msgs
|
||||
case UNKNOWN_CARD:
|
||||
case UNSUPPORTED_CARD:
|
||||
return String.format("%s x %s", token.getQuantity(), token.getText());
|
||||
return token.getQuantity() > 0 ? String.format("%s x %s", token.getQuantity(), token.getText())
|
||||
: token.getText();
|
||||
|
||||
case UNSUPPORTED_DECK_SECTION:
|
||||
return String.format("%s: %s", Localizer.getInstance().getMessage("lblWarningMsgPrefix"),
|
||||
@@ -784,12 +785,13 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
case CARD_CMC:
|
||||
case MANA_COLOUR:
|
||||
case COMMENT:
|
||||
case UNKNOWN_TEXT:
|
||||
return token.getText();
|
||||
|
||||
case DECK_NAME:
|
||||
return String.format("%s: %s", Localizer.getInstance().getMessage("lblDeckName"),
|
||||
token.getText());
|
||||
|
||||
case UNKNOWN_TEXT:
|
||||
default:
|
||||
return null;
|
||||
|
||||
@@ -815,8 +817,6 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
case UNSUPPORTED_CARD:
|
||||
return Localizer.getInstance().getMessage("lblErrUnsupportedCard", this.currentGameType);
|
||||
|
||||
case UNKNOWN_TEXT:
|
||||
return Localizer.getInstance().getMessage("lblWarnUnknownTxtMsg");
|
||||
case UNKNOWN_CARD:
|
||||
return String.format("%s: %s", Localizer.getInstance().getMessage("lblWarningMsgPrefix"),
|
||||
Localizer.getInstance().getMessage("lblWarnUnknownCardMsg"));
|
||||
@@ -831,6 +831,7 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
case CARD_RARITY:
|
||||
case DECK_NAME:
|
||||
case LEGAL_CARD:
|
||||
case UNKNOWN_TEXT:
|
||||
default:
|
||||
return null;
|
||||
|
||||
@@ -848,10 +849,10 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
case CARD_FROM_INVALID_SET:
|
||||
case UNSUPPORTED_CARD:
|
||||
return KO_NOIMPORT_CLASS;
|
||||
case UNKNOWN_CARD:
|
||||
case UNSUPPORTED_DECK_SECTION:
|
||||
case WARNING_MESSAGE:
|
||||
case UNKNOWN_TEXT:
|
||||
case UNKNOWN_CARD:
|
||||
return WARN_MSG_CLASS;
|
||||
case COMMENT:
|
||||
return COMMENT_CLASS;
|
||||
case DECK_NAME:
|
||||
@@ -865,6 +866,7 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
case CARD_CMC:
|
||||
case MANA_COLOUR:
|
||||
return CMC_CLASS;
|
||||
case UNKNOWN_TEXT:
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -2486,9 +2486,64 @@ public class DeckRecognizerTest extends ForgeCardMockTestCase {
|
||||
}
|
||||
|
||||
/*=================================
|
||||
* TEST BANNED
|
||||
* TEST UNKNOWN CARDS
|
||||
* ================================ */
|
||||
|
||||
@Test void testUknonwCardIsReturnedForAnExistingCardFromTheWrongSet(){
|
||||
String cardRequest = "Counterspell FEM";
|
||||
DeckRecognizer recognizer = new DeckRecognizer();
|
||||
Token unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
}
|
||||
|
||||
@Test void testUknownCardIsReturnedForLineRequestsThatLooksLikeACardButAreNotSupported(){
|
||||
String cardRequest = "2x Counterspelling TMP";
|
||||
DeckRecognizer recognizer = new DeckRecognizer();
|
||||
Token unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
|
||||
cardRequest = "2x Counterspelling";
|
||||
unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
|
||||
cardRequest = "2x Counterspell FEM ";
|
||||
unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
|
||||
cardRequest = "SB: 2x Counterspelling TMP"; // adding deck section reference
|
||||
unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
|
||||
cardRequest = "SB: 2x Counterspelling TMP (F)"; // adding deck section reference
|
||||
unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
|
||||
cardRequest = "SB: 2x Counterspelling+ TMP"; // adding deck section reference
|
||||
unknonwCardToken = recognizer.recogniseCardToken(cardRequest, null);
|
||||
assertNotNull(unknonwCardToken);
|
||||
assertEquals(unknonwCardToken.getType(), TokenType.UNKNOWN_CARD);
|
||||
assertNull(unknonwCardToken.getCard());
|
||||
assertNull(unknonwCardToken.getTokenSection());
|
||||
}
|
||||
|
||||
/*===============
|
||||
* TEST TOKEN-KEY
|
||||
* ============== */
|
||||
|
||||
Reference in New Issue
Block a user