diff --git a/Mage.Tests/scenario1.txt b/Mage.Tests/scenario1.txt deleted file mode 100644 index 1404aeac6c7..00000000000 --- a/Mage.Tests/scenario1.txt +++ /dev/null @@ -1,24 +0,0 @@ -# Test playing Lightning Bolts (there was a bug with targeting players) - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Mountain:1 - -# Hand -hand:ComputerA:Mountain:2 -hand:ComputerA:Lightning Bolt:5 -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Lightning Bolt:10 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Plains:1 -# Hand -hand:ComputerB:Plains:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 - diff --git a/Mage.Tests/scenario2.txt b/Mage.Tests/scenario2.txt deleted file mode 100644 index f4dab9f5f66..00000000000 --- a/Mage.Tests/scenario2.txt +++ /dev/null @@ -1,36 +0,0 @@ -# Reproduces game where AI didn't attack though could win - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Mountain:3 -battlefield:ComputerA:Lavaclaw Reaches:2 -battlefield:ComputerA:Dragonskull Summit:1 - -# Hand -hand:ComputerA:Searing Blaze:1 -hand:ComputerA:Lavaclaw Reaches:1 - -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Mountain:10 - -# Life -player:ComputerA:life:3 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Mountain:4:{tapped} -battlefield:ComputerB:Dragonskull Summit:1:{tapped} -battlefield:ComputerB:Arid Mesa:1:{tapped} -battlefield:ComputerB:Lavaclaw Reaches:1:{tapped} -# Hand -hand:ComputerB:Ball Lightning:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Lightning Bolt:10 -library:ComputerB:Mountain:1 - -# Life -player:ComputerB:life:1 diff --git a/Mage.Tests/scenario3.txt b/Mage.Tests/scenario3.txt deleted file mode 100644 index 0ce553c17e2..00000000000 --- a/Mage.Tests/scenario3.txt +++ /dev/null @@ -1,26 +0,0 @@ -# Test attacking with Hellspark Elemental - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Island:2 -battlefield:ComputerA:Mountain:2 -# Hand -hand:ComputerA:Mountain:0 -hand:ComputerA:Hellspark Elemental:5 -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Hellspark Elemental:10 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Plains:1 -# Hand -hand:ComputerB:Plains:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 -# Life -player:ComputerB:life:2 - diff --git a/Mage.Tests/scenario4.txt b/Mage.Tests/scenario4.txt deleted file mode 100644 index b883a437b86..00000000000 --- a/Mage.Tests/scenario4.txt +++ /dev/null @@ -1,23 +0,0 @@ -# Test playing Blightning - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Swamp:1 -battlefield:ComputerA:Mountain:2 -# Hand -hand:ComputerA:Blightning:5 -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Blightning:15 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Plains:1 -# Hand -hand:ComputerB:Plains:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 - diff --git a/Mage.Tests/scenario5.txt b/Mage.Tests/scenario5.txt deleted file mode 100644 index 9572b2336fc..00000000000 --- a/Mage.Tests/scenario5.txt +++ /dev/null @@ -1,30 +0,0 @@ -# Test playing Earthquake that kills opponent but not AI - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Island:2 -battlefield:ComputerA:Mountain:3 -battlefield:ComputerA:Dragonskull Summit:1 -battlefield:ComputerA:Lavaclaw Reaches:0 -# Hand -hand:ComputerA:Mountain:0 -hand:ComputerA:Earthquake:1 -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Mountain:15 -# Life -player:ComputerA:life:5 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Plains:1 -# Hand -hand:ComputerB:Plains:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 -# Life -player:ComputerB:life:4 - diff --git a/Mage.Tests/scenario6.txt b/Mage.Tests/scenario6.txt deleted file mode 100644 index 3f09df8cdea..00000000000 --- a/Mage.Tests/scenario6.txt +++ /dev/null @@ -1,29 +0,0 @@ -# Test killing with Lavaclaw Reaches with X: +1\+0 ability - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Island:2 -battlefield:ComputerA:Mountain:3 -battlefield:ComputerA:Dragonskull Summit:1 -battlefield:ComputerA:Lavaclaw Reaches:1 -# Hand -hand:ComputerA:Mountain:1 -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Mountain:15 -# Life -player:ComputerA:life:5 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Plains:1 -# Hand -hand:ComputerB:Plains:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 -# Life -player:ComputerB:life:5 - diff --git a/Mage.Tests/scenario7.txt b/Mage.Tests/scenario7.txt deleted file mode 100644 index 707b59c29a8..00000000000 --- a/Mage.Tests/scenario7.txt +++ /dev/null @@ -1,33 +0,0 @@ -# Test bug with no action from AI - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Mountain:2 -battlefield:ComputerA:Lavaclaw Reaches:1 -# Hand -hand:ComputerA:Burst Lightning:1 -hand:ComputerA:Searing Blaze:3 -hand:ComputerA:Hellspark Elemental:1 -hand:ComputerA:Ball Lightning:1 -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Burst Lightning:15 -# Life -player:ComputerA:life:8 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Plains:1 -battlefield:ComputerB:Lavaclaw Reaches:1 -battlefield:ComputerB:Scalding Tarn:3 -battlefield:ComputerB:Dragonskull Summit:1 -# Hand -hand:ComputerB:Plains:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 -# Life -player:ComputerB:life:2 - diff --git a/Mage.Tests/scenario8.txt b/Mage.Tests/scenario8.txt deleted file mode 100644 index 27f64dc50b1..00000000000 --- a/Mage.Tests/scenario8.txt +++ /dev/null @@ -1,36 +0,0 @@ -# This scenario makes AI frozen - -### ComputerA ### -# Battlefield -battlefield:ComputerA:Mountain:3 -battlefield:ComputerA:Lavaclaw Reaches:2 -battlefield:ComputerA:Dragonskull Summit:1 - -# Hand -hand:ComputerA:Searing Blaze:1 -hand:ComputerA:Lavaclaw Reaches:1 - -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Mountain:10 - -# Life -player:ComputerA:life:3 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Mountain:4 -battlefield:ComputerB:Dragonskull Summit:1 -battlefield:ComputerB:Arid Mesa:1 -battlefield:ComputerB:Lavaclaw Reaches:1 -# Hand -hand:ComputerB:Ball Lightning:2 -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Lightning Bolt:10 -library:ComputerB:Mountain:1 - -# Life -player:ComputerB:life:1 diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/EquipAbilityTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/EquipAbilityTest.java deleted file mode 100644 index 3b88131aa66..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/EquipAbilityTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.mage.test.ai; - -import junit.framework.Assert; -import mage.Constants; -import mage.game.permanent.Permanent; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * Make sure AI uses equip ability once. - * - * @author ayratn - */ -public class EquipAbilityTest extends CardTestBase { - - @Test - @Ignore - public void testLevelUpAbilityUsage() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Steel Wall"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Blade of the Bloodchief"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Blazing Torch"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp", 3); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Plains", 2); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Sacred Foundry", 1); - - setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); - execute(); - - Permanent wall = getPermanent("Steel Wall", playerA.getId()); - Assert.assertNotNull(wall); - - Assert.assertEquals("Not equipped", 2, wall.getAttachments().size()); - - int count = 0; - int tapped = 0; - for (Permanent permanent : currentGame.getBattlefield().getAllPermanents()) { - if (permanent.getControllerId().equals(playerA.getId())) { - if (permanent.getCardType().contains(Constants.CardType.LAND)) { - count++; - if (permanent.isTapped()) { - tapped++; - } - } - } - } - Assert.assertEquals(6, count); - Assert.assertEquals(2, tapped); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/NimShamblerTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/NimShamblerTest.java deleted file mode 100644 index 979646a22eb..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/NimShamblerTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.mage.test.ai; - -import junit.framework.Assert; -import mage.Constants; -import mage.counters.CounterType; -import mage.game.permanent.Permanent; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * @author ayratn - */ -public class NimShamblerTest extends CardTestBase { - - /** - * Reproduces the bug when AI sacrifices its creatures for no reason. - */ - @Test - @Ignore - public void testNoCreatureWasSacrificed() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Nim Shambler"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Blood Cultist"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Craw Wurm"); - - execute(); - - Permanent nimShambler = getPermanent("Nim Shambler", playerA.getId()); - Assert.assertNotNull(nimShambler); - - Permanent bloodCultist = getPermanent("Blood Cultist", playerA.getId()); - Assert.assertNotNull(bloodCultist); - Assert.assertFalse(bloodCultist.isTapped()); // shouldn't be tapped - } - - @Test - @Ignore - public void testAttackAndKillBlockerWithAdditionalDamage() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Nim Shambler"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Blood Cultist"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Ob Nixilis, the Fallen"); - - execute(); - - // should die in attack - assertPermanentCount(playerA, "Nim Shambler", 0); - // should die because of attack + 1 damage from Blood Cultist - assertPermanentCount(playerA, "Ob Nixilis, the Fallen", 0); - - // Blood Cultist should kill Ob Nixilis, the Fallen and get +1\+1 - Permanent bloodCultist = getPermanent("Blood Cultist", playerA.getId()); - Assert.assertNotNull(bloodCultist); - Assert.assertEquals(1, bloodCultist.getCounters().size()); - Assert.assertEquals(1, bloodCultist.getCounters().getCount(CounterType.P1P1)); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/ObNixilistheFallenTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/ObNixilistheFallenTest.java deleted file mode 100644 index 42354c5be76..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/ObNixilistheFallenTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.mage.test.ai; - -import junit.framework.Assert; -import mage.Constants; -import mage.game.permanent.Permanent; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * @author ayratn - */ -public class ObNixilistheFallenTest extends CardTestBase { - - /** - * Reproduces bug when AI doesn't use good "may" ability. - */ - @Test - @Ignore - public void testMayAbilityUsed() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Ob Nixilis, the Fallen"); - addCard(Constants.Zone.HAND, playerA, "Swamp", 1); - - playLand(playerA, "Swamp"); - execute(); - - Permanent master = getPermanent("Ob Nixilis, the Fallen", playerA.getId()); - Assert.assertNotNull(master); - Assert.assertEquals(6, master.getPower().getValue()); - Assert.assertEquals(6, master.getToughness().getValue()); - - assertLife(playerA, 20); - assertLife(playerB, 11); // lose 3 life + attack with 6\6 - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/RegenerateAbilityTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/RegenerateAbilityTest.java deleted file mode 100644 index 3306ddb751a..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/RegenerateAbilityTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.mage.test.ai; - -import mage.Constants; -import mage.game.permanent.Permanent; -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * Make sure AI uses regenerate ability once. - * - * @author ayratn - */ -public class RegenerateAbilityTest extends CardTestBase { - - @Test - @Ignore - public void testRegenerateUsage() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Quicksilver Gargantuan", 1); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Thousand-legged Kami", 1); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Island", 6); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Slith Bloodletter"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Swamp", 4); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Drowned Catacomb", 1); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Crumbling Necropolis", 1); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Llanowar Wastes", 1); - - execute(); - - Permanent slith = getPermanent("Slith Bloodletter", playerB.getId()); - Assert.assertNotNull("Should be alive because of Regenerate ability", slith); - - int count = 0; - int tapped = 0; - for (Permanent permanent : currentGame.getBattlefield().getAllPermanents()) { - if (permanent.getControllerId().equals(playerB.getId())) { - if (permanent.getCardType().contains(Constants.CardType.LAND)) { - count++; - if (permanent.isTapped()) { - tapped++; - } - } - } - } - Assert.assertEquals(7, count); - Assert.assertEquals(2, tapped); - - // should block 7/7 (Quicksilver Gargantuan) and allow 6/6 (Thousand-legged Kami) to attack - assertLife(playerB, 14); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/SphinxOfJwarIsleTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/SphinxOfJwarIsleTest.java deleted file mode 100644 index 227f34606b7..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/SphinxOfJwarIsleTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.mage.test.ai; - -import junit.framework.Assert; -import mage.Constants; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * @author ayratn - */ -public class SphinxOfJwarIsleTest extends CardTestBase { - - /** - * Issue 381: AI Sphinx of Jwar Isle Loop - * - * AI will continuously loop using Sphinx's 'look at top card' ability. - * version: 0.8.1 - * - * Doesn't reproduce. - */ - @Test - public void testInfiniteLoopBug() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Sphinx of Jwar Isle"); - execute(); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugCantFindCardInLibrary.java b/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugCantFindCardInLibrary.java deleted file mode 100644 index e6c785d0826..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugCantFindCardInLibrary.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.mage.test.ai.bugs; - -import junit.framework.Assert; -import mage.Constants; -import mage.game.permanent.Permanent; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -public class BugCantFindCardInLibrary extends CardTestBase { - - @Test - @Ignore - public void testWithSquadronHawk() { - addCard(Constants.Zone.HAND, playerA, "Squadron Hawk"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Plains"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Plains"); - - execute(); - Permanent merfolk = getPermanent("Squadron Hawk", playerA.getId()); - Assert.assertNotNull(merfolk); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugDoesntAttackTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugDoesntAttackTest.java deleted file mode 100644 index 00d64cf6b22..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugDoesntAttackTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.mage.test.ai.bugs; - -import mage.Constants; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * Reproduces bug when AI didn't attack with one of the creatures. - * - * @author ayratn - */ -public class BugDoesntAttackTest extends CardTestBase { - - @Test - @Ignore - public void testAttackWithZephyrSprite() throws Exception { - addCard(Constants.Zone.HAND, playerA, "Zephyr Sprite"); - addCard(Constants.Zone.HAND, playerA, "Island"); - addCard(Constants.Zone.HAND, playerA, "Rupture Spire"); - setLife(playerB, 1); - setStopOnTurn(4); - - execute(); - - assertLife(playerB, 0); - } - - @Test - @Ignore - public void testAttackWithGoblinGuide() throws Exception { - addCard(Constants.Zone.HAND, playerA, "Goblin Guide"); - addCard(Constants.Zone.HAND, playerA, "Mountain"); - - playLand(playerA, "Mountain"); - castSpell(playerA, "Goblin Guide"); - - execute(); - - assertLife(playerB, 18); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugTapsItselfTest.java b/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugTapsItselfTest.java deleted file mode 100644 index 5dc4aa1f8d4..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/BugTapsItselfTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.mage.test.ai.bugs; - -import junit.framework.Assert; -import mage.Constants; -import mage.game.permanent.Permanent; - -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * Should reproduce the bug with AI tapping itself with Blinding Mage. - * But it doesn't ^( - * - * @ayratn - */ -public class BugTapsItselfTest extends CardTestBase { - - @Test - @Ignore - public void testVersusInfectCreature() throws Exception { - useWhiteDefault(); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Blinding Mage"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Myr Sire"); - - setStopOnTurn(4); - execute(); - - assertResult(playerA, GameResult.DRAW); - Permanent permanent = getPermanent("Blinding Mage", playerA.getId()); - Assert.assertFalse("Should have been untapped", permanent.isTapped()); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/TestHavengulLich.java b/Mage.Tests/src/test/java/org/mage/test/ai/bugs/TestHavengulLich.java deleted file mode 100644 index 37c6e1dcebe..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/ai/bugs/TestHavengulLich.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.mage.test.ai.bugs; - -import org.mage.test.cards.*; -import mage.Constants; -import mage.Constants.PhaseStep; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestPlayerBase; - -/** - * - * @author BetaSteward - */ -public class TestHavengulLich extends CardTestPlayerBase { - - @Test - public void testCard() { - addCard(Constants.Zone.GRAVEYARD, playerA, "Gravecrawler"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Black Cat"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); - - castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Gravecrawler"); - setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); - execute(); - - assertLife(playerA, 20); - assertLife(playerB, 20); - assertPermanentCount(playerA, "Gravecrawler", 1); - assertGraveyardCount(playerA, 0); - } - - @Test - public void testCard1() { - addCard(Constants.Zone.GRAVEYARD, playerA, "Gravecrawler"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); - - castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Gravecrawler"); - setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); - execute(); - - assertLife(playerA, 20); - assertLife(playerB, 20); - assertPermanentCount(playerA, "Gravecrawler", 0); - assertGraveyardCount(playerA, 1); - } - -} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/damage/PsionicBlastTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/damage/PsionicBlastTest.java index bc7341def54..7bb5c7dfb42 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/damage/PsionicBlastTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/damage/PsionicBlastTest.java @@ -2,12 +2,12 @@ package org.mage.test.cards.abilities.oneshot.damage; import mage.Constants; import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; +import org.mage.test.serverside.base.CardTestPlayerBase; /** * @author Loki */ -public class PsionicBlastTest extends CardTestBase { +public class PsionicBlastTest extends CardTestPlayerBase { @Test public void testDamageInPlayer() { @@ -16,7 +16,7 @@ public class PsionicBlastTest extends CardTestBase { addCard(Constants.Zone.BATTLEFIELD, playerA, "Island"); addCard(Constants.Zone.HAND, playerA, "Psionic Blast"); - castSpell(playerA, "Psionic Blast"); + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA ,"Psionic Blast"); setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); execute(); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/HideousEndTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/HideousEndTest.java index 5d5a99dac4b..7411c980931 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/HideousEndTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/HideousEndTest.java @@ -3,9 +3,9 @@ package org.mage.test.cards.abilities.oneshot.destroy; import mage.Constants; import org.junit.Ignore; import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; +import org.mage.test.serverside.base.CardTestPlayerBase; -public class HideousEndTest extends CardTestBase { +public class HideousEndTest extends CardTestPlayerBase { @Test public void testWithValidTarget() { @@ -15,11 +15,11 @@ public class HideousEndTest extends CardTestBase { addCard(Constants.Zone.HAND, playerA, "Hideous End"); addCard(Constants.Zone.BATTLEFIELD, playerB, "Copper Myr"); - castSpell(playerA, "Hideous End"); - addFixedTarget(playerA, "Hideous End", "Copper Myr"); + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Hideous End", "Copper Myr"); setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); execute(); + assertPermanentCount(playerB, "Copper Myr", 0); assertLife(playerB, 18); } @@ -32,11 +32,11 @@ public class HideousEndTest extends CardTestBase { addCard(Constants.Zone.HAND, playerA, "Hideous End"); addCard(Constants.Zone.BATTLEFIELD, playerB, "Zombie Goliath"); - castSpell(playerA, "Hideous End"); - addFixedTarget(playerA, "Hideous End", "Zombie Goliath"); + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Hideous End", "Zombie Goliath"); setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); execute(); + assertPermanentCount(playerB, "Zombie Goliath", 1); assertLife(playerB, 20); } @@ -53,11 +53,11 @@ public class HideousEndTest extends CardTestBase { addCard(Constants.Zone.BATTLEFIELD, playerB, "Copper Myr"); addCard(Constants.Zone.HAND, playerB, "Apostle's Blessing"); - castSpell(playerA, "Hideous End"); - addFixedTarget(playerA, "Hideous End", "Copper Myr"); + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Hideous End", "Copper Myr"); setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); execute(); + assertPermanentCount(playerB, "Copper Myr", 1); assertLife(playerB, 20); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/LeaveNoTraceTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/LeaveNoTraceTest.java index a0516e31946..f36f4da0fdc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/LeaveNoTraceTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/destroy/LeaveNoTraceTest.java @@ -2,12 +2,12 @@ package org.mage.test.cards.abilities.oneshot.destroy; import mage.Constants; import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; +import org.mage.test.serverside.base.CardTestPlayerBase; /** * @author Loki */ -public class LeaveNoTraceTest extends CardTestBase { +public class LeaveNoTraceTest extends CardTestPlayerBase { @Test public void testDestroy() { @@ -19,8 +19,7 @@ public class LeaveNoTraceTest extends CardTestBase { addCard(Constants.Zone.BATTLEFIELD, playerB, "Awakening Zone"); // Green addCard(Constants.Zone.BATTLEFIELD, playerB, "Back from the Brink"); // Blue - castSpell(playerA, "Leave No Trace"); - addFixedTarget(playerA, "Leave No Trace", "Asceticism"); + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Leave No Trace", "Asceticism"); setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); execute(); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/filters/OneEyedScarecrowTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/filters/OneEyedScarecrowTest.java index dd2d7dd26f9..aa454977111 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/filters/OneEyedScarecrowTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/filters/OneEyedScarecrowTest.java @@ -2,16 +2,14 @@ package org.mage.test.cards.filters; import junit.framework.Assert; import mage.Constants; -import mage.abilities.keyword.FirstStrikeAbility; -import mage.abilities.keyword.LifelinkAbility; import mage.game.permanent.Permanent; import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; +import org.mage.test.serverside.base.CardTestPlayerBase; /** * @author ayrat */ -public class OneEyedScarecrowTest extends CardTestBase { +public class OneEyedScarecrowTest extends CardTestPlayerBase { @Test public void testBoost() { diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/BurntheImpureTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/BurntheImpureTest.java deleted file mode 100644 index 36cdf9ac895..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/BurntheImpureTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.mage.test.cards.single; - -import mage.Constants; -import mage.filter.Filter; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestAPI; -import org.mage.test.serverside.base.CardTestBase; - -/** - * First JUnit tests for Mage card. - * - * @ayratn - */ -@Ignore -public class BurntheImpureTest extends CardTestBase { - - /** - * Reproduces the test written in MBS/Burn the Impure.test - * - * Actually it can be tested with one java line that loads all test metadata from text file: - * load("MBS/Burn the Impure.test"); - * - * But it was decided to use java code only. - * - * @throws Exception - */ - @Test - public void testVersusInfectCreature() throws Exception { - // $include red.default - useRedDefault(); - // hand:ComputerA:Burn the Impure:1 - addCard(Constants.Zone.HAND, playerA, "Burn the Impure"); - // battlefield:ComputerB:Tine Shrike:1 - addCard(Constants.Zone.BATTLEFIELD, playerB, "Tine Shrike"); - // player:ComputerB:life:3 - setLife(playerB, 3); - - setStopOnTurn(2); - execute(); - - // turn:1 - assertTurn(1); - // result:won - assertResult(playerA, CardTestAPI.GameResult.WON); - // life:ComputerA:20 - assertLife(playerA, 20); - // life:ComputerB:0 - assertLife(playerB, 0); - // assert Tine Shrike has been killed - assertPermanentCount(playerB, "Tine Shrike", 0); - } - - /** - * load("MBS/Burn the Impure - no infect.test"); - * @throws Exception - */ - @Test - public void testVersusNonInfectCreature() throws Exception { - useRedDefault(); - addCard(Constants.Zone.HAND, playerA, "Burn the Impure"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Runeclaw Bear", 3); - setLife(playerB, 3); - - setStopOnTurn(2); - execute(); - - assertTurn(2); - assertResult(playerA, CardTestAPI.GameResult.DRAW); - assertLife(playerA, 20); - assertLife(playerB, 3); - assertPermanentCount(playerB, "Runeclaw Bear", 2); - assertPowerToughness(playerB, "Runeclaw Bear", 2, 2, Filter.ComparisonScope.Any); - assertPowerToughness(playerB, "Runeclaw Bear", 2, 2, Filter.ComparisonScope.All); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ManabarbsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ManabarbsTest.java deleted file mode 100644 index 3d046e876e1..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/ManabarbsTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.mage.test.cards.triggers; - -import mage.Constants; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * @author ayratn - * - * Card: Whenever a player taps a land for mana, Manabarbs deals 1 damage to that player. - */ -public class ManabarbsTest extends CardTestBase { - - /** - * Issue 374: manabarb enchantment - * Games goes into a freeze loop. - * - * version: 0.8.1 - * - * Couldn't reproduce. - */ - @Test - @Ignore - public void testMultiTriggers() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Manabarbs"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Mountain", 7); - addCard(Constants.Zone.HAND, playerA, "Lightning Elemental"); - addCard(Constants.Zone.HAND, playerA, "Ball Lightning"); - - castSpell(playerA, "Ball Lightning"); - castSpell(playerA, "Lightning Elemental"); - attack(playerA, "Ball Lightning"); - attack(playerA, "Lightning Elemental"); - - playerA.setAllowBadMoves(true); - setStopAt(2, Constants.PhaseStep.UNTAP); - execute(); - - assertLife(playerA, 13); // burns from Manabarbs - assertLife(playerB, 10); // ai should attack with 4/1 + 6/1 - assertPermanentCount(playerA, "Lightning Elemental", 1); - assertPermanentCount(playerA, "Ball Lightning", 0); // sacrificed at EOT - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/MausoleumGuardTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/MausoleumGuardTest.java deleted file mode 100644 index 01aaa658128..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/MausoleumGuardTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.mage.test.cards.triggers; - -import mage.Constants; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * @author ayratn - * - * Card: When Mausoleum Guard dies, put two 1/1 white Spirit creature tokens with flying onto the battlefield. - */ -public class MausoleumGuardTest extends CardTestBase { - - /** - * Issue 350: Mausoleum Guard - * Destroyed a mausoleum guard, was supposed to get two 1/1 fliers when it dies. None of them were created. - * - * version: 0.8.1 - */ - @Test - public void testTokensAppeared() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Mountain"); - addCard(Constants.Zone.HAND, playerA, "Lightning Bolt"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Mausoleum Guard"); - - castSpell(playerA, "Lightning Bolt"); - addFixedTarget(playerA, "Lightning Bolt", "Mausoleum Guard"); - - execute(); - assertLife(playerA, 20); - assertLife(playerB, 20); - assertPermanentCount(playerB, "Mausoleum Guard", 0); - assertPermanentCount(playerA, "Spirit", 0); - assertPermanentCount(playerB, "Spirit", 2); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestAPI.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestAPI.java index 2e6d3ddd69f..99aa840697f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestAPI.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestAPI.java @@ -1,12 +1,13 @@ package org.mage.test.serverside.base; import mage.Constants; +import mage.Constants.PhaseStep; import mage.abilities.Ability; import mage.filter.Filter; import mage.players.Player; +import org.mage.test.player.TestPlayer; import java.util.List; -import mage.Constants.PhaseStep; /** * Interface for all test initialization and assertion operations. @@ -35,7 +36,7 @@ public interface CardTestAPI { * * @param player {@link Player} to remove all library cards from. */ - void removeAllCardsFromLibrary(Player player); + void removeAllCardsFromLibrary(TestPlayer player); /** * Add a card to specified zone of specified player. @@ -44,7 +45,7 @@ public interface CardTestAPI { * @param player {@link Player} to add cards for. Use either playerA or playerB. * @param cardName Card name in string format. */ - void addCard(Constants.Zone gameZone, Player player, String cardName); + void addCard(Constants.Zone gameZone, TestPlayer player, String cardName); /** * Add any amount of cards to specified zone of specified player. @@ -54,7 +55,7 @@ public interface CardTestAPI { * @param cardName Card name in string format. * @param count Amount of cards to be added. */ - void addCard(Constants.Zone gameZone, Player player, String cardName, int count); + void addCard(Constants.Zone gameZone, TestPlayer player, String cardName, int count); /** * Add any amount of cards to specified zone of specified player. @@ -66,7 +67,7 @@ public interface CardTestAPI { * @param tapped In case gameZone is Battlefield, determines whether permanent should be tapped. * In case gameZone is other than Battlefield, {@link IllegalArgumentException} is thrown */ - void addCard(Constants.Zone gameZone, Player player, String cardName, int count, boolean tapped); + void addCard(Constants.Zone gameZone, TestPlayer player, String cardName, int count, boolean tapped); /** * Set player's initial life count. @@ -74,7 +75,7 @@ public interface CardTestAPI { * @param player {@link Player} to set life count for. * @param life Life count to set. */ - void setLife(Player player, int life); + void setLife(TestPlayer player, int life); //******* GAME OPTIONS *******/ diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java deleted file mode 100644 index a772097a568..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestBase.java +++ /dev/null @@ -1,347 +0,0 @@ -package org.mage.test.serverside.base; - -import java.io.File; -import java.io.FileNotFoundException; -import mage.Constants; -import mage.Constants.PhaseStep; -import mage.cards.Card; -import mage.cards.decks.Deck; -import mage.cards.decks.importer.DeckImporterUtil; -import mage.filter.Filter; -import mage.game.Game; -import mage.game.GameException; -import mage.game.GameOptions; -import mage.game.TwoPlayerDuel; -import mage.game.permanent.Permanent; -import mage.players.Player; -import org.junit.Assert; -import org.junit.Before; -import org.mage.test.serverside.base.impl.CardTestAPIImpl; - -/** - * Base class for testing single cards and effects. - * - * @author ayratn - */ -public abstract class CardTestBase extends CardTestAPIImpl { - - protected enum AIType { - MinimaxHybrid, - MAD, - MonteCarlo - } - - protected enum ExpectedType { - TURN_NUMBER, - RESULT, - LIFE, - BATTLEFIELD, - GRAVEYARD, - UNKNOWN - } - - /** - * Computer types used to test cards. - * By default: MAD. - */ - private AIType aiTypeA, aiTypeB; - - public CardTestBase() { - aiTypeA = AIType.MAD; - aiTypeB = AIType.MAD; - } - - public CardTestBase(AIType aiTypeA, AIType aiTypeB) { - this.aiTypeA = aiTypeA; - this.aiTypeB = aiTypeB; - } - - protected Player createNewPlayer(String playerName, AIType aiType) { - Player player = null; - switch (aiType) { - case MinimaxHybrid: - player = createPlayer(playerName, "Computer - minimax hybrid"); - break; - case MAD: - player = createPlayer(playerName, "Computer - mad"); - break; - case MonteCarlo: - player = createPlayer(playerName, "Computer - monte carlo"); - break; - } - return player; - } - - @Before - public void reset() throws GameException, FileNotFoundException { - if (currentGame != null) { - logger.info("Resetting previous game and creating new one!"); - currentGame = null; - System.gc(); - } - - Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ALL); - - playerA = createNewPlayer("PlayerA", aiTypeA); - playerA.setTestMode(true); - logger.info("Loading deck..."); - Deck deck = Deck.load(DeckImporterUtil.importDeck("RB Aggro.dck")); - logger.info("Done!"); - if (deck.getCards().size() < 40) { - throw new IllegalArgumentException("Couldn't load deck, deck size=" + deck.getCards().size()); - } - game.addPlayer(playerA, deck); - game.loadCards(deck.getCards(), playerA.getId()); - - playerB = createNewPlayer("PlayerB", aiTypeB); - playerB.setTestMode(true); - Deck deck2 = Deck.load(DeckImporterUtil.importDeck("RB Aggro.dck")); - if (deck2.getCards().size() < 40) { - throw new IllegalArgumentException("Couldn't load deck, deck size=" + deck2.getCards().size()); - } - game.addPlayer(playerB, deck2); - game.loadCards(deck2.getCards(), playerB.getId()); - activePlayer = playerA; - currentGame = game; - - stopOnTurn = 2; - stopAtStep = PhaseStep.UNTAP; - handCardsA.clear(); - handCardsB.clear(); - battlefieldCardsA.clear(); - battlefieldCardsB.clear(); - graveyardCardsA.clear(); - graveyardCardsB.clear(); - libraryCardsA.clear(); - libraryCardsB.clear(); - commandsA.clear(); - commandsB.clear(); - } - - public void load(String path) throws FileNotFoundException, GameException { - load(path, AIType.MAD, AIType.MAD); - } - - public void load(String path, AIType aiTypeA, AIType aiTypeB) throws FileNotFoundException, GameException { - String cardPath = TESTS_PATH + path; - File checkFile = new File(cardPath); - if (!checkFile.exists()) { - throw new FileNotFoundException("Couldn't find test file: " + cardPath); - } - if (checkFile.isDirectory()) { - throw new FileNotFoundException("Couldn't find test file: " + cardPath + ". It is directory."); - } - - if (currentGame != null) { - logger.info("Resetting previous game and creating new one!"); - currentGame = null; - System.gc(); - } - - Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ALL); - - playerA = createNewPlayer("ComputerA", aiTypeA); - playerA.setTestMode(true); - - Deck deck = Deck.load(DeckImporterUtil.importDeck("RB Aggro.dck")); - - if (deck.getCards().size() < 40) { - throw new IllegalArgumentException("Couldn't load deck, deck size=" + deck.getCards().size()); - } - game.addPlayer(playerA, deck); - game.loadCards(deck.getCards(), playerA.getId()); - - playerB = createNewPlayer("ComputerB", aiTypeB); - playerB.setTestMode(true); - Deck deck2 = Deck.load(DeckImporterUtil.importDeck("RB Aggro.dck")); - if (deck2.getCards().size() < 40) { - throw new IllegalArgumentException("Couldn't load deck, deck size=" + deck2.getCards().size()); - } - game.addPlayer(playerB, deck2); - game.loadCards(deck2.getCards(), playerB.getId()); - - parseScenario(cardPath); - - activePlayer = playerA; - currentGame = game; - } - - /** - * Starts testing card by starting current game. - * - * @throws IllegalStateException In case game wasn't created previously. Use {@link #load} method to initialize the game. - */ - public void execute() throws IllegalStateException { - if (currentGame == null || activePlayer == null) { - throw new IllegalStateException("Game is not initialized. Use load method to load a test case and initialize a game."); - } - - currentGame.cheat(playerA.getId(), commandsA); - currentGame.cheat(playerA.getId(), libraryCardsA, handCardsA, battlefieldCardsA, graveyardCardsA); - currentGame.cheat(playerB.getId(), commandsB); - currentGame.cheat(playerB.getId(), libraryCardsB, handCardsB, battlefieldCardsB, graveyardCardsB); - - boolean testMode = true; - long t1 = System.nanoTime(); - GameOptions gameOptions = new GameOptions(); - gameOptions.testMode = true; - gameOptions.stopOnTurn = stopOnTurn; - gameOptions.stopAtStep = stopAtStep; - currentGame.start(activePlayer.getId(), gameOptions); - long t2 = System.nanoTime(); - logger.info("Winner: " + currentGame.getWinner()); - logger.info("Time: " + (t2 - t1) / 1000000 + " ms"); - - assertTheResults(); - } - - /** - * Assert expected and actual results. - */ - private void assertTheResults() { - logger.info("Matching expected results:"); - for (String line : expectedResults) { - boolean ok = false; - try { - ExpectedType type = getExpectedType(line); - if (type.equals(CardTestBase.ExpectedType.UNKNOWN)) { - throw new AssertionError("Unknown expected type, check the line in $expected section=" + line); - } - parseType(type, line); - ok = true; - } finally { - logger.info(" " + line + " - " + (ok ? "OK" : "ERROR")); - } - } - } - - private ExpectedType getExpectedType(String line) { - if (line.startsWith("turn:")) { - return CardTestBase.ExpectedType.TURN_NUMBER; - } - if (line.startsWith("result:")) { - return CardTestBase.ExpectedType.RESULT; - } - if (line.startsWith("life:")) { - return CardTestBase.ExpectedType.LIFE; - } - if (line.startsWith("battlefield:")) { - return CardTestBase.ExpectedType.BATTLEFIELD; - } - if (line.startsWith("graveyard:")) { - return CardTestBase.ExpectedType.GRAVEYARD; - } - return CardTestBase.ExpectedType.UNKNOWN; - } - - private void parseType(ExpectedType type, String line) { - if (type.equals(CardTestBase.ExpectedType.TURN_NUMBER)) { - int turn = getIntParam(line, 1); - Assert.assertEquals("Turn numbers are not equal", turn, currentGame.getTurnNum()); - return; - } - if (type.equals(CardTestBase.ExpectedType.RESULT)) { - String expected = getStringParam(line, 1); - String actual = "draw"; - if (currentGame.getWinner().equals("Player ComputerA is the winner")) { - actual = "won"; - } else if (currentGame.getWinner().equals("Player ComputerB is the winner")) { - actual = "lost"; - } - Assert.assertEquals("Game results are not equal", expected, actual); - return; - } - if (type.equals(CardTestBase.ExpectedType.LIFE)) { - String player = getStringParam(line, 1); - int expected = getIntParam(line, 2); - if (player.equals("ComputerA")) { - int actual = currentGame.getPlayer(playerA.getId()).getLife(); - Assert.assertEquals("Life amounts are not equal", expected, actual); - } else if (player.equals("ComputerB")) { - int actual = currentGame.getPlayer(playerB.getId()).getLife(); - Assert.assertEquals("Life amounts are not equal", expected, actual); - } else { - throw new IllegalArgumentException("Wrong player in 'life' line, player=" + player + ", line=" + line); - } - return; - } - if (type.equals(CardTestBase.ExpectedType.BATTLEFIELD)) { - String playerName = getStringParam(line, 1); - String cardName = getStringParam(line, 2); - int expectedCount = getIntParam(line, 3); - Player player = null; - if (playerName.equals("ComputerA")) { - player = currentGame.getPlayer(playerA.getId()); - } else if (playerName.equals("ComputerB")) { - player = currentGame.getPlayer(playerB.getId()); - } else { - throw new IllegalArgumentException("Wrong player in 'battlefield' line, player=" + player + ", line=" + line); - } - int actualCount = 0; - for (Permanent permanent : currentGame.getBattlefield().getAllPermanents()) { - if (permanent.getControllerId().equals(player.getId())) { - if (permanent.getName().equals(cardName)) { - actualCount++; - } - } - } - Assert.assertEquals("(Battlefield) Card counts are not equal (" + cardName + ")", expectedCount, actualCount); - return; - } - if (type.equals(CardTestBase.ExpectedType.GRAVEYARD)) { - String playerName = getStringParam(line, 1); - String cardName = getStringParam(line, 2); - int expectedCount = getIntParam(line, 3); - Player player = null; - if (playerName.equals("ComputerA")) { - player = currentGame.getPlayer(playerA.getId()); - } else if (playerName.equals("ComputerB")) { - player = currentGame.getPlayer(playerB.getId()); - } else { - throw new IllegalArgumentException("Wrong player in 'graveyard' line, player=" + player + ", line=" + line); - } - int actualCount = 0; - for (Card card : player.getGraveyard().getCards(currentGame)) { - if (card.getName().equals(cardName)) { - actualCount++; - } - } - Assert.assertEquals("(Graveyard) Card counts are not equal (" + cardName + ")", expectedCount, actualCount); - } - } - - private int getIntParam(String line, int index) { - String[] params = line.split(":"); - if (index > params.length - 1) { - throw new IllegalArgumentException("Not correct line: " + line); - } - return Integer.parseInt(params[index]); - } - - private String getStringParam(String line, int index) { - String[] params = line.split(":"); - if (index > params.length - 1) { - throw new IllegalArgumentException("Not correct line: " + line); - } - return params[index]; - } - - protected void checkPermanentPT(Player player, String cardName, int power, int toughness, Filter.ComparisonScope scope) { - if (currentGame == null) { - throw new IllegalStateException("Current game is null"); - } - if (scope.equals(Filter.ComparisonScope.All)) { - throw new UnsupportedOperationException("ComparisonScope.All is not implemented."); - } - int count = 0; - int fit = 0; - for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents(player.getId())) { - if (permanent.getName().equals(cardName)) { - Assert.assertEquals("Power is not the same", power, permanent.getPower().getValue()); - Assert.assertEquals("Toughness is not the same", toughness, permanent.getToughness().getValue()); - break; - } - } - } - -} diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java index 504537039ae..f658dc686ec 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java @@ -79,16 +79,15 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { stopOnTurn = 2; stopAtStep = PhaseStep.UNTAP; - handCardsA.clear(); - handCardsB.clear(); - battlefieldCardsA.clear(); - battlefieldCardsB.clear(); - graveyardCardsA.clear(); - graveyardCardsB.clear(); - libraryCardsA.clear(); - libraryCardsB.clear(); - commandsA.clear(); - commandsB.clear(); + + for (Player player : currentGame.getPlayers().values()) { + TestPlayer testPlayer = (TestPlayer)player; + getCommands(testPlayer).clear(); + getLibraryCards(testPlayer).clear(); + getHandCards(testPlayer).clear(); + getBattlefieldCards(testPlayer).clear(); + getGraveCards(testPlayer).clear(); + } gameOptions = new GameOptions(); } @@ -147,10 +146,12 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { throw new IllegalStateException("Game is not initialized. Use load method to load a test case and initialize a game."); } - currentGame.cheat(playerA.getId(), commandsA); - currentGame.cheat(playerA.getId(), libraryCardsA, handCardsA, battlefieldCardsA, graveyardCardsA); - currentGame.cheat(playerB.getId(), commandsB); - currentGame.cheat(playerB.getId(), libraryCardsB, handCardsB, battlefieldCardsB, graveyardCardsB); + for (Player player : currentGame.getPlayers().values()) { + TestPlayer testPlayer = (TestPlayer)player; + currentGame.cheat(player.getId(), getCommands(testPlayer)); + currentGame.cheat(player.getId(), getLibraryCards(testPlayer), getHandCards(testPlayer), + getBattlefieldCards(testPlayer), getGraveCards(testPlayer)); + } boolean testMode = true; long t1 = System.nanoTime(); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java index 274a0d9d3c9..b5106ac217f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java @@ -1,13 +1,13 @@ package org.mage.test.serverside.base; import mage.Constants; +import mage.Constants.PhaseStep; import mage.cards.Card; import mage.game.Game; import mage.game.match.MatchType; import mage.game.permanent.PermanentCard; import mage.game.tournament.TournamentType; import mage.players.Player; -import mage.server.game.DeckValidatorFactory; import mage.server.game.GameFactory; import mage.server.game.PlayerFactory; import mage.server.tournament.TournamentFactory; @@ -20,6 +20,8 @@ import mage.util.Copier; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.junit.BeforeClass; +import org.mage.test.player.RandomPlayer; +import org.mage.test.player.TestPlayer; import java.io.File; import java.io.FileNotFoundException; @@ -27,8 +29,6 @@ import java.io.FilenameFilter; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -import mage.Constants.PhaseStep; -import org.mage.test.player.RandomPlayer; /** * Base class for all tests. @@ -56,8 +56,8 @@ public abstract class MageTestBase { protected Map commandsA = new HashMap(); protected Map commandsB = new HashMap(); - protected Player playerA; - protected Player playerB; + protected TestPlayer playerA; + protected TestPlayer playerB; /** * Game instance initialized in load method. diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java index c561393e895..946d1ca539e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestPlayerBase.java @@ -41,20 +41,17 @@ public abstract class MageTestPlayerBase { protected Pattern pattern = Pattern.compile("([a-zA-Z]*):([\\w]*):([a-zA-Z ,\\-.!'\\d]*):([\\d]*)(:\\{tapped\\})?"); - protected List handCardsA = new ArrayList(); - protected List handCardsB = new ArrayList(); - protected List battlefieldCardsA = new ArrayList(); - protected List battlefieldCardsB = new ArrayList(); - protected List graveyardCardsA = new ArrayList(); - protected List graveyardCardsB = new ArrayList(); - protected List libraryCardsA = new ArrayList(); - protected List libraryCardsB = new ArrayList(); + protected Map> handCards = new HashMap>(); + protected Map> battlefieldCards = new HashMap>(); + protected Map> graveyardCards = new HashMap>(); + protected Map> libraryCards = new HashMap>(); - protected Map commandsA = new HashMap(); - protected Map commandsB = new HashMap(); + protected Map> commands = new HashMap>(); protected TestPlayer playerA; protected TestPlayer playerB; + protected TestPlayer playerC; + protected TestPlayer playerD; /** * Game instance initialized in load method. @@ -105,15 +102,6 @@ public abstract class MageTestPlayerBase { for (GamePlugin plugin : config.getGameTypes()) { GameFactory.getInstance().addGameType(plugin.getName(), loadGameType(plugin), loadPlugin(plugin)); } -// for (GamePlugin plugin : config.getTournamentTypes()) { -// TournamentFactory.getInstance().addTournamentType(plugin.getName(), loadTournamentType(plugin), loadPlugin(plugin)); -// } -// for (Plugin plugin : config.getPlayerTypes()) { -// PlayerFactory.getInstance().addPlayerType(plugin.getName(), loadPlugin(plugin)); -// } -// for (Plugin plugin : config.getDeckTypes()) { -// DeckValidatorFactory.getInstance().addDeckType(plugin.getName(), loadPlugin(plugin)); -// } Copier.setLoader(classLoader); } @@ -208,30 +196,26 @@ public abstract class MageTestPlayerBase { String zone = m.group(1); String nickname = m.group(2); - if (nickname.equals("ComputerA") || nickname.equals("ComputerB")) { + if (nickname.startsWith("Computer")) { List cards = null; List perms = null; Constants.Zone gameZone; if ("hand".equalsIgnoreCase(zone)) { gameZone = Constants.Zone.HAND; - cards = nickname.equals("ComputerA") ? handCardsA : handCardsB; + cards = getHandCards(getPlayer(nickname)); } else if ("battlefield".equalsIgnoreCase(zone)) { gameZone = Constants.Zone.BATTLEFIELD; - perms = nickname.equals("ComputerA") ? battlefieldCardsA : battlefieldCardsB; + perms = getBattlefieldCards(getPlayer(nickname)); } else if ("graveyard".equalsIgnoreCase(zone)) { gameZone = Constants.Zone.GRAVEYARD; - cards = nickname.equals("ComputerA") ? graveyardCardsA : graveyardCardsB; + cards = getGraveCards(getPlayer(nickname)); } else if ("library".equalsIgnoreCase(zone)) { gameZone = Constants.Zone.LIBRARY; - cards = nickname.equals("ComputerA") ? libraryCardsA : libraryCardsB; + cards = getLibraryCards(getPlayer(nickname)); } else if ("player".equalsIgnoreCase(zone)) { String command = m.group(3); if ("life".equals(command)) { - if (nickname.equals("ComputerA")) { - commandsA.put(Constants.Zone.OUTSIDE, "life:" + m.group(4)); - } else { - commandsB.put(Constants.Zone.OUTSIDE, "life:" + m.group(4)); - } + getCommands(getPlayer(nickname)).put(Constants.Zone.OUTSIDE, "life:" + m.group(4)); } return; } else { @@ -243,11 +227,7 @@ public abstract class MageTestPlayerBase { boolean tapped = m.group(5) != null && m.group(5).equals(":{tapped}"); if (cardName.equals("clear")) { - if (nickname.equals("ComputerA")) { - commandsA.put(gameZone, "clear"); - } else { - commandsB.put(gameZone, "clear"); - } + getCommands(getPlayer(nickname)).put(gameZone, "clear"); } else { for (int i = 0; i < amount; i++) { Card card = Sets.findCard(cardName, true); @@ -272,6 +252,65 @@ public abstract class MageTestPlayerBase { logger.warn("Init string wasn't parsed: " + line); } } + + private TestPlayer getPlayer(String name) { + if (name.equals("ComputerA")) { + return playerA; + } else if (name.equals("ComputerB")) { + return playerB; + } else if (name.equals("ComputerC")) { + return playerC; + } else if (name.equals("ComputerD")) { + return playerD; + } + throw new IllegalArgumentException("Couldn't find player for name=" + name); + } + + protected List getHandCards(TestPlayer player) { + if (handCards.containsKey(player)) { + return handCards.get(player); + } + List hand = new ArrayList(); + handCards.put(player, hand); + return hand; + } + + protected List getGraveCards(TestPlayer player) { + if (graveyardCards.containsKey(player)) { + return graveyardCards.get(player); + } + List grave = new ArrayList(); + graveyardCards.put(player, grave); + return grave; + } + + protected List getLibraryCards(TestPlayer player) { + if (libraryCards.containsKey(player)) { + return libraryCards.get(player); + } + List library = new ArrayList(); + libraryCards.put(player, library); + return library; + } + + protected List getBattlefieldCards(TestPlayer player) { + if (battlefieldCards.containsKey(player)) { + return battlefieldCards.get(player); + } + List battlefield = new ArrayList(); + battlefieldCards.put(player, battlefield); + return battlefield; + } + + protected Map getCommands(TestPlayer player) { + if (commands.containsKey(player)) { + return commands.get(player); + } + Map command = new HashMap(); + commands.put(player, command); + return command; + } + private void includeFrom(String line) throws FileNotFoundException { String[] params = line.split(" "); @@ -294,6 +333,6 @@ public abstract class MageTestPlayerBase { } protected TestPlayer createPlayer(String name) { - return new TestPlayer(name, Constants.RangeOfInfluence.ALL); + return new TestPlayer(name, Constants.RangeOfInfluence.ONE); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java index 14536440128..35fd26f078c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestAPIImpl.java @@ -1,6 +1,7 @@ package org.mage.test.serverside.base.impl; import mage.Constants; +import mage.Constants.PhaseStep; import mage.abilities.Ability; import mage.cards.Card; import mage.filter.Filter; @@ -9,12 +10,12 @@ import mage.game.permanent.PermanentCard; import mage.players.Player; import mage.sets.Sets; import org.junit.Assert; +import org.mage.test.player.TestPlayer; import org.mage.test.serverside.base.CardTestAPI; import org.mage.test.serverside.base.MageTestBase; import java.util.List; import java.util.UUID; -import mage.Constants.PhaseStep; /** * API for test initialization and asserting the test results. @@ -86,7 +87,7 @@ public abstract class CardTestAPIImpl extends MageTestBase implements CardTestAP * @param player {@link Player} to add cards for. Use either playerA or playerB. * @param cardName Card name in string format. */ - public void addCard(Constants.Zone gameZone, Player player, String cardName) { + public void addCard(Constants.Zone gameZone, TestPlayer player, String cardName) { addCard(gameZone, player, cardName, 1, false); } @@ -98,7 +99,7 @@ public abstract class CardTestAPIImpl extends MageTestBase implements CardTestAP * @param cardName Card name in string format. * @param count Amount of cards to be added. */ - public void addCard(Constants.Zone gameZone, Player player, String cardName, int count) { + public void addCard(Constants.Zone gameZone, TestPlayer player, String cardName, int count) { addCard(gameZone, player, cardName, count, false); } @@ -112,7 +113,7 @@ public abstract class CardTestAPIImpl extends MageTestBase implements CardTestAP * @param tapped In case gameZone is Battlefield, determines whether permanent should be tapped. * In case gameZone is other than Battlefield, {@link IllegalArgumentException} is thrown */ - public void addCard(Constants.Zone gameZone, Player player, String cardName, int count, boolean tapped) { + public void addCard(Constants.Zone gameZone, TestPlayer player, String cardName, int count, boolean tapped) { if (gameZone.equals(Constants.Zone.BATTLEFIELD)) { @@ -175,7 +176,7 @@ public abstract class CardTestAPIImpl extends MageTestBase implements CardTestAP * @param player {@link Player} to set life count for. * @param life Life count to set. */ - public void setLife(Player player, int life) { + public void setLife(TestPlayer player, int life) { if (player.equals(playerA)) { commandsA.put(Constants.Zone.OUTSIDE, "life:" + String.valueOf(life)); } else if (player.equals(playerB)) { diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index c1c4f35244d..ef1f6730cc7 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -5,9 +5,13 @@ import mage.Constants.CardType; import mage.Constants.PhaseStep; import mage.abilities.Ability; import mage.cards.Card; +import mage.cards.decks.Deck; +import mage.cards.decks.importer.DeckImporterUtil; import mage.counters.CounterType; import mage.filter.Filter; import mage.game.ExileZone; +import mage.game.Game; +import mage.game.GameException; import mage.game.command.CommandObject; import mage.game.permanent.Permanent; import mage.game.permanent.PermanentCard; @@ -70,18 +74,33 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement addCard(Constants.Zone.LIBRARY, playerB, "Plains", 10); } + protected TestPlayer createPlayer(Game game, TestPlayer player, String name) throws GameException { + player = createNewPlayer(name); + player.setTestMode(true); + logger.debug("Loading deck..."); + Deck deck = Deck.load(DeckImporterUtil.importDeck("RB Aggro.dck")); + logger.debug("Done!"); + if (deck.getCards().size() < 40) { + throw new IllegalArgumentException("Couldn't load deck, deck size=" + deck.getCards().size()); + } + game.addPlayer(player, deck); + game.loadCards(deck.getCards(), player.getId()); + + return player; + } + + protected TestPlayer createNewPlayer(String playerName) { + return createPlayer(playerName); + } + /** * Removes all cards from player's library from the game. * Usually this should be used once before initialization to form the library in certain order. * * @param player {@link Player} to remove all library cards from. */ - public void removeAllCardsFromLibrary(Player player) { - if (player.equals(playerA)) { - commandsA.put(Constants.Zone.LIBRARY, "clear"); - } else if (player.equals(playerB)) { - commandsB.put(Constants.Zone.LIBRARY, "clear"); - } + public void removeAllCardsFromLibrary(TestPlayer player) { + getCommands(player).put(Constants.Zone.LIBRARY, "clear"); } /** @@ -90,12 +109,8 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * * @param player {@link Player} to remove all cards from hand. */ - public void removeAllCardsFromHand(Player player) { - if (player.equals(playerA)) { - commandsA.put(Constants.Zone.HAND, "clear"); - } else if (player.equals(playerB)) { - commandsB.put(Constants.Zone.HAND, "clear"); - } + public void removeAllCardsFromHand(TestPlayer player) { + getCommands(player).put(Constants.Zone.HAND, "clear"); } /** @@ -105,7 +120,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param player {@link Player} to add cards for. Use either playerA or playerB. * @param cardName Card name in string format. */ - public void addCard(Constants.Zone gameZone, Player player, String cardName) { + public void addCard(Constants.Zone gameZone, TestPlayer player, String cardName) { addCard(gameZone, player, cardName, 1, false); } @@ -117,7 +132,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param cardName Card name in string format. * @param count Amount of cards to be added. */ - public void addCard(Constants.Zone gameZone, Player player, String cardName, int count) { + public void addCard(Constants.Zone gameZone, TestPlayer player, String cardName, int count) { addCard(gameZone, player, cardName, count, false); } @@ -131,8 +146,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param tapped In case gameZone is Battlefield, determines whether permanent should be tapped. * In case gameZone is other than Battlefield, {@link IllegalArgumentException} is thrown */ - public void addCard(Constants.Zone gameZone, Player player, String cardName, int count, boolean tapped) { - + public void addCard(Constants.Zone gameZone, TestPlayer player, String cardName, int count, boolean tapped) { if (gameZone.equals(Constants.Zone.BATTLEFIELD)) { for (int i = 0; i < count; i++) { @@ -142,11 +156,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement } PermanentCard p = new PermanentCard(card, null); p.setTapped(tapped); - if (player.equals(playerA)) { - battlefieldCardsA.add(p); - } else if (player.equals(playerB)) { - battlefieldCardsB.add(p); - } + getBattlefieldCards(player).add(p); } } else { if (tapped) { @@ -170,24 +180,15 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param player * @return */ - private List getCardList(Constants.Zone gameZone, Player player) { - if (player.equals(playerA)) { - if (gameZone.equals(Constants.Zone.HAND)) { - return handCardsA; - } else if (gameZone.equals(Constants.Zone.GRAVEYARD)) { - return graveyardCardsA; - } else if (gameZone.equals(Constants.Zone.LIBRARY)) { - return libraryCardsA; - } - } else if (player.equals(playerB)) { - if (gameZone.equals(Constants.Zone.HAND)) { - return handCardsB; - } else if (gameZone.equals(Constants.Zone.GRAVEYARD)) { - return graveyardCardsB; - } else if (gameZone.equals(Constants.Zone.LIBRARY)) { - return libraryCardsB; - } + private List getCardList(Constants.Zone gameZone, TestPlayer player) { + if (gameZone.equals(Constants.Zone.HAND)) { + return getHandCards(player); + } else if (gameZone.equals(Constants.Zone.GRAVEYARD)) { + return getGraveCards(player); + } else if (gameZone.equals(Constants.Zone.LIBRARY)) { + return getLibraryCards(player); } + throw new AssertionError("Zone is not supported by test framework: " + gameZone); } @@ -197,12 +198,8 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement * @param player {@link Player} to set life count for. * @param life Life count to set. */ - public void setLife(Player player, int life) { - if (player.equals(playerA)) { - commandsA.put(Constants.Zone.OUTSIDE, "life:" + String.valueOf(life)); - } else if (player.equals(playerB)) { - commandsB.put(Constants.Zone.OUTSIDE, "life:" + String.valueOf(life)); - } + public void setLife(TestPlayer player, int life) { + getCommands(player).put(Constants.Zone.OUTSIDE, "life:" + String.valueOf(life)); } /** diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java deleted file mode 100644 index 75156d531c3..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/cards/effects/BoostContinuousEffectTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.mage.test.serverside.cards.effects; - -import mage.Constants; -import mage.Constants.PhaseStep; -import mage.filter.Filter; -import org.junit.Ignore; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -/** - * Tests continuous boost effect like "White creatures you control get +1/+1". - * - * @author ayratn - */ -public class BoostContinuousEffectTest extends CardTestBase { - - @Test - @Ignore - public void testHonorOfThePoor() throws Exception { - load("M11/Honor of the Pure.test"); - execute(); - - checkPermanentPT(playerA, "Tine Shrike", 3, 2, Filter.ComparisonScope.Any); - checkPermanentPT(playerA, "Runeclaw Bear", 2, 2, Filter.ComparisonScope.Any); - } - - @Test - public void testHonorOfThePoor2() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Honor of the Pure", 2); - addCard(Constants.Zone.BATTLEFIELD, playerA, "White Knight"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Black Knight"); - - setStopAt(1, PhaseStep.CLEANUP); - execute(); - assertPowerToughness(playerA, "White Knight", 4, 4, Filter.ComparisonScope.Any); - assertPowerToughness(playerA, "Black Knight", 2, 2, Filter.ComparisonScope.Any); - } - - @Test - public void testHonorOfThePoor3() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Honor of the Pure"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "White Knight"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Black Knight"); - - setStopAt(2, PhaseStep.CLEANUP); - execute(); - assertPowerToughness(playerA, "White Knight", 3, 3, Filter.ComparisonScope.Any); - assertPowerToughness(playerA, "Black Knight", 2, 2, Filter.ComparisonScope.Any); - } - - @Test - public void testGiantGrowth() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Forest"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "White Knight"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Black Knight"); - addCard(Constants.Zone.HAND, playerA, "Giant Growth"); - - castSpell(playerA, "Giant Growth"); - addFixedTarget(playerA, "Giant Growth", "White Knight"); - - setStopAt(1, PhaseStep.CLEANUP); - execute(); - assertPowerToughness(playerA, "White Knight", 5, 5, Filter.ComparisonScope.Any); - assertPowerToughness(playerA, "Black Knight", 2, 2, Filter.ComparisonScope.Any); - } - -} diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/performance/CopyGameStatePerformanceTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/performance/CopyGameStatePerformanceTest.java index 82641d5c217..6e81d36e248 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/performance/CopyGameStatePerformanceTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/performance/CopyGameStatePerformanceTest.java @@ -2,7 +2,7 @@ package org.mage.test.serverside.performance; import mage.game.Game; import org.junit.Ignore; -import org.mage.test.serverside.base.CardTestBase; +import org.mage.test.serverside.base.CardTestPlayerBase; /** * Test for copying game state. @@ -10,7 +10,7 @@ import org.mage.test.serverside.base.CardTestBase; * @ayratn */ @Ignore -public class CopyGameStatePerformanceTest extends CardTestBase { +public class CopyGameStatePerformanceTest extends CardTestPlayerBase { public void run() throws Exception { init(); diff --git a/Mage.Tests/tests/Burn the Impure.test b/Mage.Tests/tests/Burn the Impure.test deleted file mode 100644 index e7944112a91..00000000000 --- a/Mage.Tests/tests/Burn the Impure.test +++ /dev/null @@ -1,34 +0,0 @@ -# Test playing Burn the Impure - -### ComputerA ### - -# Battlefield -battlefield:ComputerA:Mountain:2 - -# Hand -hand:ComputerA:Mountain:4 -hand:ComputerA:Burn the Impure:1 - -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Mountain:10 - -### ComputerB ### - -# Battlefield -battlefield:ComputerB:Plains:1 -battlefield:ComputerB:Tine Shrike:1 -#battlefield:ComputerB:Runeclaw Bear:1 - -# Hand -hand:ComputerB:Plains:2 - -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 - -# Life -player:ComputerB:life:3 - diff --git a/Mage.Tests/tests/M11/Honor of the Pure.test b/Mage.Tests/tests/M11/Honor of the Pure.test deleted file mode 100644 index 17ee83f0f36..00000000000 --- a/Mage.Tests/tests/M11/Honor of the Pure.test +++ /dev/null @@ -1,29 +0,0 @@ -### Test playing Honor of the Pure ### -####################################### - -$include green.white.default - -### ComputerA ### -# Hand -hand:ComputerA:Honor of the Pure:1 -# Battlefield -battlefield:ComputerB:Tine Shrike:1 -battlefield:ComputerB:Runeclaw Bear:1 - - -### ComputerB ### -# nothing - -$options - -exit_on_turn:2 - -$expected - -turn:1 -result:draw -life:ComputerA:20 -life:ComputerB:20 -battlefield:ComputerA:Tine Shrike:1 -battlefield:ComputerA:Runeclaw Bear:1 -# note: abilities are tested in code \ No newline at end of file diff --git a/Mage.Tests/tests/MBS/Burn the Impure - no infect.test b/Mage.Tests/tests/MBS/Burn the Impure - no infect.test deleted file mode 100644 index c32bd845e6e..00000000000 --- a/Mage.Tests/tests/MBS/Burn the Impure - no infect.test +++ /dev/null @@ -1,30 +0,0 @@ -### Test playing Burn the Impure ### -### Target: creature with no Infect ### -####################################### - -$include red.default - -### ComputerA ### -# Hand -hand:ComputerA:Burn the Impure:1 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Runeclaw Bear:1 -# Life -player:ComputerB:life:3 - -$options - -exit_on_turn:2 - -$expected - -turn:1 -result:draw -life:ComputerA:20 -life:ComputerB:3 -#battlefield:ComputerB:Runeclaw Bear:0 -#graveyard:ComputerB:Runeclaw Bear:1 - - diff --git a/Mage.Tests/tests/MBS/Burn the Impure.test b/Mage.Tests/tests/MBS/Burn the Impure.test deleted file mode 100644 index 2b72110fa1a..00000000000 --- a/Mage.Tests/tests/MBS/Burn the Impure.test +++ /dev/null @@ -1,29 +0,0 @@ -### Test playing Burn the Impure ### -### Target: creature with Infect ### -####################################### - -$include red.default - -### ComputerA ### -# Hand -hand:ComputerA:Burn the Impure:1 - -### ComputerB ### -# Battlefield -battlefield:ComputerB:Tine Shrike:1 -# Life -player:ComputerB:life:3 - -$options - -exit_on_turn:2 - -$expected - -turn:1 -result:won -life:ComputerA:20 -life:ComputerB:0 -#battlefield:ComputerB:Tine Shrike:0 -#graveyard:ComputerB:Tine Shrike:1 - diff --git a/Mage.Tests/tests/green.white.default b/Mage.Tests/tests/green.white.default deleted file mode 100644 index fb76ec35028..00000000000 --- a/Mage.Tests/tests/green.white.default +++ /dev/null @@ -1,31 +0,0 @@ -# Default init game state for white player (that plays with Plains) - -### ComputerA ### - -# Battlefield -battlefield:ComputerA:Plains:5 -battlefield:ComputerA:Forest:5 - -# Hand -hand:ComputerA:Plains:2 -hand:ComputerA:Forest:2 - -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Plains:5 -library:ComputerA:Forest:5 - -### ComputerB ### - -# Battlefield -battlefield:ComputerB:Mountain:2 - -# Hand -hand:ComputerB:Mountain:2 - -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Mountain:10 - diff --git a/Mage.Tests/tests/red.default b/Mage.Tests/tests/red.default deleted file mode 100644 index 4f2a2f72a94..00000000000 --- a/Mage.Tests/tests/red.default +++ /dev/null @@ -1,28 +0,0 @@ -# Default init game state for red player (that plays with Mountains) - -### ComputerA ### - -# Battlefield -battlefield:ComputerA:Mountain:5 - -# Hand -hand:ComputerA:Mountain:4 - -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Mountain:10 - -### ComputerB ### - -# Battlefield -battlefield:ComputerB:Plains:2 - -# Hand -hand:ComputerB:Plains:2 - -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Plains:10 - diff --git a/Mage.Tests/tests/white.default b/Mage.Tests/tests/white.default deleted file mode 100644 index 44e51196b20..00000000000 --- a/Mage.Tests/tests/white.default +++ /dev/null @@ -1,28 +0,0 @@ -# Default init game state for white player (that plays with Plains) - -### ComputerA ### - -# Battlefield -battlefield:ComputerA:Plains:5 - -# Hand -hand:ComputerA:Plains:4 - -# Library -# from down to top -library:ComputerA:clear:0 -library:ComputerA:Plains:10 - -### ComputerB ### - -# Battlefield -battlefield:ComputerB:Mountain:2 - -# Hand -hand:ComputerB:Mountain:2 - -# Library -# from down to top -library:ComputerB:clear:0 -library:ComputerB:Mountain:10 -