mirror of
https://github.com/correl/mage.git
synced 2024-12-25 19:25:41 +00:00
DB: fixed wrong result for night cards search (fixed double faced cards in test render dialog)
This commit is contained in:
parent
29e1c9b318
commit
18a3ec5247
4 changed files with 71 additions and 20 deletions
|
@ -316,7 +316,7 @@ public class TestCardRenderDialog extends MageDialog {
|
||||||
//cardViews.add(createHandCard(game, playerYou.getId(), "ZNR", "134")); // Akoum Warrior
|
//cardViews.add(createHandCard(game, playerYou.getId(), "ZNR", "134")); // Akoum Warrior
|
||||||
//*/
|
//*/
|
||||||
|
|
||||||
// test meld cards in hands and battlefield
|
/*// test meld cards in hands and battlefield
|
||||||
cardViews.add(createHandCard(game, playerYou.getId(), "EMN", "204")); // Hanweir Battlements
|
cardViews.add(createHandCard(game, playerYou.getId(), "EMN", "204")); // Hanweir Battlements
|
||||||
cardViews.add(createHandCard(game, playerYou.getId(), "EMN", "130a")); // Hanweir Garrison
|
cardViews.add(createHandCard(game, playerYou.getId(), "EMN", "130a")); // Hanweir Garrison
|
||||||
cardViews.add(createHandCard(game, playerYou.getId(), "EMN", "130b")); // Hanweir, the Writhing Township
|
cardViews.add(createHandCard(game, playerYou.getId(), "EMN", "130b")); // Hanweir, the Writhing Township
|
||||||
|
@ -325,7 +325,16 @@ public class TestCardRenderDialog extends MageDialog {
|
||||||
cardViews.add(createPermanentCard(game, playerYou.getId(), "EMN", "130b", 1, 1, 0, false, false, null)); // Hanweir, the Writhing Township
|
cardViews.add(createPermanentCard(game, playerYou.getId(), "EMN", "130b", 1, 1, 0, false, false, null)); // Hanweir, the Writhing Township
|
||||||
//*/
|
//*/
|
||||||
|
|
||||||
/* //test card icons
|
// test variant double faced cards (main and second sides must be same pair)
|
||||||
|
cardViews.add(createHandCard(game, playerYou.getId(), "VOW", "65")); // Jacob Hauken, Inspector
|
||||||
|
cardViews.add(createHandCard(game, playerYou.getId(), "VOW", "320")); // Jacob Hauken, Inspector
|
||||||
|
cardViews.add(createHandCard(game, playerYou.getId(), "VOW", "332")); // Jacob Hauken, Inspector
|
||||||
|
cardViews.add(createPermanentCard(game, playerYou.getId(), "VOW", "65", 1, 1, 0, false, false, null)); // Jacob Hauken, Inspector
|
||||||
|
cardViews.add(createPermanentCard(game, playerYou.getId(), "VOW", "320", 1, 1, 0, false, false, null)); // Jacob Hauken, Inspector
|
||||||
|
cardViews.add(createPermanentCard(game, playerYou.getId(), "VOW", "332", 1, 1, 0, false, false, null)); // Jacob Hauken, Inspector
|
||||||
|
//*/
|
||||||
|
|
||||||
|
/*//test card icons
|
||||||
cardViews.add(createHandCard(game, playerYou.getId(), "POR", "169")); // Grizzly Bears
|
cardViews.add(createHandCard(game, playerYou.getId(), "POR", "169")); // Grizzly Bears
|
||||||
cardViews.add(createHandCard(game, playerYou.getId(), "DKA", "140")); // Huntmaster of the Fells, transforms
|
cardViews.add(createHandCard(game, playerYou.getId(), "DKA", "140")); // Huntmaster of the Fells, transforms
|
||||||
cardViews.add(createPermanentCard(game, playerYou.getId(), "DKA", "140", 3, 3, 1, false, true, additionalIcons)); // Huntmaster of the Fells, transforms
|
cardViews.add(createPermanentCard(game, playerYou.getId(), "DKA", "140", 3, 3, 1, false, true, additionalIcons)); // Huntmaster of the Fells, transforms
|
||||||
|
|
|
@ -2,7 +2,9 @@ package org.mage.test.utils;
|
||||||
|
|
||||||
import mage.cards.repository.CardInfo;
|
import mage.cards.repository.CardInfo;
|
||||||
import mage.cards.repository.CardRepository;
|
import mage.cards.repository.CardRepository;
|
||||||
|
import mage.cards.repository.CardScanner;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -10,17 +12,22 @@ import java.util.List;
|
||||||
/**
|
/**
|
||||||
* Testing of CardRepository functionality.
|
* Testing of CardRepository functionality.
|
||||||
*
|
*
|
||||||
* @author Alex-Vasile
|
* @author Alex-Vasile, JayDi85
|
||||||
*/
|
*/
|
||||||
public class CardRepositoryTest {
|
public class CardRepositoryTest {
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
CardScanner.scan();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test CardRepository.findCards for the difficult cases when provided with the full card name.
|
* Test CardRepository.findCards for the difficult cases when provided with the full card name.
|
||||||
*
|
* <p>
|
||||||
* CardRepository.findCards is used only for testing purposes.
|
* CardRepository.findCards is used only for testing purposes.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindSplitCardsByFullName() {
|
public void test_FindSplitCardsByFullName() {
|
||||||
// Modal double-faced
|
// Modal double-faced
|
||||||
assertFindCard("Malakir Rebirth // Malakir Mire");
|
assertFindCard("Malakir Rebirth // Malakir Mire");
|
||||||
// Transform double-faced
|
// Transform double-faced
|
||||||
|
@ -35,11 +42,11 @@ public class CardRepositoryTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test CardRepository.findCards for the difficult cases.
|
* Test CardRepository.findCards for the difficult cases.
|
||||||
*
|
* <p>
|
||||||
* CardRepository.findCards is used only for testing purposes.
|
* CardRepository.findCards is used only for testing purposes.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindSplitCardsByMainName() {
|
public void test_FindSplitCardsByMainName() {
|
||||||
// Modal double-faced
|
// Modal double-faced
|
||||||
assertFindCard("Malakir Rebirth");
|
assertFindCard("Malakir Rebirth");
|
||||||
// Transform double-faced
|
// Transform double-faced
|
||||||
|
@ -54,11 +61,11 @@ public class CardRepositoryTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test CardRepository.findCards for the difficult cases.
|
* Test CardRepository.findCards for the difficult cases.
|
||||||
*
|
* <p>
|
||||||
* CardRepository.findCards is used only for testing purposes.
|
* CardRepository.findCards is used only for testing purposes.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindSplitCardsBySecondName() {
|
public void test_FindSplitCardsBySecondName() {
|
||||||
// Modal double-faced
|
// Modal double-faced
|
||||||
assertFindCard("Malakir Mire");
|
assertFindCard("Malakir Mire");
|
||||||
// Transform double-faced
|
// Transform double-faced
|
||||||
|
@ -73,11 +80,11 @@ public class CardRepositoryTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test CardRepository.findCardsCaseInsensitive for the difficult cases.
|
* Test CardRepository.findCardsCaseInsensitive for the difficult cases.
|
||||||
*
|
* <p>
|
||||||
* CardRepository.findCardsCaseInsensitive is used for actual game
|
* CardRepository.findCardsCaseInsensitive is used for actual game
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindSplitCardsByFullNameCaseInsensitive() {
|
public void test_FindSplitCardsByFullNameCaseInsensitive() {
|
||||||
// Modal double-faced
|
// Modal double-faced
|
||||||
assertFindCard("malakIR rebirTH // maLAkir mIRe");
|
assertFindCard("malakIR rebirTH // maLAkir mIRe");
|
||||||
// Transform double-faced
|
// Transform double-faced
|
||||||
|
@ -92,11 +99,11 @@ public class CardRepositoryTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test CardRepository.findCards for the difficult cases.
|
* Test CardRepository.findCards for the difficult cases.
|
||||||
*
|
* <p>
|
||||||
* CardRepository.findCards is used only for testing purposes.
|
* CardRepository.findCards is used only for testing purposes.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindSplitCardsByMainNameCaseInsensitive() {
|
public void test_FindSplitCardsByMainNameCaseInsensitive() {
|
||||||
// Modal double-faced
|
// Modal double-faced
|
||||||
assertFindCard("malakIR rebirTH");
|
assertFindCard("malakIR rebirTH");
|
||||||
// Transform double-faced
|
// Transform double-faced
|
||||||
|
@ -111,11 +118,11 @@ public class CardRepositoryTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test CardRepository.findCards for the difficult cases.
|
* Test CardRepository.findCards for the difficult cases.
|
||||||
*
|
* <p>
|
||||||
* CardRepository.findCards is used only for testing purposes.
|
* CardRepository.findCards is used only for testing purposes.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindSplitCardsBySecondNameCaseInsensitive() {
|
public void test_FindSplitCardsBySecondNameCaseInsensitive() {
|
||||||
// Modal double-faced
|
// Modal double-faced
|
||||||
assertFindCard("maLAkir mIRe");
|
assertFindCard("maLAkir mIRe");
|
||||||
// Transform double-faced
|
// Transform double-faced
|
||||||
|
@ -130,13 +137,13 @@ public class CardRepositoryTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reported bug: https://github.com/magefree/mage/issues/9533
|
* Reported bug: https://github.com/magefree/mage/issues/9533
|
||||||
*
|
* <p>
|
||||||
* Each half of a split card displays the combined information of both halves in the deck editor.
|
* Each half of a split card displays the combined information of both halves in the deck editor.
|
||||||
*
|
* <p>
|
||||||
* `findCards`'s `returnSplitCardHalf` parameter should handle this issue
|
* `findCards`'s `returnSplitCardHalf` parameter should handle this issue
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void splitCardInfoIsntDoubled() {
|
public void test_splitCardInfoIsntDoubled() {
|
||||||
// Consecrate // Consume
|
// Consecrate // Consume
|
||||||
// {1}{W/B} // {2}{W}{B}
|
// {1}{W/B} // {2}{W}{B}
|
||||||
List<CardInfo> fullCard1 = CardRepository.instance.findCards("Consecrate", 1, false);
|
List<CardInfo> fullCard1 = CardRepository.instance.findCards("Consecrate", 1, false);
|
||||||
|
@ -167,4 +174,21 @@ public class CardRepositoryTest {
|
||||||
foundCards.isEmpty()
|
foundCards.isEmpty()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Some set can contain both main and second side cards with same card numbers,
|
||||||
|
* so search result must return main side first
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void test_SearchSetWithSecondSides() {
|
||||||
|
// XLN - Ixalan - Arguel's Blood Fast -> Temple of Aclazotz - 90
|
||||||
|
Assert.assertEquals("Arguel's Blood Fast", CardRepository.instance.findCard("XLN", "90").getName());
|
||||||
|
Assert.assertEquals("Arguel's Blood Fast", CardRepository.instance.findCard("XLN", "90", true).getName());
|
||||||
|
Assert.assertEquals("Arguel's Blood Fast", CardRepository.instance.findCard("XLN", "90", false).getName());
|
||||||
|
|
||||||
|
// VOW - Innistrad: Crimson Vow - Jacob Hauken, Inspector -> Hauken's Insight - 320
|
||||||
|
Assert.assertEquals("Jacob Hauken, Inspector", CardRepository.instance.findCard("VOW", "320").getName());
|
||||||
|
Assert.assertEquals("Jacob Hauken, Inspector", CardRepository.instance.findCard("VOW", "320", true).getName());
|
||||||
|
Assert.assertEquals("Jacob Hauken, Inspector", CardRepository.instance.findCard("VOW", "320", false).getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -942,6 +942,7 @@ public class VerifyCardDataTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean containsDoubleSideCards = false;
|
boolean containsDoubleSideCards = false;
|
||||||
|
Map<String, String> cardNumbers = new HashMap<>();
|
||||||
for (ExpansionSet.SetCardInfo cardInfo : set.getSetCardInfo()) {
|
for (ExpansionSet.SetCardInfo cardInfo : set.getSetCardInfo()) {
|
||||||
Card card = CardImpl.createCard(cardInfo.getCardClass(), new CardSetInfo(cardInfo.getName(), set.getCode(),
|
Card card = CardImpl.createCard(cardInfo.getCardClass(), new CardSetInfo(cardInfo.getName(), set.getCode(),
|
||||||
cardInfo.getCardNumber(), cardInfo.getRarity(), cardInfo.getGraphicInfo()));
|
cardInfo.getCardNumber(), cardInfo.getRarity(), cardInfo.getGraphicInfo()));
|
||||||
|
@ -973,7 +974,20 @@ public class VerifyCardDataTest {
|
||||||
+ " - " + card.getName() + " - " + card.getCardNumber()
|
+ " - " + card.getName() + " - " + card.getCardNumber()
|
||||||
+ " - " + card.getSecondCardFace().getName() + " - " + card.getSecondCardFace().getCardNumber());
|
+ " - " + card.getSecondCardFace().getName() + " - " + card.getSecondCardFace().getCardNumber());
|
||||||
}
|
}
|
||||||
*/
|
//*/
|
||||||
|
|
||||||
|
// CHECK: set contains both card sides
|
||||||
|
// related to second side cards usage
|
||||||
|
/*
|
||||||
|
String existedCardName = cardNumbers.getOrDefault(card.getCardNumber(), null);
|
||||||
|
if (existedCardName != null && !existedCardName.equals(card.getName())) {
|
||||||
|
String info = card.isNightCard() ? existedCardName + " -> " + card.getName() : card.getName() + " -> " + existedCardName;
|
||||||
|
errorsList.add("Error: set contains both card sides instead main only: "
|
||||||
|
+ set.getCode() + " - " + set.getName() + " - " + info + " - " + card.getCardNumber());
|
||||||
|
} else {
|
||||||
|
cardNumbers.put(card.getCardNumber(), card.getName());
|
||||||
|
}
|
||||||
|
//*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// CHECK: double side cards must be in boosters
|
// CHECK: double side cards must be in boosters
|
||||||
|
|
|
@ -287,6 +287,10 @@ public enum CardRepository {
|
||||||
queryBuilder.limit(1L).where()
|
queryBuilder.limit(1L).where()
|
||||||
.eq("setCode", new SelectArg(setCode))
|
.eq("setCode", new SelectArg(setCode))
|
||||||
.and().eq("cardNumber", new SelectArg(cardNumber));
|
.and().eq("cardNumber", new SelectArg(cardNumber));
|
||||||
|
|
||||||
|
// some double faced cards can use second side card with same number as main side
|
||||||
|
// (example: vow - 65 - Jacob Hauken, Inspector), so make priority for main side first
|
||||||
|
queryBuilder.orderBy("nightCard", true);
|
||||||
}
|
}
|
||||||
List<CardInfo> result = cardDao.query(queryBuilder.prepare());
|
List<CardInfo> result = cardDao.query(queryBuilder.prepare());
|
||||||
if (!result.isEmpty()) {
|
if (!result.isEmpty()) {
|
||||||
|
|
Loading…
Reference in a new issue