Text import will automatically start sideboard after a single blank line. Added a JUnit test for TxtDeckImporter.

This commit is contained in:
Alex Marcotte 2016-05-30 23:01:57 -04:00
parent 2d4ba24dd9
commit 95e4e3ea29
3 changed files with 60 additions and 10 deletions

6
Mage.Tests/JustLands.txt Normal file
View file

@ -0,0 +1,6 @@
1 Forest
1 Plains
1 Island
1 Swamp
1 Mountain

View file

@ -0,0 +1,43 @@
package org.mage.test.decks.importer;
import mage.cards.decks.DeckCardInfo;
import mage.cards.decks.DeckCardLists;
import mage.cards.decks.importer.TxtDeckImporter;
import mage.cards.repository.CardInfo;
import mage.cards.repository.CardRepository;
import org.junit.Assert;
import org.junit.Test;
public class TxtDeckImporterTest {
@Test
public void testImportWithBlankLineAboveSideboard() {
TxtDeckImporter importer = new TxtDeckImporter();
CardInfo card;
DeckCardLists deck = new DeckCardLists();
String[] cards = {"Plains", "Forest", "Island"};
String[] sideboard = {"Swamp", "Mountain"};
for (String c : cards) {
card = CardRepository.instance.findPreferedCoreExpansionCard(c, true);
assert card != null;
deck.getCards().add(new DeckCardInfo(card.getName(), card.getCardNumber(), card.getSetCode()));
}
for (String s : sideboard) {
card = CardRepository.instance.findPreferedCoreExpansionCard(s, true);
assert card != null;
deck.getSideboard().add(new DeckCardInfo(card.getName(), card.getCardNumber(), card.getSetCode()));
}
Assert.assertEquals("Deck does not contain 3 cards, found " + deck.getCards().size(), 3, deck.getCards().size());
Assert.assertEquals("Sideboard does not contain 2 cards, found " + deck.getSideboard().size(), 2, deck.getSideboard().size());
DeckCardLists imported = importer.importDeck("JustLands.txt");
Assert.assertEquals("Imported deck does not contain 3 cards, found " + imported.getCards().size(), 3, imported.getCards().size());
Assert.assertEquals("Imported sideboard does not contain 2 cards, found " + imported.getSideboard().size(), 2, imported.getSideboard().size());
}
}

View file

@ -27,14 +27,15 @@
*/ */
package mage.cards.decks.importer; package mage.cards.decks.importer;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import mage.cards.decks.DeckCardInfo; import mage.cards.decks.DeckCardInfo;
import mage.cards.decks.DeckCardLists; import mage.cards.decks.DeckCardLists;
import mage.cards.repository.CardInfo; import mage.cards.repository.CardInfo;
import mage.cards.repository.CardRepository; import mage.cards.repository.CardRepository;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/** /**
* *
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
@ -46,7 +47,7 @@ public class TxtDeckImporter extends DeckImporter {
public static final Set<String> IGNORE_NAMES = new HashSet<>(Arrays.asList(SET_VALUES)); public static final Set<String> IGNORE_NAMES = new HashSet<>(Arrays.asList(SET_VALUES));
private boolean sideboard = false; private boolean sideboard = false;
private int emptyLinesInARow = 0; private int nonEmptyLinesTotal = 0;
@Override @Override
protected void readLine(String line, DeckCardLists deckList) { protected void readLine(String line, DeckCardLists deckList) {
@ -57,14 +58,14 @@ public class TxtDeckImporter extends DeckImporter {
if (line.startsWith("//")) { if (line.startsWith("//")) {
return; return;
} }
if (line.length() == 0) {
emptyLinesInARow++; // Start the sideboard on empty line that follows
if (emptyLinesInARow > 1) { // at least 1 non-empty line
sideboard = true; if (line.length() == 0 && nonEmptyLinesTotal > 0) {
} sideboard = true;
return; return;
} else { } else {
emptyLinesInARow = 0; nonEmptyLinesTotal++;
} }
line = line.replace("\t", " "); // changing tabs to blanks as delimiter line = line.replace("\t", " "); // changing tabs to blanks as delimiter