* GUI: added auto-fix for deck files on usage (if deck contains wrong card numbers then it will be fixed and saved automaticity);

This commit is contained in:
Oleg Agafonov 2020-08-08 21:27:20 +04:00
parent 9652d83aec
commit c5d7a3e9f9
31 changed files with 644 additions and 567 deletions

View file

@ -1,40 +1,39 @@
package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
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(false)
.addCard("Forest")
.addCard("Razorverge Thicket")
.addCard("Avacyn's Pilgrim")
.addCard("War Priest of Thune");
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 testImport() {
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/samples/testdeck.cod", errors);
assertEquals("Deck Name", deck.getName());
@Test
public void testImport() {
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/samples/testdeck.cod", errors, false);
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);
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());
}
assertEquals("Could not find card: '@#$NOT A REAL CARD NAME@#$'\n", errors.toString());
}
}

View file

@ -1,52 +1,51 @@
package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
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();
private static final FakeCardLookup LOOKUP = new FakeCardLookup();
@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/samples/testdeck.dec", errors);
@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/samples/testdeck.dec", errors, false);
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);
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());
}
assertEquals("", errors.toString());
}
}

View file

@ -3,7 +3,7 @@ package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
public class DraftLogImporterTest {
@ -19,7 +19,7 @@ public class DraftLogImporterTest {
}
};
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/samples/testdeck.draft", errors);
"src/test/java/mage/cards/decks/importer/samples/testdeck.draft", errors, false);
TestDeckChecker.checker()
.addMain("Raging Ravine", 1)

View file

@ -3,9 +3,7 @@ package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
import java.io.File;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
public class MtgaImporterTest {
@ -21,7 +19,7 @@ public class MtgaImporterTest {
};
StringBuilder errors = new StringBuilder();
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/samples/testdeck.mtga", errors);
"src/test/java/mage/cards/decks/importer/samples/testdeck.mtga", errors, false);
TestDeckChecker.checker()
.addMain("Niv-Mizzet Reborn", 1)

View file

@ -1,57 +1,56 @@
package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import mage.cards.decks.DeckCardLists;
public class MtgjsonDeckImportTest {
private static final FakeCardLookup LOOKUP = new FakeCardLookup();
private static final FakeCardLookup LOOKUP = new FakeCardLookup();
@Test
public void testImport() {
StringBuilder errors = new StringBuilder();
MtgjsonDeckImporter importer = new MtgjsonDeckImporter() {
@Override
public CardLookup getCardLookup() {
return LOOKUP;
}
};
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/samples/testdeck.json", errors);
assertEquals("Arcane Tempo", deck.getName());
@Test
public void testImport() {
StringBuilder errors = new StringBuilder();
MtgjsonDeckImporter importer = new MtgjsonDeckImporter() {
@Override
public CardLookup getCardLookup() {
return LOOKUP;
}
};
DeckCardLists deck = importer.importDeck(
"src/test/java/mage/cards/decks/importer/samples/testdeck.json", errors, false);
assertEquals("Arcane Tempo", deck.getName());
TestDeckChecker.checker()
.addMain("Goblin Electromancer", 4)
.addMain("Crackling Drake", 4)
.addMain("Murmuring Mystic", 2)
.addMain("Arclight Phoenix", 1)
.addMain("Niv-Mizzet, Parun", 2)
.addMain("Chart a Course", 4)
.addMain("Lava Coil", 4)
.addMain("Beacon Bolt", 1)
.addMain("Opt", 4)
.addMain("Radical Idea", 4)
.addMain("Shock", 4)
.addMain("Dive Down", 2)
.addMain("Blink of an Eye", 1)
.addMain("The Mirari Conjecture", 1)
.addMain("Sulfur Falls", 3)
.addMain("Izzet Guildgate", 4)
.addMain("Island", 8)
.addMain("Mountain", 7)
.addSide("The Mirari Conjecture", 1)
.addSide("Beacon Bolt", 1)
.addSide("Negate", 3)
.addSide("Entrancing Melody", 3)
.addSide("Fiery Cannonade", 3)
.addSide("Shivan Fire", 2)
.addSide("Disdainful Stroke", 2)
.verify(deck, 60, 15);
TestDeckChecker.checker()
.addMain("Goblin Electromancer", 4)
.addMain("Crackling Drake", 4)
.addMain("Murmuring Mystic", 2)
.addMain("Arclight Phoenix", 1)
.addMain("Niv-Mizzet, Parun", 2)
.addMain("Chart a Course", 4)
.addMain("Lava Coil", 4)
.addMain("Beacon Bolt", 1)
.addMain("Opt", 4)
.addMain("Radical Idea", 4)
.addMain("Shock", 4)
.addMain("Dive Down", 2)
.addMain("Blink of an Eye", 1)
.addMain("The Mirari Conjecture", 1)
.addMain("Sulfur Falls", 3)
.addMain("Izzet Guildgate", 4)
.addMain("Island", 8)
.addMain("Mountain", 7)
.addSide("The Mirari Conjecture", 1)
.addSide("Beacon Bolt", 1)
.addSide("Negate", 3)
.addSide("Entrancing Melody", 3)
.addSide("Fiery Cannonade", 3)
.addSide("Shivan Fire", 2)
.addSide("Disdainful Stroke", 2)
.verify(deck, 60, 15);
assertEquals("", errors.toString());
}
assertEquals("", errors.toString());
}
}

View file

@ -1,57 +1,51 @@
package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
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();
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);
@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, false);
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)
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)
.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);
.verify(deck, 60, 15);
assertEquals("", errors.toString());
}
assertEquals("", errors.toString());
}
}

View file

@ -1,33 +1,32 @@
package mage.cards.decks.importer;
import mage.cards.decks.DeckCardLists;
import org.junit.Test;
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();
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);
@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, false);
TestDeckChecker.checker()
.addMain("Forest", 1)
.addSide("Island", 2)
.verify(deck, 1, 2);
TestDeckChecker.checker()
.addMain("Forest", 1)
.addSide("Island", 2)
.verify(deck, 1, 2);
assertEquals("", errors.toString());
}
assertEquals("", errors.toString());
}
}