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