package forge;
import forge.card.cardFactory.CardFactory;
import forge.card.mana.ManaCost;
import forge.gui.input.Input_PayManaCostUtil;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
/**
* <p>RunTest class.</p>
*
* @author Forge
* @version $Id: $
*/
@Test(timeOut = 1000, enabled = false)
public class RunTest {
//@SuppressWarnings("unchecked") // HashSet needs <type>
/**
* <p>test.</p>
*/
@Test(timeOut = 1000, enabled = false)
void test() {
{
Card c;
CardFactory cf = AllZone.getCardFactory();
//********* test Card
c = cf.getCard("Elvish Warrior", AllZone.getComputerPlayer());
check("1", c.getOwner().isComputer());
check("1.1", c.getName().equals("Elvish Warrior"));
check("2", c.getManaCost().equals("G G"));
check("2.1", c.isCreature());
check("2.2", c.isType("Elf"));
check("2.3", c.isType("Warrior"));
check("3", c.getText().equals(""));
check("4", c.getNetAttack() == 2);
check("5", c.getNetDefense() == 3);
check("6", c.getKeyword().isEmpty());
c = cf.getCard("Shock", null);
check("14", c.isInstant());
//check("15", c.getText().equals("Shock deals 2 damge to target creature or player."));
c = cf.getCard("Bayou", null);
check("17", c.getManaCost().equals(""));
check("18", c.isLand());
check("19", c.isType("Swamp"));
check("20", c.isType("Forest"));
//********* test ManaCost
ManaCost manaCost = new ManaCost("G");
check("21", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Green);
check("22", manaCost.isPaid());
manaCost = new ManaCost("7");
check("23", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Black);
check("24", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Blue);
check("25", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Colorless);
check("26", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Green);
check("27", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Red);
check("28", !manaCost.isPaid());
manaCost.payMana(Constant.Color.White);
check("29", !manaCost.isPaid());
manaCost.payMana(Constant.Color.White);
check("30", manaCost.isPaid());
manaCost = new ManaCost("2 W W G G B B U U R R");
check("31", !manaCost.isPaid());
manaCost.payMana(Constant.Color.White);
check("32", !manaCost.isPaid());
manaCost.payMana(Constant.Color.White);
check("32.1", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Black);
check("33", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Black);
check("34", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Blue);
check("35", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Blue);
check("36", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Green);
check("37", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Green);
check("38", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Red);
check("39", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Red);
check("40", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Red);
check("41", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Blue);
check("42", manaCost.isPaid());
manaCost = new ManaCost("G G");
check("43", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Green);
check("44", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Green);
check("45", manaCost.isPaid());
manaCost = new ManaCost("1 U B");
check("45", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Black);
check("46", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Blue);
check("47", !manaCost.isPaid());
manaCost.payMana(Constant.Color.Blue);
check("48", manaCost.isPaid());
//********* test CardUtil.getColors()
c = new Card();
c.setManaCost("G");
ArrayList<String> color = CardUtil.getColors(c);
check("49", color.contains(Constant.Color.Green));
check("50", color.size() == 1);
c = new Card();
c.setManaCost("W B G R U");
color = CardUtil.getColors(c);
Set<String> set = new HashSet<String>(color);
System.out.println("color: " + color);
check("51", set.size() == 5);
check("52", color.contains(Constant.Color.Black));
check("53", color.contains(Constant.Color.Blue));
check("54", color.contains(Constant.Color.Green));
check("55", color.contains(Constant.Color.Red));
check("56", color.contains(Constant.Color.White));
c = new Card();
c.setManaCost("2");
color = CardUtil.getColors(c);
check("57", color.size() == 1);
check("58", color.contains(Constant.Color.Colorless));
c = new Card();
color = CardUtil.getColors(c);
check("59", color.size() == 1);
check("60", color.contains(Constant.Color.Colorless));
c = new Card();
c.setManaCost("");
color = CardUtil.getColors(c);
check("61", color.size() == 1);
check("62", color.contains(Constant.Color.Colorless));
c = cf.getCard("Bayou", null);
color = CardUtil.getColors(c);
check("63", color.size() == 1);
check("64", color.contains(Constant.Color.Colorless));
c = cf.getCard("Elvish Warrior", null);
color = CardUtil.getColors(c);
check("65", color.size() == 1);
check("66", color.contains(Constant.Color.Green));
c = new Card();
c.setManaCost("11 W W B B U U R R G G");
color = CardUtil.getColors(c);
check("67", color.size() == 5);
c = new Card();
c = cf.getCard("Elvish Warrior", null);
c.setManaCost("11");
color = CardUtil.getColors(c);
check("68", color.size() == 1);
check("69", color.contains(Constant.Color.Colorless));
check("70", c.isCreature());
check("71", !c.isArtifact());
check("72", !c.isBasicLand());
check("73", !c.isEnchantment());
check("74", !c.isGlobalEnchantment());
check("75", !c.isInstant());
check("76", !c.isLand());
check("77", !c.isAura());
check("78", c.isPermanent());
check("79", !c.isSorcery());
check("80", !c.isTapped());
check("81", c.isUntapped());
c = cf.getCard("Swamp", null);
check("82", c.isBasicLand());
check("83", c.isLand());
c = cf.getCard("Bayou", null);
check("84", !c.isBasicLand());
check("85", c.isLand());
c = cf.getCard("Shock", null);
check("86", !c.isCreature());
check("87", !c.isArtifact());
check("88", !c.isBasicLand());
check("89", !c.isEnchantment());
check("90", !c.isGlobalEnchantment());
check("91", c.isInstant());
check("92", !c.isLand());
check("93", !c.isAura());
check("94", !c.isPermanent());
check("95", !c.isSorcery());
check("96", !c.isTapped());
check("97", c.isUntapped());
//test Input_PayManaCostUtil
check("98", Input_PayManaCostUtil.getLongColorString("G").equals(Constant.Color.Green));
check("99", Input_PayManaCostUtil.getLongColorString("1").equals(Constant.Color.Colorless));
/*
check("101", Input_PayManaCostUtil.isManaNeeded(Constant.Color.Green, new ManaCost("5")) == true);
check("102", Input_PayManaCostUtil.isManaNeeded(Constant.Color.Blue, new ManaCost("4")) == true);
check("103", Input_PayManaCostUtil.isManaNeeded(Constant.Color.White, new ManaCost("3")) == true);
check("104", Input_PayManaCostUtil.isManaNeeded(Constant.Color.Black, new ManaCost("2")) == true);
check("105", Input_PayManaCostUtil.isManaNeeded(Constant.Color.Red, new ManaCost("1")) == true);
*/
/*
ManaCost cost = new ManaCost("1 B B");
Input_PayManaCostUtil.isManaNeeded(Constant.Color.Black, cost);
cost.subtractMana(Constant.Color.Black);
cost.subtractMana(Constant.Color.Green);
check("106", Input_PayManaCostUtil.isManaNeeded(Constant.Color.Green, cost) == false);
*/
c = new Card();
Card c2 = new Card();
c.addIntrinsicKeyword("Flying");
c2.addIntrinsicKeyword("Flying");
//check("107", CombatUtil.canBlock(c, c2));
//check("108", CombatUtil.canBlock(c2, c));
c = new Card();
c2 = new Card();
c2.addIntrinsicKeyword("Flying");
check("109", CombatUtil.canBlock(c, c2));
check("110", !CombatUtil.canBlock(c2, c));
c = cf.getCard("Fyndhorn Elves", null);
c2 = cf.getCard("Talas Warrior", null);
check("110a", !CombatUtil.canBlock(c2, c));
check("110b", CombatUtil.canBlock(c, c2));
c = new Card();
c.setName("1");
c.setUniqueNumber(1);
c2 = new Card();
c2.setName("2");
c2.setUniqueNumber(2);
//test CardList
CardList cardList = new CardList(new Card[]
{c, c2});
check("111", cardList.contains(c));
check("112", cardList.contains(c2));
check("113", cardList.containsName(c));
check("114", cardList.containsName(c.getName()));
check("115", cardList.containsName(c2));
check("116", cardList.containsName(c2.getName()));
c = new Card();
check("117", c.hasSickness() == true);
c.addIntrinsicKeyword("Haste");
check("118", c.hasSickness() == false);
}
{
CardFactory cf = AllZone.getCardFactory();
CardList c1 = new CardList();
c1.add(cf.getCard("Shock", null));
c1.add(cf.getCard("Royal Assassin", null));
c1.add(cf.getCard("Hymn to Tourach", null));
CardList c2 = c1.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.isCreature();
}
});
check("119", c2.containsName("Royal Assassin"));
check("119", c2.size() == 1);
c2 = c1.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.isInstant();
}
});
check("120", c2.containsName("Shock"));
check("121", c2.size() == 1);
c2 = c1.filter(new CardListFilter() {
public boolean addCard(Card c) {
return c.getName().equals("Hymn to Tourach");
}
});
check("120", c2.containsName("Hymn to Tourach"));
check("121", c2.size() == 1);
Card card = cf.getCard("Sylvan Basilisk", null);
Card card2 = cf.getCard("Exalted Angel", null);
check("121a", !CombatUtil.canDestroyAttacker(card, card2, null, false));
}
{
check("122", CardUtil.getConvertedManaCost("0") == 0);
check("123", CardUtil.getConvertedManaCost("R") == 1);
check("124", CardUtil.getConvertedManaCost("R R") == 2);
check("125", CardUtil.getConvertedManaCost("R R R") == 3);
check("126", CardUtil.getConvertedManaCost("1") == 1);
check("127", CardUtil.getConvertedManaCost("2/R 2/G 2/W 2/B 2/U") == 10);
}
}//test()
/**
* <p>check.</p>
*
* @param message a {@link java.lang.String} object.
* @param ok a boolean.
*/
void check(String message, boolean ok) {
if (!ok) {
//throw new RuntimeException("RunTest test error : " +message);
System.out.println("RunTest test error : " + message);
}
}
}