mirror of
https://github.com/magefree/mage.git
synced 2025-12-26 05:22:02 -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
5bf748e2b5
12 changed files with 232 additions and 75 deletions
|
|
@ -0,0 +1,40 @@
|
|||
package mage.cards.decks.importer;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
|
||||
public class CodDeckImportTest {
|
||||
|
||||
private static final FakeCardLookup LOOKUP = new FakeCardLookup()
|
||||
.addCard("Forest")
|
||||
.addCard("Razorverge Thicket")
|
||||
.addCard("Avacyn's Pilgrim")
|
||||
.addCard("War Priest of Thune");
|
||||
|
||||
@Test
|
||||
public void testImportCod() {
|
||||
CodDeckImporter importer = new CodDeckImporter() {
|
||||
@Override
|
||||
public CardLookup getCardLookup() {
|
||||
return LOOKUP;
|
||||
}
|
||||
};
|
||||
StringBuilder errors = new StringBuilder();
|
||||
DeckCardLists deck = importer.importDeck(
|
||||
"src/test/java/mage/cards/decks/importer/testdeck.cod", errors);
|
||||
assertEquals("Deck Name", deck.getName());
|
||||
|
||||
TestDeckChecker.checker()
|
||||
.addMain("Forest", 12)
|
||||
.addMain("Razorverge Thicket", 100)
|
||||
.addMain("Avacyn's Pilgrim", 1)
|
||||
.addSide("War Priest of Thune", 3)
|
||||
.verify(deck, 113, 3);
|
||||
|
||||
assertEquals("Could not find card: '@#$NOT A REAL CARD NAME@#$'\n", errors.toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package mage.cards.decks.importer;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
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");
|
||||
|
||||
@Test
|
||||
public void testImport() {
|
||||
StringBuilder errors = new StringBuilder();
|
||||
DecDeckImporter importer = new DecDeckImporter() {
|
||||
@Override
|
||||
public CardLookup getCardLookup() {
|
||||
return LOOKUP;
|
||||
}
|
||||
};
|
||||
DeckCardLists deck = importer.importDeck(
|
||||
"src/test/java/mage/cards/decks/importer/testdeck.dec", errors);
|
||||
|
||||
TestDeckChecker.checker()
|
||||
.addMain("Masticore", 4)
|
||||
.addMain("Metalworker", 4)
|
||||
.addMain("Phyrexian Colossus", 1)
|
||||
.addMain("Crumbling Sanctuary", 1)
|
||||
.addMain("Grim Monolith", 4)
|
||||
.addMain("Mishra's Helix", 1)
|
||||
.addMain("Phyrexian Processor", 4)
|
||||
.addMain("Tangle Wire", 4)
|
||||
.addMain("Thran Dynamo", 4)
|
||||
.addMain("Voltaic Key", 4)
|
||||
.addMain("Tinker", 4)
|
||||
.addMain("Brainstorm", 4)
|
||||
.addMain("Crystal Vein", 4)
|
||||
.addMain("Island", 9)
|
||||
.addMain("Rishadan Port", 4)
|
||||
.addMain("Saprazzan Skerry", 4)
|
||||
.addSide("Annul", 4)
|
||||
.addSide("Chill", 4)
|
||||
.addSide("Miscalculation", 4)
|
||||
.addSide("Mishra's Helix", 1)
|
||||
.addSide("Rising Waters", 2)
|
||||
.verify(deck, 60, 15);
|
||||
|
||||
assertEquals("", errors.toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package mage.cards.decks.importer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import mage.cards.repository.CardInfo;
|
||||
|
||||
public class FakeCardLookup extends CardLookup {
|
||||
|
||||
private final Map<String, CardInfo> lookup = new HashMap<>();
|
||||
|
||||
public FakeCardLookup addCard(String cardName) {
|
||||
lookup.put(cardName, new CardInfo() {{
|
||||
name = cardName;
|
||||
}});
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<CardInfo> lookupCardInfo(String name) {
|
||||
CardInfo card = lookup.get(name);
|
||||
if (card == null) {
|
||||
System.out.println("Couldn't find: " + name);
|
||||
}
|
||||
return Optional.ofNullable(card);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
package mage.cards.decks.importer;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
|
||||
public class TestDeckChecker {
|
||||
|
||||
private final List<String> main = new ArrayList<>();
|
||||
private final List<String> side = new ArrayList<>();
|
||||
|
||||
public TestDeckChecker addMain(String name) {
|
||||
return addMain(name, 1);
|
||||
}
|
||||
|
||||
public TestDeckChecker addMain(String name, int quantity) {
|
||||
main.addAll(Collections.nCopies(quantity, name));
|
||||
return this;
|
||||
}
|
||||
|
||||
public TestDeckChecker addSide(String name) {
|
||||
return addSide(name, 1);
|
||||
}
|
||||
|
||||
public TestDeckChecker addSide(String name, int quantity) {
|
||||
side.addAll(Collections.nCopies(quantity, name));
|
||||
return this;
|
||||
}
|
||||
|
||||
public void verify(DeckCardLists deck, int nMain, int nSide) {
|
||||
assertEquals(nMain, main.size());
|
||||
assertEquals(nSide, side.size());
|
||||
assertEquals(nMain, deck.getCards().size());
|
||||
assertEquals(nSide, deck.getSideboard().size());
|
||||
|
||||
for (int i = 0; i < main.size(); i++) {
|
||||
String expected = main.get(i);
|
||||
String actual = deck.getCards().get(i).getCardName();
|
||||
assertEquals(String.format("Expected: '%s' Actual: '%s' at index: %s",
|
||||
expected, actual, i), expected, actual);
|
||||
}
|
||||
}
|
||||
|
||||
public static TestDeckChecker checker() {
|
||||
return new TestDeckChecker();
|
||||
}
|
||||
|
||||
}
|
||||
14
Mage/src/test/java/mage/cards/decks/importer/testdeck.cod
Normal file
14
Mage/src/test/java/mage/cards/decks/importer/testdeck.cod
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<cockatrice_deck version="1">
|
||||
<deckname>Deck Name </deckname>
|
||||
<comments>Some comments in here.</comments>
|
||||
<zone name="main">
|
||||
<card number="12" name="Forest"/>
|
||||
<card number="101" price="0" name="Razorverge Thicket"/>
|
||||
<card price="0" name="Avacyn's Pilgrim"/>
|
||||
<card number="1" price="0" name="@#$NOT A REAL CARD NAME@#$"/>
|
||||
</zone>
|
||||
<zone name="side">
|
||||
<card number="3" price="0" name="War Priest of Thune"/>
|
||||
</zone>
|
||||
</cockatrice_deck>
|
||||
28
Mage/src/test/java/mage/cards/decks/importer/testdeck.dec
Normal file
28
Mage/src/test/java/mage/cards/decks/importer/testdeck.dec
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// Name: Mono-Blue Tinker from MTGSalvation.com via mtgtrice mtg-decks
|
||||
// Creatures
|
||||
4 Masticore
|
||||
4 Metalworker
|
||||
1 Phyrexian Colossus
|
||||
// Artifacts
|
||||
1 Crumbling Sanctuary
|
||||
4 Grim Monolith
|
||||
1 Mishra's Helix
|
||||
4 Phyrexian Processor
|
||||
4 Tangle Wire
|
||||
4 Thran Dynamo
|
||||
4 Voltaic Key
|
||||
// Sorceries
|
||||
4 Tinker
|
||||
// Instants
|
||||
4 Brainstorm
|
||||
// Lands
|
||||
4 Crystal Vein
|
||||
9 Island
|
||||
4 Rishadan Port
|
||||
4 Saprazzan Skerry
|
||||
// Sideboard
|
||||
SB: 4 Annul
|
||||
SB: 4 Chill
|
||||
SB: 4 Miscalculation
|
||||
SB: 1 Mishra's Helix
|
||||
SB: 2 Rising Waters
|
||||
Loading…
Add table
Add a link
Reference in a new issue