From 23cc483a09f9959d89000354c20a599cf816ff2d Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Sat, 12 Aug 2023 22:16:22 +0200 Subject: [PATCH] Tests: Add Rarity Verify Test out of mtgjson data. (#10782) * Tests: Add Rarity Verify Test out of mtgjson data. * skip some of the Special rarity. * remove skip (fixed in master) --- .../java/mage/verify/mtgjson/MtgJsonCard.java | 33 ++++++++++++++++++- .../java/mage/verify/VerifyCardDataTest.java | 14 ++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonCard.java b/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonCard.java index 39953671a6d..a91f5f5470a 100644 --- a/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonCard.java +++ b/Mage.Verify/src/main/java/mage/verify/mtgjson/MtgJsonCard.java @@ -1,5 +1,7 @@ package mage.verify.mtgjson; +import mage.constants.Rarity; + import java.util.List; public final class MtgJsonCard { @@ -9,7 +11,8 @@ public final class MtgJsonCard { public String name; public String asciiName; // mtgjson uses it for some cards like El-Hajjaj - public String number; // from sets source only, see https://mtgjson.com/data-models/card/ + public String number; // from sets source only, see https://mtgjson.com/data-models/card-set/ + public String rarity; // from sets source only, see https://mtgjson.com/data-models/card-set/ public String faceName; public String side; @@ -79,4 +82,32 @@ public final class MtgJsonCard { public boolean isUseUnicodeName() { return this.asciiName != null && this.name != null && !this.asciiName.equals(this.name); } + + /** + * @return the Rarity of the card if present in the mtgjson file + * null if not present. + */ + public Rarity getRarity() { + if (rarity.isEmpty()) { + return null; + } + + switch (rarity) { + case "common": + return Rarity.COMMON; + case "uncommon": + return Rarity.UNCOMMON; + case "rare": + return Rarity.RARE; + case "mythic": + return Rarity.MYTHIC; + case "special": + return Rarity.SPECIAL; + case "bonus": + return Rarity.BONUS; + + default: // Maybe a new rarity has been introduced? + throw new EnumConstantNotPresentException(Rarity.class, rarity); + } + } } diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 45b359078c1..5a0f021a9a2 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -74,6 +74,7 @@ public class VerifyCardDataTest { private static final String SKIP_LIST_TYPE = "TYPE"; private static final String SKIP_LIST_SUBTYPE = "SUBTYPE"; private static final String SKIP_LIST_NUMBER = "NUMBER"; + private static final String SKIP_LIST_RARITY = "RARITY"; private static final String SKIP_LIST_MISSING_ABILITIES = "MISSING_ABILITIES"; private static final String SKIP_LIST_DOUBLE_RARE = "DOUBLE_RARE"; private static final String SKIP_LIST_UNSUPPORTED_SETS = "UNSUPPORTED_SETS"; @@ -137,6 +138,10 @@ public class VerifyCardDataTest { // number skipListCreate(SKIP_LIST_NUMBER); + // rarity + skipListCreate(SKIP_LIST_RARITY); + skipListAddName(SKIP_LIST_RARITY, "CMR", "The Prismatic Piper"); // Collation is not yet set up for CMR https://www.lethe.xyz/mtg/collation/cmr.html + // missing abilities skipListCreate(SKIP_LIST_MISSING_ABILITIES); @@ -1605,7 +1610,7 @@ public class VerifyCardDataTest { checkSupertypes(card, ref); checkTypes(card, ref); checkColors(card, ref); - checkBasicLands(card, ref); + checkRarityAndBasicLands(card, ref); checkMissingAbilities(card, ref); checkWrongSymbolsInRules(card); checkCardCanBeCopied(card); @@ -2291,7 +2296,10 @@ public class VerifyCardDataTest { || name.equals("Mountain"); } - private void checkBasicLands(Card card, MtgJsonCard ref) { + private void checkRarityAndBasicLands(Card card, MtgJsonCard ref) { + if (skipListHaveName(SKIP_LIST_RARITY, card.getExpansionSetCode(), card.getName())) { + return; + } // basic lands must have Rarity.LAND and SuperType.BASIC // other cards can't have that stats @@ -2314,6 +2322,8 @@ public class VerifyCardDataTest { // non lands if (card.getRarity() == Rarity.LAND) { fail(card, "rarity", "only basic land can be Rarity.LAND"); + } else if (!card.getRarity().equals(ref.getRarity())) { + fail(card, "rarity", "mismatched. MtgJson has " + ref.getRarity() + " while set file has " + card.getRarity()); } if (card.isBasic()) {