add importer for o8d and some more decks to test.

This commit is contained in:
John Hitchings 2019-01-10 19:33:42 -08:00
parent 5bf748e2b5
commit aac3e3fdc1
17 changed files with 387 additions and 79 deletions

View file

@ -8,14 +8,14 @@ import mage.cards.decks.DeckCardLists;
public class CodDeckImportTest {
private static final FakeCardLookup LOOKUP = new FakeCardLookup()
private static final FakeCardLookup LOOKUP = new FakeCardLookup(false)
.addCard("Forest")
.addCard("Razorverge Thicket")
.addCard("Avacyn's Pilgrim")
.addCard("War Priest of Thune");
@Test
public void testImportCod() {
public void testImport() {
CodDeckImporter importer = new CodDeckImporter() {
@Override
public CardLookup getCardLookup() {
@ -24,7 +24,7 @@ public class CodDeckImportTest {
};
StringBuilder errors = new StringBuilder();
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/testdeck.cod", errors);
"src/test/java/mage/cards/decks/importer/samples/testdeck.cod", errors);
assertEquals("Deck Name", deck.getName());
TestDeckChecker.checker()

View file

@ -8,28 +8,7 @@ import mage.cards.decks.DeckCardLists;
public class DecDeckImportTest {
private static final FakeCardLookup LOOKUP = new FakeCardLookup()
.addCard("Masticore")
.addCard("Metalworker")
.addCard("Phyrexian Colossus")
.addCard("Crumbling Sanctuary")
.addCard("Grim Monolith")
.addCard("Mishra's Helix")
.addCard("Phyrexian Processor")
.addCard("Tangle Wire")
.addCard("Thran Dynamo")
.addCard("Voltaic Key")
.addCard("Tinker")
.addCard("Brainstorm")
.addCard("Crystal Vein")
.addCard("Island")
.addCard("Rishadan Port")
.addCard("Saprazzan Skerry")
.addCard("Annul")
.addCard("Chill")
.addCard("Miscalculation")
.addCard("Mishra's Helix")
.addCard("Rising Waters");
private static final FakeCardLookup LOOKUP = new FakeCardLookup();
@Test
public void testImport() {
@ -41,7 +20,7 @@ public class DecDeckImportTest {
}
};
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/testdeck.dec", errors);
"src/test/java/mage/cards/decks/importer/samples/testdeck.dec", errors);
TestDeckChecker.checker()
.addMain("Masticore", 4)

View file

@ -1,14 +1,26 @@
package mage.cards.decks.importer;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import mage.cards.repository.CardCriteria;
import mage.cards.repository.CardInfo;
public class FakeCardLookup extends CardLookup {
private final Map<String, CardInfo> lookup = new HashMap<>();
private final boolean alwaysMatches;
public FakeCardLookup() {
this(true);
}
public FakeCardLookup(boolean alwaysMatches) {
this.alwaysMatches = alwaysMatches;
}
public FakeCardLookup addCard(String cardName) {
lookup.put(cardName, new CardInfo() {{
@ -18,12 +30,26 @@ public class FakeCardLookup extends CardLookup {
}
@Override
public Optional<CardInfo> lookupCardInfo(String name) {
CardInfo card = lookup.get(name);
if (card == null) {
System.out.println("Couldn't find: " + name);
public Optional<CardInfo> lookupCardInfo(String cardName) {
CardInfo card = lookup.get(cardName);
if (card != null) {
return Optional.of(card);
}
return Optional.ofNullable(card);
if (alwaysMatches) {
return Optional.of(new CardInfo() {{
name = cardName;
}});
}
return Optional.empty();
}
@Override
public List<CardInfo> lookupCardInfo(CardCriteria criteria) {
return lookupCardInfo(criteria.getName())
.map(Collections::singletonList)
.orElse(Collections.emptyList());
}
}

View file

@ -0,0 +1,57 @@
package mage.cards.decks.importer;
import static org.junit.Assert.assertEquals;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import mage.cards.decks.DeckCardLists;
import mage.cards.repository.CardCriteria;
import mage.cards.repository.CardInfo;
public class MwsDeckImportTest {
private static final FakeCardLookup LOOKUP = new FakeCardLookup();
@Test
public void testImport() {
MWSDeckImporter importer = new MWSDeckImporter() {
@Override
public CardLookup getCardLookup() {
return LOOKUP;
}
};
StringBuilder errors = new StringBuilder();
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/samples/testdeck.mwDeck", errors);
TestDeckChecker.checker()
.addMain("Mutavault", 4)
.addMain("Plains", 18)
.addMain("Daring Skyjek", 2)
.addMain("Azorius Arrester", 4)
.addMain("Banisher Priest", 4)
.addMain("Boros Elite", 4)
.addMain("Dryad Militant", 4)
.addMain("Imposing Sovereign", 4)
.addMain("Precinct Captain", 4)
.addMain("Soldier of the Pantheon", 4)
.addMain("Spear of Heliod", 3)
.addMain("Rootborn Defenses", 1)
.addMain("Brave the Elements", 4)
.addSide("Wear/Tear", 1)
.addSide("Glare of Heresy", 2)
.addSide("Fiendslayer Paladin", 3)
.addSide("Riot Control", 3)
.addSide("Ajani, Caller of the Pride", 3)
.addSide("Rootborn Defenses", 3)
.verify(deck, 60, 15);
assertEquals("", errors.toString());
}
}

View file

@ -0,0 +1,33 @@
package mage.cards.decks.importer;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import mage.cards.decks.DeckCardLists;
public class O8dDeckImportTest {
private static final FakeCardLookup LOOKUP = new FakeCardLookup();
@Test
public void testImport() {
O8dDeckImporter importer = new O8dDeckImporter() {
@Override
public CardLookup getCardLookup() {
return LOOKUP;
}
};
StringBuilder errors = new StringBuilder();
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/samples/testdeck.o8d", errors);
TestDeckChecker.checker()
.addMain("Forest", 1)
.addSide("Island", 2)
.verify(deck, 1, 2);
assertEquals("", errors.toString());
}
}

View file

@ -0,0 +1,23 @@
// Deck file for Magic Workstation (http://www.magicworkstation.com)
// NAME : WW Human
// CREATOR : meltiin (magic-ville.com)
// FORMAT : Standard
4 [M14] Mutavault
18 [UNH] Plains
2 [GTC] Daring Skyjek
4 [RTR] Azorius Arrester
4 [M14] Banisher Priest
4 [GTC] Boros Elite
4 [RTR] Dryad Militant
4 [M14] Imposing Sovereign
4 [RTR] Precinct Captain
4 [THS] Soldier of the Pantheon
3 [THS] Spear of Heliod
1 [RTR] Rootborn Defenses
4 [M14] Brave the Elements
SB: 1 [DGM] Wear/Tear
SB: 2 [THS] Glare of Heresy
SB: 3 [M14] Fiendslayer Paladin
SB: 3 [DGM] Riot Control
SB: 3 [M14] Ajani, Caller of the Pride
SB: 3 [RTR] Rootborn Defenses

View file

@ -0,0 +1,8 @@
<deck>
<section name="Main">
<card qty="1">Forest</card>
</section>
<section name="Sideboard">
<card qty="2">Island</card>
</section>
</deck>