diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index b0a390a896e..0e0a05e731d 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -249,6 +249,8 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { } } else { CardEdition e = editions.get(setCode); + if (e == null) + return; // wrong set code - nothing we can do here! List cardsInSet = e.getCardInSet(cardName); // empty collection if not present for (CardInSet cis : cardsInSet) { addSetCard(e, cis, cr); diff --git a/forge-gui-desktop/src/test/java/forge/card/CardDbTestLazyCardLoading.java b/forge-gui-desktop/src/test/java/forge/card/CardDbTestLazyCardLoading.java index fc169986934..5f6710dffba 100644 --- a/forge-gui-desktop/src/test/java/forge/card/CardDbTestLazyCardLoading.java +++ b/forge-gui-desktop/src/test/java/forge/card/CardDbTestLazyCardLoading.java @@ -89,4 +89,29 @@ public class CardDbTestLazyCardLoading extends ForgeCardMockTestCase { assertNotNull(aetherVialCard); assertEquals(aetherVialCard.getName(), expectedCardName); } + + @Test + public void tesLoadAndGetUnsupportedCardHavingWrongSetCode(){ + String cardName = "Dominating Licid"; + String wrongSetCode = "AA"; + String expectedSetCode = CardEdition.UNKNOWN.getCode(); + CardRarity expectedCardRarity = CardRarity.Unknown; + + PaperCard dominatingLycidCard = this.cardDb.getCard(cardName); + assertNull(dominatingLycidCard); + + // Load the Card (just card name + FModel.getMagicDb().attemptToLoadCard(cardName, wrongSetCode); + + dominatingLycidCard = this.cardDb.getCard(cardName); + assertNull(dominatingLycidCard); // card still not found + + // Resorting to Unsupported Card Request + String cardRequest = CardDb.CardRequest.compose(cardName, wrongSetCode); + dominatingLycidCard = this.cardDb.createUnsupportedCard(cardRequest); + assertNotNull(dominatingLycidCard); + assertEquals(dominatingLycidCard.getName(), cardName); + assertEquals(dominatingLycidCard.getEdition(), expectedSetCode); + assertEquals(dominatingLycidCard.getRarity(), expectedCardRarity); + } }