mirror of
https://github.com/magefree/mage.git
synced 2025-12-24 12:31:59 -08:00
Move tests to the Mage directory and stub out looking up cards by names for tests.
This commit is contained in:
parent
58e629dca6
commit
9372ba63e2
12 changed files with 268 additions and 75 deletions
16
Mage/src/main/java/mage/cards/decks/importer/CardLookup.java
Normal file
16
Mage/src/main/java/mage/cards/decks/importer/CardLookup.java
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
package mage.cards.decks.importer;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
|
||||
public class CardLookup {
|
||||
|
||||
public static final CardLookup instance = new CardLookup();
|
||||
|
||||
public Optional<CardInfo> lookupCardInfo(String name) {
|
||||
return Optional.ofNullable(CardRepository.instance.findPreferedCoreExpansionCard(name, true));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ import java.io.IOException;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
|
@ -40,12 +41,12 @@ public class CodDeckImporter extends DeckImporter {
|
|||
|
||||
List<Node> mainCards = getNodes(doc, "/cockatrice_deck/zone[@name='main']/card");
|
||||
decklist.setCards(mainCards.stream()
|
||||
.flatMap(toDeckCardInfo(errorMessages))
|
||||
.flatMap(toDeckCardInfo(getCardLookup(), errorMessages))
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
List<Node> sideboardCards = getNodes(doc, "/cockatrice_deck/zone[@name='side']/card");
|
||||
decklist.setSideboard(sideboardCards.stream()
|
||||
.flatMap(toDeckCardInfo(errorMessages))
|
||||
.flatMap(toDeckCardInfo(getCardLookup(), errorMessages))
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
getNodes(doc, "/cockatrice_deck/deckname")
|
||||
|
|
@ -65,25 +66,25 @@ public class CodDeckImporter extends DeckImporter {
|
|||
return 1;
|
||||
}
|
||||
try {
|
||||
return Math.min(100, Math.max(0, Integer.parseInt(numberNode.getNodeValue())));
|
||||
return Math.min(100, Math.max(1, Integer.parseInt(numberNode.getNodeValue())));
|
||||
} catch (NumberFormatException e) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
private static Function<Node, Stream<DeckCardInfo>> toDeckCardInfo(StringBuilder errors) {
|
||||
private static Function<Node, Stream<DeckCardInfo>> toDeckCardInfo(CardLookup lookup, StringBuilder errors) {
|
||||
return node -> {
|
||||
String name = node.getAttributes().getNamedItem("name").getNodeValue().trim();
|
||||
CardInfo cardInfo = CardRepository.instance.findPreferedCoreExpansionCard(name, true);
|
||||
if (cardInfo != null) {
|
||||
Optional<CardInfo> cardInfo = lookup.lookupCardInfo(name);
|
||||
if (cardInfo.isPresent()) {
|
||||
CardInfo info = cardInfo.get();
|
||||
return Collections.nCopies(
|
||||
getQuantityFromNode(node),
|
||||
new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()))
|
||||
.stream();
|
||||
new DeckCardInfo(info.getName(), info.getCardNumber(), info.getSetCode())).stream();
|
||||
} else {
|
||||
errors.append("Could not find card: '").append(name).append("'\n");
|
||||
return Stream.empty();
|
||||
}
|
||||
return Stream.empty();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
|
||||
package mage.cards.decks.importer;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import mage.cards.decks.DeckCardInfo;
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
import mage.cards.repository.CardInfo;
|
||||
|
|
@ -29,10 +31,11 @@ public class DecDeckImporter extends PlainTextDeckImporter {
|
|||
String lineName = line.substring(delim).trim();
|
||||
try {
|
||||
int num = Integer.parseInt(lineNum);
|
||||
CardInfo cardInfo = CardRepository.instance.findPreferedCoreExpansionCard(lineName, true);
|
||||
if (cardInfo == null) {
|
||||
Optional<CardInfo> cardLookup = getCardLookup().lookupCardInfo(lineName);
|
||||
if (!cardLookup.isPresent()) {
|
||||
sbMessage.append("Could not find card: '").append(lineName).append("' at line ").append(lineCount).append('\n');
|
||||
} else {
|
||||
CardInfo cardInfo = cardLookup.get();
|
||||
for (int i = 0; i < num; i++) {
|
||||
if (!sideboard) {
|
||||
deckList.getCards().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
|
||||
|
|
|
|||
|
|
@ -3,10 +3,13 @@ package mage.cards.decks.importer;
|
|||
import org.apache.log4j.Logger;
|
||||
import java.io.File;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
import java.util.Scanner;
|
||||
|
||||
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
import mage.cards.repository.CardInfo;
|
||||
import mage.cards.repository.CardRepository;
|
||||
|
||||
public abstract class DeckImporter {
|
||||
|
||||
|
|
@ -53,6 +56,10 @@ public abstract class DeckImporter {
|
|||
return importDeck(file, new StringBuilder());
|
||||
}
|
||||
|
||||
public CardLookup getCardLookup() {
|
||||
return CardLookup.instance;
|
||||
}
|
||||
|
||||
private static boolean haveSideboardSection(String file) {
|
||||
// search for sideboard section:
|
||||
// or //sideboard
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue