From a7d1e7398a4296ff2e6594d047bbb15e6f29b181 Mon Sep 17 00:00:00 2001 From: leriomaggio Date: Sat, 28 Aug 2021 17:54:53 +0100 Subject: [PATCH] FIX cardDb bug for lazy card loading when issuing a request with a non-existing set code. Code FIX + Test --- .../src/main/java/forge/card/CardDb.java | 2 ++ .../forge/card/CardDbTestLazyCardLoading.java | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) 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); + } }