package forge.card.mana; import forge.Card; import forge.Constant; import org.testng.annotations.Test; /** * <p>Mana_PartTest class.</p> * * @author Forge * @version $Id: $ */ @Test(timeOut = 1000) public class Mana_PartTest { /** * <p>testPayManaCost.</p> */ @Test public void testPayManaCost() { { //test constructor ManaCost p = new ManaCost("G"); p = new ManaCost("U"); p = new ManaCost("W"); p = new ManaCost("R"); p = new ManaCost("B"); p = new ManaCost("0"); p = new ManaCost("1"); p = new ManaCost("2"); p = new ManaCost("3"); p = new ManaCost("4"); p = new ManaCost("5"); p = new ManaCost("6"); p = new ManaCost("7"); p = new ManaCost("8"); p = new ManaCost("9"); p = new ManaCost("10"); p = new ManaCost("GW"); p = new ManaCost("1 G"); p = new ManaCost("1 GW"); p = new ManaCost("GW GW"); p = new ManaCost("GW GW GW"); p = new ManaCost("GW GW GW GW"); p = new ManaCost("G G"); p = new ManaCost("G G G"); p = new ManaCost("G G G"); p = new ManaCost("G G G G"); p = new ManaCost("2 GW GW GW"); p = new ManaCost("3 G G G"); p = new ManaCost("12 GW GW GW"); p = new ManaCost("11 G G G"); p = new ManaCost("2/U"); p = new ManaCost("2/B 2/B"); p = new ManaCost("2/G 2/G 2/G"); p = new ManaCost("2/R 2/R 2/R 2/R"); p = new ManaCost("2/W 2/B 2/U 2/R 2/G"); } { ManaCost p = new ManaCost("2/U"); check(0.3, p.isNeeded("G")); check(0.4, p.isNeeded("U")); check(0.5, p.isNeeded("B")); check(0.6, p.isNeeded("W")); check(0.7, p.isNeeded("R")); check(0.8, p.isNeeded("1")); p.addMana("U"); check(0.9, p.isPaid()); check(0.91, !p.isNeeded("R")); } { ManaCost p = new ManaCost("G"); check(1, p.isNeeded("G")); check(1.1, !p.isNeeded("U")); check(1.2, !p.isNeeded("B")); check(1.3, !p.isNeeded("W")); check(1.4, !p.isNeeded("R")); check(1.5, !p.isNeeded("1")); p.addMana("G"); check(2, p.isPaid()); check(2.1, !p.isNeeded("G")); } { ManaCost p = new ManaCost("1"); check(3, p.isNeeded("G")); check(4, p.isNeeded("U")); check(5, p.isNeeded("B")); check(6, p.isNeeded("W")); check(7, p.isNeeded("R")); check(8, p.isNeeded("1")); p.addMana("B"); check(9, p.isPaid()); check(9.1, !p.isNeeded("R")); } { ManaCost p = new ManaCost("GW"); check(10, p.isNeeded("G")); check(13, p.isNeeded("W")); check(11, !p.isNeeded("U")); check(12, !p.isNeeded("B")); check(14, !p.isNeeded("R")); check(15, !p.isNeeded("1")); p.addMana("W"); check(16, p.isPaid()); check(17, !p.isNeeded("W")); } { ManaCost p = new ManaCost("BR"); check(17.1, p.isNeeded("B")); check(17.2, p.isNeeded("R")); check(17.3, !p.isNeeded("U")); check(17.4, !p.isNeeded("W")); check(17.5, !p.isNeeded("G")); check(17.6, !p.isNeeded("1")); p.addMana("R"); check(17.7, p.isPaid()); check(17.8, !p.isNeeded("R")); } { ManaCost p = new ManaCost("1 G G"); p.addMana("G"); check(18.1, p.isNeeded("G")); check(18.2, p.isNeeded("W")); check(18.3, p.isNeeded("U")); check(18.4, p.isNeeded("B")); check(18.5, p.isNeeded("R")); check(18.6, p.isNeeded("1")); p.addMana("1"); p.addMana("G"); check(18.7, p.isPaid()); check(18.8, !p.isNeeded("W")); } { ManaCost p = new ManaCost("0"); check(19.1, !p.isNeeded("1")); check(19.2, !p.isNeeded("G")); check(19.3, !p.isNeeded("U")); check(19.4, p.isPaid()); check(19.5, !p.isNeeded("R")); } { ManaCost p = new ManaCost("G G"); check(20.1, !p.isNeeded("1")); check(20.2, p.isNeeded("G")); check(20.3, !p.isNeeded("U")); p.addMana("G"); p.addMana("G"); check(20.4, p.isPaid()); check(20.5, !p.isNeeded("B")); } { ManaCost p = new ManaCost("G G G"); check(21.1, !p.isNeeded("W")); check(21.2, p.isNeeded("G")); check(21.3, !p.isNeeded("R")); p.addMana("G"); p.addMana("G"); p.addMana("G"); check(21.4, p.isPaid()); check(21.5, !p.isNeeded("U")); } { ManaCost p = new ManaCost("G G G G"); check(22.1, !p.isNeeded("W")); check(22.2, p.isNeeded("G")); check(22.3, !p.isNeeded("R")); p.addMana("G"); p.addMana("G"); p.addMana("G"); p.addMana("G"); check(22.4, p.isPaid()); check(22.5, !p.isNeeded("G")); } { ManaCost p = new ManaCost("GW"); check(23.1, p.isNeeded("W")); check(23.2, p.isNeeded("G")); check(23.3, !p.isNeeded("R")); p.addMana("G"); check(23.4, p.isPaid()); check(23.5, !p.isNeeded("G")); } { ManaCost p = new ManaCost("GW"); check(24.1, p.isNeeded("W")); check(24.2, p.isNeeded("G")); check(24.3, !p.isNeeded("U")); p.addMana("W"); check(24.4, p.isPaid()); check(24.5, !p.isNeeded("W")); } { ManaCost p = new ManaCost("3 GW GW"); check(25.1, p.isNeeded("W")); check(25.2, p.isNeeded("G")); check(25.3, p.isNeeded("U")); p.addMana("1"); p.addMana("1"); p.addMana("1"); check(25.4, p.isNeeded("W")); check(25.5, p.isNeeded("G")); check(25.6, !p.isNeeded("U")); p.addMana("G"); p.addMana("W"); check(25.7, p.isPaid()); check(25.8, !p.isNeeded("W")); check(25.9, !p.isNeeded("G")); check(25.10, !p.isNeeded("1")); check(25.11, !p.isNeeded("R")); } { ManaCost p = new ManaCost("4"); check(26.1, p.isNeeded("W")); check(26.2, p.isNeeded("G")); check(26.3, p.isNeeded("U")); p.addMana("1"); p.addMana("1"); p.addMana("1"); p.addMana("1"); check(26.4, p.isPaid()); } { ManaCost p = new ManaCost("10"); p.addMana("G"); p.addMana("W"); p.addMana("R"); p.addMana("U"); p.addMana("B"); p.addMana("1"); p.addMana("W"); p.addMana("R"); p.addMana("U"); p.addMana("B"); check(27, p.isPaid()); } { ManaCost p = new ManaCost("12 G GW"); for (int i = 0; i < 12; i++) p.addMana("R"); p.addMana("G"); p.addMana("W"); check(28, p.isPaid()); } { ManaCost p = new ManaCost("2 W B U R G"); for (int i = 0; i < 1; i++) p.addMana("R"); for (int i = 0; i < 2; i++) p.addMana("1"); for (int i = 0; i < 1; i++) { p.addMana("G"); p.addMana("W"); p.addMana("B"); p.addMana("U"); } check(29, p.isPaid()); } { ManaCost p = new ManaCost("W B U R G W"); p.addMana("R"); p.addMana("G"); p.addMana("B"); p.addMana("U"); p.addMana("W"); p.addMana("W"); check(30, p.isPaid()); } { ManaCost p = new ManaCost("W B U R G W B U R G"); for (int i = 0; i < 2; i++) { p.addMana("W"); p.addMana("R"); p.addMana("G"); p.addMana("B"); p.addMana("U"); } check(31, p.isPaid()); } { ManaCost p = new ManaCost("2 W B U R G W B U R G G"); for (int i = 0; i < 2; i++) { p.addMana("W"); p.addMana("R"); p.addMana("G"); p.addMana("B"); p.addMana("U"); } p.addMana("1"); p.addMana("1"); p.addMana("G"); check(32, p.isPaid()); } { ManaCost p = new ManaCost("1 B R"); p.addMana("B"); p.addMana("1"); p.addMana("R"); check(33, p.isPaid()); } { ManaCost p = new ManaCost("B R"); p.addMana("B"); p.addMana("R"); check(34, p.isPaid()); } { ManaCost p = new ManaCost("2/B 2/B 2/B"); check(35, p.isNeeded("G")); p.addMana("B"); check(36, p.toString().equals("2/B 2/B")); p.addMana("B"); check(37, p.toString().equals("2/B")); p.addMana("B"); check(38, p.isPaid()); } { ManaCost p = new ManaCost("2/G"); p.addMana("1"); check(39, p.toString().equals("1")); p.addMana("W"); check(40, p.isPaid()); } { ManaCost p = new ManaCost("2/R 2/R"); p.addMana("1"); check(41, p.toString().equals("2/R 1")); p.addMana("W"); check(42, p.toString().equals("2/R")); } { ManaCost p = new ManaCost("2/W 2/W"); for (int i = 0; i < 4; i++) { check(43, p.isPaid() == false); p.addMana("1"); } check(44, p.isPaid()); } { ManaCost p = new ManaCost("2/W 2/B 2/U 2/R 2/G"); check(45, p.isPaid() == false); p.addMana("B"); p.addMana("R"); p.addMana("G"); p.addMana("W"); p.addMana("U"); check(45.1, p.isPaid(), p); } { ManaCost p = new ManaCost("2/W 2/B 2/U 2/R 2/G"); check(46, p.isPaid() == false); Card c = new Card(); p.addMana(new Mana(Constant.Color.Black, 1, c)); p.addMana(new Mana(Constant.Color.Red, 1, c)); p.addMana(new Mana(Constant.Color.Green, 1, c)); p.addMana(new Mana(Constant.Color.White, 1, c)); p.addMana(new Mana(Constant.Color.Blue, 1, c)); check(46.1, p.isPaid(), p); } } //testPayManaCost() /** * <p>check.</p> * * @param n a double. * @param b a boolean. */ void check(double n, boolean b) { if (!b) { System.out.println("failed : " + n); } } /** * <p>check.</p> * * @param n a double. * @param b a boolean. * @param p a {@link forge.card.mana.ManaCost} object. */ void check(double n, boolean b, ManaCost p) { if (!b) { System.out.println("failed : " + n); System.out.println(p.toString()); } } }