package org.mage.test.sets; import java.util.Arrays; import java.util.Iterator; import java.util.List; import mage.cards.Card; import mage.cards.repository.CardScanner; import mage.sets.FateReforged; import mage.sets.MastersEditionII; import mage.sets.MastersEditionIV; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.mage.test.serverside.base.MageTestBase; /** * * @author nigelzor */ public class BoosterGenerationTest extends MageTestBase { @Before public void setUp() { CardScanner.scan(); } private static final List<String> basics = Arrays.asList("Plains", "Island", "Swamp", "Mountain", "Forest"); @Test public void testFateReforged() { List<String> tapland = Arrays.asList( "Bloodfell Caves", "Blossoming Sands", "Dismal Backwater", "Jungle Hollow", "Rugged Highlands", "Scoured Barrens", "Swiftwater Cliffs", "Thornwood Falls", "Tranquil Cove", "Wind-Scarred Crag"); List<String> fetchland = Arrays.asList( "Bloodstained Mire", "Flooded Strand", "Polluted Delta", "Windswept Heath", "Wooded Foothills"); List<Card> booster = FateReforged.getInstance().createBooster(); assertTrue(str(booster), contains(booster, tapland, "FRF") || contains(booster, fetchland, "KTK") || contains(booster, basics, null)); // assertFalse(str(booster), contains(booster, basics, null)); } @Test public void testMastersEditionII() { List<String> snowCoveredLand = Arrays.asList( "Snow-Covered Plains", "Snow-Covered Island", "Snow-Covered Swamp", "Snow-Covered Mountain", "Snow-Covered Forest" ); List<Card> booster = MastersEditionII.getInstance().createBooster(); assertTrue(str(booster), contains(booster, snowCoveredLand, "ME2")); assertFalse(str(booster), contains(booster, basics, null)); } @Test public void testMastersEditionIV() { List<String> urzaLand = Arrays.asList( "Urza's Mine", "Urza's Power Plant", "Urza's Tower" ); List<Card> booster = MastersEditionIV.getInstance().createBooster(); assertTrue(str(booster), contains(booster, urzaLand, "ME4")); assertFalse(str(booster), contains(booster, basics, null)); } private static String str(List<Card> cards) { StringBuilder sb = new StringBuilder("["); Iterator<Card> iterator = cards.iterator(); while (iterator.hasNext()) { Card next = iterator.next(); sb.append(next.getName()); if (iterator.hasNext()) { sb.append(", "); } } sb.append("] (").append(cards.size()).append(')'); return sb.toString(); } private static boolean contains(List<Card> cards, List<String> names, String code) { return names.stream().anyMatch((name) -> (contains(cards, name, code))); } private static boolean contains(List<Card> cards, String name, String code) { return cards.stream().anyMatch((card) -> (card.getName().equals(name) && (code == null || card.getExpansionSetCode().equals(code))) ); } }