From 3521b7d89f22fd14ab0c4932261b4487e39069b4 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Thu, 10 Feb 2011 18:38:44 +0300 Subject: [PATCH] Added "AI vs AI" test. Removed clientside tests. --- ...puterPlayer2.java => ComputerPlayer4.java} | 14 +-- ...puterPlayer3.java => ComputerPlayer5.java} | 14 +-- .../mage/player/ai/SimulateBlockWorker.java | 6 +- Mage.Server/config/config.xml | 2 +- Mage.Server/plugins/mage-player-ai-ma.jar | Bin 40551 -> 40820 bytes Mage.Tests/RB Aggro.dck | 19 +++ Mage.Tests/config/config.xml | 7 +- Mage.Tests/plugins/AIMinimax.properties | 7 ++ Mage.Tests/plugins/mage-deck-constructed.jar | Bin 0 -> 3191 bytes Mage.Tests/plugins/mage-deck-limited.jar | Bin 0 -> 2391 bytes .../plugins/mage-game-twoplayerduel.jar | Bin 0 -> 4835 bytes Mage.Tests/plugins/mage-player-ai-ma.jar | Bin 0 -> 40820 bytes Mage.Tests/plugins/mage-player-aiminimax.jar | Bin 0 -> 36412 bytes .../plugins/mage-tournament-booster-draft.jar | Bin 0 -> 5679 bytes Mage.Tests/pom.xml | 6 + .../org/mage/test/clientside/LandTest.java | 22 ++++ .../test/clientside}/LandTestExtended.java | 6 +- .../test/clientside}/LightningHelixTest.java | 11 +- .../mage/test/clientside}/base/Command.java | 2 +- .../mage/test/clientside}/base/MageAPI.java | 7 +- .../clientside}/base/MageAPIExtended.java | 15 +-- .../mage/test/clientside}/base/MageBase.java | 2 +- .../base/exception/CardNotFoundException.java | 2 +- .../mage/test/clientside}/bdd/BDDTests.java | 18 +-- .../org/mage/test/clientside}/bdd/Expect.java | 4 +- .../test/clientside}/bdd/StepController.java | 2 +- .../mage/test/clientside}/bdd/StepState.java | 2 +- .../mage/test/clientside}/bdd/and/And.java | 6 +- .../test/clientside}/bdd/and/Graveyards.java | 8 +- .../mage/test/clientside}/bdd/and/Phase.java | 13 +-- .../mage/test/clientside}/bdd/given/A.java | 11 +- .../mage/test/clientside/bdd/given/Given.java | 9 ++ .../mage/test/clientside/bdd/given/Have.java | 10 ++ .../org/mage/test/clientside/bdd/given/I.java | 10 ++ .../clientside}/bdd/then/Battlefield.java | 8 +- .../mage/test/clientside}/bdd/then/Then.java | 6 +- .../org/mage/test/clientside}/bdd/when/I.java | 4 +- .../mage/test/clientside}/bdd/when/When.java | 2 +- .../src/test/java/org/mage/test/LandTest.java | 22 ---- .../java/org/mage/test/bdd/given/Given.java | 9 -- .../java/org/mage/test/bdd/given/Have.java | 11 -- .../test/java/org/mage/test/bdd/given/I.java | 11 -- .../mage/test/serverside/PlayGameTest.java | 53 +++++++++ .../test/serverside/base/MageTestBase.java | 108 ++++++++++++++++++ Mage/src/mage/cards/decks/Deck.java | 1 + 45 files changed, 322 insertions(+), 148 deletions(-) rename Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/{ComputerPlayer2.java => ComputerPlayer4.java} (98%) rename Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/{ComputerPlayer3.java => ComputerPlayer5.java} (97%) create mode 100644 Mage.Tests/RB Aggro.dck create mode 100644 Mage.Tests/plugins/AIMinimax.properties create mode 100644 Mage.Tests/plugins/mage-deck-constructed.jar create mode 100644 Mage.Tests/plugins/mage-deck-limited.jar create mode 100644 Mage.Tests/plugins/mage-game-twoplayerduel.jar create mode 100644 Mage.Tests/plugins/mage-player-ai-ma.jar create mode 100644 Mage.Tests/plugins/mage-player-aiminimax.jar create mode 100644 Mage.Tests/plugins/mage-tournament-booster-draft.jar create mode 100644 Mage.Tests/src/frozen/org/mage/test/clientside/LandTest.java rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/LandTestExtended.java (68%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/LightningHelixTest.java (65%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/base/Command.java (73%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/base/MageAPI.java (80%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/base/MageAPIExtended.java (65%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/base/MageBase.java (97%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/base/exception/CardNotFoundException.java (78%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/BDDTests.java (54%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/Expect.java (82%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/StepController.java (91%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/StepState.java (65%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/and/And.java (59%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/and/Graveyards.java (74%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/and/Phase.java (68%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/given/A.java (71%) create mode 100644 Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Given.java create mode 100644 Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Have.java create mode 100644 Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/I.java rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/then/Battlefield.java (70%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/then/Then.java (53%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/when/I.java (57%) rename Mage.Tests/src/{test/java/org/mage/test => frozen/org/mage/test/clientside}/bdd/when/When.java (53%) delete mode 100644 Mage.Tests/src/test/java/org/mage/test/LandTest.java delete mode 100644 Mage.Tests/src/test/java/org/mage/test/bdd/given/Given.java delete mode 100644 Mage.Tests/src/test/java/org/mage/test/bdd/given/Have.java delete mode 100644 Mage.Tests/src/test/java/org/mage/test/bdd/given/I.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer2.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java similarity index 98% rename from Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer2.java rename to Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java index a3c3008bb0..5d52139360 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer2.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java @@ -49,7 +49,6 @@ import mage.abilities.ActivatedAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.SearchEffect; import mage.cards.Cards; -import mage.cards.decks.Deck; import mage.choices.Choice; import mage.filter.FilterAbility; import mage.game.Game; @@ -85,9 +84,9 @@ import mage.util.Logging; * * @author BetaSteward_at_googlemail.com */ -public class ComputerPlayer2 extends ComputerPlayer implements Player { +public class ComputerPlayer4 extends ComputerPlayer implements Player { - private static final transient Logger logger = Logging.getLogger(ComputerPlayer2.class.getName()); + private static final transient Logger logger = Logging.getLogger(ComputerPlayer4.class.getName()); private static final ExecutorService pool = Executors.newFixedThreadPool(1); protected int maxDepth; @@ -99,13 +98,13 @@ public class ComputerPlayer2 extends ComputerPlayer implements protected int currentScore; protected SimulationNode root; - public ComputerPlayer2(String name, RangeOfInfluence range) { + public ComputerPlayer4(String name, RangeOfInfluence range) { super(name, range); maxDepth = Config.maxDepth; maxNodes = Config.maxNodes; } - public ComputerPlayer2(final ComputerPlayer2 player) { + public ComputerPlayer4(final ComputerPlayer4 player) { super(player); this.maxDepth = player.maxDepth; this.currentScore = player.currentScore; @@ -123,8 +122,8 @@ public class ComputerPlayer2 extends ComputerPlayer implements } @Override - public ComputerPlayer2 copy() { - return new ComputerPlayer2(this); + public ComputerPlayer4 copy() { + return new ComputerPlayer4(this); } @Override @@ -162,6 +161,7 @@ public class ComputerPlayer2 extends ComputerPlayer implements boolean usedStack = false; while (actions.peek() != null) { Ability ability = actions.poll(); + System.out.println("[" + game.getPlayer(playerId).getName() + "] Action: " + ability.toString()); this.activateAbility((ActivatedAbility) ability, game); if (ability.isUsesStack()) usedStack = true; diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer3.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java similarity index 97% rename from Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer3.java rename to Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java index b3f4134527..d4bfe29dfb 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer3.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java @@ -37,7 +37,6 @@ import mage.Constants.PhaseStep; import mage.Constants.RangeOfInfluence; import mage.Constants.Zone; import mage.abilities.Ability; -import mage.cards.decks.Deck; import mage.filter.FilterAbility; import mage.game.Game; import mage.game.combat.Combat; @@ -66,9 +65,9 @@ import mage.util.Logging; * * @author BetaSteward_at_googlemail.com */ -public class ComputerPlayer3 extends ComputerPlayer2 implements Player { +public class ComputerPlayer5 extends ComputerPlayer4 implements Player { - private static final transient Logger logger = Logging.getLogger(ComputerPlayer3.class.getName()); + private static final transient Logger logger = Logging.getLogger(ComputerPlayer5.class.getName()); private static FilterAbility filterLand = new FilterAbility(); private static FilterAbility filterNotLand = new FilterAbility(); @@ -83,19 +82,19 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { } - public ComputerPlayer3(String name, RangeOfInfluence range) { + public ComputerPlayer5(String name, RangeOfInfluence range) { super(name, range); maxDepth = Config.maxDepth; maxNodes = Config.maxNodes; } - public ComputerPlayer3(final ComputerPlayer3 player) { + public ComputerPlayer5(final ComputerPlayer5 player) { super(player); } @Override - public ComputerPlayer3 copy() { - return new ComputerPlayer3(this); + public ComputerPlayer5 copy() { + return new ComputerPlayer5(this); } @Override @@ -109,6 +108,7 @@ public class ComputerPlayer3 extends ComputerPlayer2 implements Player { break; case PRECOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { + System.out.println("["+ game.getPlayer(playerId).getName() + "] Precombat Main, life=" + game.getPlayer(playerId).getLife()); if (actions.size() == 0) { calculatePreCombatActions(game); } diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker.java index 66a27c3c1c..77fbc41225 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/SimulateBlockWorker.java @@ -31,7 +31,7 @@ package mage.player.ai; import java.util.concurrent.Callable; import java.util.logging.Level; import java.util.logging.Logger; -import mage.game.Game; + import mage.util.Logging; /** @@ -43,9 +43,9 @@ public class SimulateBlockWorker implements Callable { private final static Logger logger = Logging.getLogger(SimulationWorker.class.getName()); private SimulationNode node; - private ComputerPlayer3 player; + private ComputerPlayer5 player; - public SimulateBlockWorker(ComputerPlayer3 player, SimulationNode node) { + public SimulateBlockWorker(ComputerPlayer5 player, SimulationNode node) { this.player = player; this.node = node; } diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml index 08f9d514c5..4e9c75581f 100644 --- a/Mage.Server/config/config.xml +++ b/Mage.Server/config/config.xml @@ -7,7 +7,7 @@ - + diff --git a/Mage.Server/plugins/mage-player-ai-ma.jar b/Mage.Server/plugins/mage-player-ai-ma.jar index 0d1597136cc5d1b5608986b6de3470b50bbca7e5..2bf8e7c4aa3727e092cfa255082e1f523b0af282 100644 GIT binary patch delta 22054 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 YNJ(!9B_;cv%0gH~uK)nIF~6<<0a`LeO8@`> delta 21840 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 diff --git a/Mage.Tests/RB Aggro.dck b/Mage.Tests/RB Aggro.dck new file mode 100644 index 0000000000..604fc32923 --- /dev/null +++ b/Mage.Tests/RB Aggro.dck @@ -0,0 +1,19 @@ +NAME:RB Aggro +4 [ALA:156] Blightning +2 [ZEN:245] Mountain +2 [ZEN:244] Mountain +2 [ZEN:243] Mountain +2 [ZEN:242] Mountain +4 [ZEN:223] Scalding Tarn +4 [M10:146] Lightning Bolt +4 [WWK:139] Lavaclaw Reaches +3 [M10:134] Earthquake +4 [ZEN:126] Goblin Guide +4 [CON:65] Hellspark Elemental +4 [M10:125] Ball Lightning +4 [ALA:103] Hell's Thunder +2 [CON:70] Quenchable Fire +3 [ZEN:119] Burst Lightning +4 [ZEN:211] Arid Mesa +4 [M10:223] Dragonskull Summit +4 [WWK:90] Searing Blaze diff --git a/Mage.Tests/config/config.xml b/Mage.Tests/config/config.xml index 62c7d6854f..b3ae1e8072 100644 --- a/Mage.Tests/config/config.xml +++ b/Mage.Tests/config/config.xml @@ -3,17 +3,14 @@ - - - + - - + diff --git a/Mage.Tests/plugins/AIMinimax.properties b/Mage.Tests/plugins/AIMinimax.properties new file mode 100644 index 0000000000..96b5480294 --- /dev/null +++ b/Mage.Tests/plugins/AIMinimax.properties @@ -0,0 +1,7 @@ +maxDepth=10 +maxNodes=5000 +evaluatorLifeFactor=2 +evaluatorPermanentFactor=1 +evaluatorCreatureFactor=1 +evaluatorHandFactor=1 +maxThinkSeconds=30 \ No newline at end of file diff --git a/Mage.Tests/plugins/mage-deck-constructed.jar b/Mage.Tests/plugins/mage-deck-constructed.jar new file mode 100644 index 0000000000000000000000000000000000000000..3647989d7d0afaf8be3e1704bfbe762d4206dabf GIT binary patch literal 3191 zcmbW42|UyPAIC?QnJa9L932)CGxn26uF#HXxk?$uoZD<>Ln2WKxvRAtAxb32??=&c zq$0VGALTv@{eDI1kdpsa$p5eUJ%0c99^d2f_`c82usJrX(NUL4A>+#iv;OatL_5*!gp+O0sW)D69Ko|r7 z$o`k#Zi=@royKsXyAt3oq@%vRv9|Wsy>^fP>>yPnyV|aD zcf@wxbM!v*jVBk0NqJ3{ex#_(qNgMqjsTY@xc)ZX1UKiQS0Uu(dKe zkiO2=aDQ#~X_mB5Be>&(^TpavBeO=vnh_`Ztf+@;jr+uyqAs(b4f(UCr+BYsWM`-u zH(xB9+=l`wM~=fxODw~&6AdZbH9Cn~UNx5_nWdTzY()~|%CFwmVTpwdyoCvk5pOhD zLmeIWy2|&?^anl}KmP|GgJtg){xSQw%9B=A9+ih3GFgH7Z7uWJ^3+Pk(pNU@;GlonGmXTP^A7vyQB(hK8dWQ?smXBV(OBgcK^Lc zPYeoaI=hTdMEbcF$LHW=iSch1=KZA&wrM1x6K;k@^XeI%&yca~SD!&!L&PYPqcX!N zlN;eVqbhme=ZuR7aYebcCKi#gK!II5qwsWmnQHXL$U8HNRAqUlAS-nSh0F9|Nm7v= zSJ4Q&gXAcJj(Wv$u$(;h_BP%-;uZeR4z2_Gwu*dp^nmH>3i1rKiGvTpwpT|L>==D@ zhYox97PP%)tz%4uV(Z4Uay5#~RVHV}o!aCYsWEO{BkBJ1h>z)Ug}^(ML0|$kXmB`% zs1`o@+zTry?0mfTx*6HN{nbl(Dwx&RODnDk{uBWt<@dFK;pZ>Od9xHw#h|A=Tw3P> zo(C(i!Mca`lxR1CHFU?01cZ)|X#K4R}BL%iJ@RIsbNgplSWyvgwjI*TnS6 z9%F$+MT{mw@*{lyhe1ED>1e*m{O8+o^W?5F_PPfB8Sv-y4L0a_+m3nLBMX(^$xt-i)E-4)Zx?7M@Nddv#+ zU#Xej6j(MH(0$9~J%qM@9*EIQ#lY$yO32iEPkTS2JnQh=FLe`zE{2y2e|3#Dq2eay?9EPf|VB>NJAi!6)3x4M$o@rwUvs zX2}$X(lP=}7cDbCmAvJ_AUrdH|F4M&h5lq;DC|5$)QAzFDtObN;8p3(GHK=*KrS)5 z^|+DA^Vzx&@|7l<(FfwncWwQ%B)(2jukv@cg%9u8^Yknu{qLZ{zPJPC#u$4?yryY74Kx9D^s~KKWlJz;c z`Gxjg5FDC@nwFW|Vd_<;Y$IEgX=(*Z8&Y_>U(^v{KGmjI6KOd}8mSCK!0!?Qgu0$5f5|M-?!lm$t#`dosuk0Dk!=R74dpXegi4!l)rZ#1Zt$VZ8 zHc2T!$nR}lZfv0!-8NFB2Avc{!bb$B0hw0?h|ZQ~_Qkw}F%gZ!Iz<$htSXkzjV)F+ zAJhtS-obws_Soy zVNNY9ZToNEm1i?;p@wZ5 zeP$){NX2#<(`b#*I)KnB)6y={(mpUP{N4_sh4^jknd+j-(QZX{t)X?qyuk|UTa#vD z+TYP6I;@YCi^pKJI>eK)C&Ma@c<{{5F%o|KGkYW{tDTTx%XZ)h79L*6nx88%&PW_v z2Y6}By{^z@OJP4&W?W~kWrr$r&dXsdblR^9bG6bp;}-7b+%D2!spx8oe4Bt9#0{BS z3RzTAOL0HeQrsx6WruF&5aGK5TS1R+%Ia4=bD8(exDC{DMp&MDiGWL8tnQx6!0*A+ ztAke%@#k5%O#GfjY3-^Omb3hfkW0CL%*dte*`c(5oqLg(-&gR*ug~`q6&#`aKP&hT d?Q=_ff0=MtAg4(H0L=M4;ROKBaQ{~T{sY3Slyv|A literal 0 HcmV?d00001 diff --git a/Mage.Tests/plugins/mage-deck-limited.jar b/Mage.Tests/plugins/mage-deck-limited.jar new file mode 100644 index 0000000000000000000000000000000000000000..b4ca904cc5da2bb8b5bc5ca4a5ce65769e1ba0e4 GIT binary patch literal 2391 zcmWIWW@h1H0D-0*b8Nv3D8UJ&eO*Hwbv^yu^aG&EI2am%%G9s_VoC){R|ByKvNB&s zKTkK;;1E4ux6i(3PWyQ4>RsgZ*3~+9=KSU$gDb`lo)+nNojal9t?R_W{$xqm6fx}s zDiu5DbO#B02L+eR)mkee!!0z~I7qZc_;k=`pp2JsvDbk|elsmC1?sxig?pKuC@{8d zu26Q4(~Hw%fH@1(^{hZ=O}ZFBorGbG-WhRn84#3FyRH? zZxOyZ?Q^`j?Am9wv9YkqA8=RvmSfJbBdI*y)OvII_n%+?F(&ZOww&UV5@;59@D9tf zK+_Eg2@@5oRdxr-8ZUVh)vb8<#m}b1Q&VFL4d2}9_%P`{%N5OCw*Bn7a$dcY)1vO4 zVm#b)`(f_GABT3A$K0Ig^`o@yP6zv?=Uo+{)@c+eH<70=MSFScso?kAboAKhFysqwOiSNu!& z=6eYW@-AQ4(<7YQ_Ib@WywEyfv4vlT{h@}9p(*Pns{1(9TqhenxNt#FZN;V}si&T& zcq)BVg~E?qx%227cTm2EvB(?ulpz0?>aUh5ZM8|wopzj&%c4i*^v94zD^@ct^V}@q zyOC+C@kOi6_i-l!e&p1dn^=~b2ajmX1R;T`IKL=ek3cfg!lTO?Z_|{&@29FBy&rd|iT_&07q@(y^NvBD9~na0pKp5b>hi0& z*IC_#o_z-dS90uSS4rvHUw`|tw8-L$r!#JEPSX8dVzuzH_37J3K1%(+`Mz#OvudYA z_^bl1)e1akJJ)Xd;1{rH=7aDPt=>G`F2`r@{-NiVK6P!7a^gG#AFqjyAElQV39Vc^ z=>g+4BWci+t;wOdS4Gng_3O&bCU7 zKK|&SwEL+AO!F9*^Mt&Aru*kgBXj$`f1gh}%2m$$n6++YOA_OwXPH~GO2OY4wwD(BI<;6h-+DF$K- zk`qutQGP*cQAuWMad4UcS#Mo09Z%mtk5wTbe099fK7Ja+r|BD7;OQG?uqnX6Xq%D2 zMk9lu0$#pA10w^I2T!%21-t15%0ZVR1CJ|=bH4o4)Kp?>I))7P_)k83C*lQw?Vh~u; zs179I+K}ocd=`T$4F~{Pybs8P=6#r@m}LgU2Ov!#Ee~N@pj8S?ANEQGqzeR=G;#vV z07O-UQpMnNFQ{~b00D;o|BnLeD!7kfWgW}~m@WsEb_mU%Ff}8UeYi~lm3|0QG?+1* z05=6&SqL*1dua$Wc}ZgdN#;V!MnuSA&npPyHv%IbE#&Yx8)Q5p=LC4OvVlzE0>YEP IK&$}s0LO43Qvd(} literal 0 HcmV?d00001 diff --git a/Mage.Tests/plugins/mage-game-twoplayerduel.jar b/Mage.Tests/plugins/mage-game-twoplayerduel.jar new file mode 100644 index 0000000000000000000000000000000000000000..5136d69d1eabf0697c844ea33483e5f7ebbd4e1d GIT binary patch literal 4835 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 literal 0 HcmV?d00001 diff --git a/Mage.Tests/plugins/mage-player-ai-ma.jar b/Mage.Tests/plugins/mage-player-ai-ma.jar new file mode 100644 index 0000000000000000000000000000000000000000..2bf8e7c4aa3727e092cfa255082e1f523b0af282 GIT binary patch literal 40820 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%0AYzYb!4FqpYS+eC|o6@&~03|zloV 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 literal 0 HcmV?d00001 diff --git a/Mage.Tests/plugins/mage-tournament-booster-draft.jar b/Mage.Tests/plugins/mage-tournament-booster-draft.jar new file mode 100644 index 0000000000000000000000000000000000000000..e48a8b75ad4f84e4a69bc148388f1cc2706a13d2 GIT binary patch literal 5679 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

M`I;Z`EVOi)Rq4 z(~(VSgV|d-zO5y!_Xpb~IM~TPZ03W^S5tnk4x|~GVE;D;N z$lX%$lL>h{_f7&7!ZoK`%nQW=cXnPM?m|l$Pey_w73HnnhR+^|mdTiPH|EEcIq@O; zZNXv_kY-uE_N!{uc@UzhYV>s{?ZrjH^cqxOpJ$WakR_w3HQKr#gqAmsxX#qBRJozY z2lWVFR?6yI;t=KC@~jD&3cl8iDVcgwUuQ?Is1XqKOhG)Oj@E?`s;-Y=QrWI3q$`4*y@gFkml1k&9=V<`t|t}4Yf z^~AJqV93;o3p`sZAHLdP)^3QZ*?Gq`VKE~IOuu5p7d!l_&$HB7hw?)=^D zha%5$4?jnaqYBK|b_CpvyZtL@{PS3kDl%W&k;@G3_D`4psLy=!{&j`sn?EL;1}9^G z_x>@|{A<1DcwWCw#gAc<2!99WIQ$(a=6}chdjfQfiNb}$|9Wa)Rr&8Ae;52?5IoA? z06CWbW1ydzaU?)r8!g_KFQZgHaO;~KeS6D4J0A(svGWP)pPYY?r+@C{NT7~;QTmr& z^#5J1zCrw2u)cv{!ms@<#9#7tyq>=fUB^i4xLx#puYO(6?@RKplQ}{<4rGS9#5kJa Pv={d~s(*IS9sT=1VEFk+ literal 0 HcmV?d00001 diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml index f3956fea0a..c451f8e773 100644 --- a/Mage.Tests/pom.xml +++ b/Mage.Tests/pom.xml @@ -39,6 +39,12 @@ junit 4.8.2 + + ${project.groupId} + Mage-Game-TwoPlayerDuel + ${project.version} + compile + log4j diff --git a/Mage.Tests/src/frozen/org/mage/test/clientside/LandTest.java b/Mage.Tests/src/frozen/org/mage/test/clientside/LandTest.java new file mode 100644 index 0000000000..e3d51f7a39 --- /dev/null +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/LandTest.java @@ -0,0 +1,22 @@ +package org.mage.test.clientside; + +import org.junit.Test; +import org.mage.test.clientside.base.MageAPI; +import org.mage.test.clientside.bdd.and.And; +import org.mage.test.clientside.bdd.given.Given; +import org.mage.test.clientside.bdd.then.Then; +import org.mage.test.clientside.bdd.when.When; + +import static org.mage.test.clientside.base.MageAPI.Owner.*; + +public class LandTest extends MageAPI { + + @Test + public void testPlayingLandInMainPhase() throws Exception { + Given.I.have.a.card("Mountain"); + And.phase.is("Precombat Main", mine); + When.I.play("Mountain"); + Then.battlefield.has("Mountain"); + And.graveyards.empty(); + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/LandTestExtended.java b/Mage.Tests/src/frozen/org/mage/test/clientside/LandTestExtended.java similarity index 68% rename from Mage.Tests/src/test/java/org/mage/test/LandTestExtended.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/LandTestExtended.java index 0003969e6c..4dee8a596d 100644 --- a/Mage.Tests/src/test/java/org/mage/test/LandTestExtended.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/LandTestExtended.java @@ -1,10 +1,10 @@ -package org.mage.test; +package org.mage.test.clientside; import mage.Constants; import org.junit.Test; -import org.mage.test.base.MageAPIExtended; +import org.mage.test.clientside.base.MageAPIExtended; -import static org.mage.test.base.MageAPI.Owner.mine; +import static org.mage.test.clientside.base.MageAPI.Owner.mine; public class LandTestExtended extends MageAPIExtended { diff --git a/Mage.Tests/src/test/java/org/mage/test/LightningHelixTest.java b/Mage.Tests/src/frozen/org/mage/test/clientside/LightningHelixTest.java similarity index 65% rename from Mage.Tests/src/test/java/org/mage/test/LightningHelixTest.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/LightningHelixTest.java index 26cb7af199..19e9a3d83c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/LightningHelixTest.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/LightningHelixTest.java @@ -1,14 +1,7 @@ -package org.mage.test; +package org.mage.test.clientside; -import mage.Constants; import org.junit.Test; -import org.mage.test.base.MageAPI; -import org.mage.test.bdd.and.And; -import org.mage.test.bdd.given.Given; -import org.mage.test.bdd.then.Then; -import org.mage.test.bdd.when.When; - -import static org.mage.test.base.MageAPI.Owner.mine; +import org.mage.test.clientside.base.MageAPI; public class LightningHelixTest extends MageAPI { diff --git a/Mage.Tests/src/test/java/org/mage/test/base/Command.java b/Mage.Tests/src/frozen/org/mage/test/clientside/base/Command.java similarity index 73% rename from Mage.Tests/src/test/java/org/mage/test/base/Command.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/base/Command.java index 09deeb3b4b..078c2451ea 100644 --- a/Mage.Tests/src/test/java/org/mage/test/base/Command.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/base/Command.java @@ -1,4 +1,4 @@ -package org.mage.test.base; +package org.mage.test.clientside.base; /** * Command pattern. diff --git a/Mage.Tests/src/test/java/org/mage/test/base/MageAPI.java b/Mage.Tests/src/frozen/org/mage/test/clientside/base/MageAPI.java similarity index 80% rename from Mage.Tests/src/test/java/org/mage/test/base/MageAPI.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/base/MageAPI.java index ca3251e95f..308b63d90d 100644 --- a/Mage.Tests/src/test/java/org/mage/test/base/MageAPI.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/base/MageAPI.java @@ -1,9 +1,8 @@ -package org.mage.test.base; +package org.mage.test.clientside.base; import org.junit.BeforeClass; -import org.mage.test.bdd.StepController; -import org.mage.test.bdd.StepState; -import sun.reflect.generics.reflectiveObjects.NotImplementedException; +import org.mage.test.clientside.bdd.StepController; +import org.mage.test.clientside.bdd.StepState; /** * Parent class for all Mage tests. diff --git a/Mage.Tests/src/test/java/org/mage/test/base/MageAPIExtended.java b/Mage.Tests/src/frozen/org/mage/test/clientside/base/MageAPIExtended.java similarity index 65% rename from Mage.Tests/src/test/java/org/mage/test/base/MageAPIExtended.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/base/MageAPIExtended.java index 52c4f5cadc..cef5ce49af 100644 --- a/Mage.Tests/src/test/java/org/mage/test/base/MageAPIExtended.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/base/MageAPIExtended.java @@ -1,15 +1,12 @@ -package org.mage.test.base; +package org.mage.test.clientside.base; import mage.Constants; -import org.junit.BeforeClass; -import org.mage.test.bdd.StepController; -import org.mage.test.bdd.StepState; -import org.mage.test.bdd.and.And; -import org.mage.test.bdd.given.Given; -import org.mage.test.bdd.then.Then; -import org.mage.test.bdd.when.When; +import org.mage.test.clientside.bdd.and.And; +import org.mage.test.clientside.bdd.given.Given; +import org.mage.test.clientside.bdd.then.Then; +import org.mage.test.clientside.bdd.when.When; -import static org.mage.test.base.MageAPI.Owner.mine; +import static org.mage.test.clientside.base.MageAPI.Owner.mine; /** * Contains wrappers for bdd calls. diff --git a/Mage.Tests/src/test/java/org/mage/test/base/MageBase.java b/Mage.Tests/src/frozen/org/mage/test/clientside/base/MageBase.java similarity index 97% rename from Mage.Tests/src/test/java/org/mage/test/base/MageBase.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/base/MageBase.java index e7a855c7d0..c1ac149db1 100644 --- a/Mage.Tests/src/test/java/org/mage/test/base/MageBase.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/base/MageBase.java @@ -1,4 +1,4 @@ -package org.mage.test.base; +package org.mage.test.clientside.base; import mage.interfaces.MageException; import mage.interfaces.Server; diff --git a/Mage.Tests/src/test/java/org/mage/test/base/exception/CardNotFoundException.java b/Mage.Tests/src/frozen/org/mage/test/clientside/base/exception/CardNotFoundException.java similarity index 78% rename from Mage.Tests/src/test/java/org/mage/test/base/exception/CardNotFoundException.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/base/exception/CardNotFoundException.java index a911c36544..0da2793ee5 100644 --- a/Mage.Tests/src/test/java/org/mage/test/base/exception/CardNotFoundException.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/base/exception/CardNotFoundException.java @@ -1,4 +1,4 @@ -package org.mage.test.base.exception; +package org.mage.test.clientside.base.exception; /** * Thrown when server couldn't create card with given name. diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/BDDTests.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/BDDTests.java similarity index 54% rename from Mage.Tests/src/test/java/org/mage/test/bdd/BDDTests.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/BDDTests.java index f5a2d3d8a4..6f4f3dd174 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/BDDTests.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/BDDTests.java @@ -1,15 +1,15 @@ -package org.mage.test.bdd; +package org.mage.test.clientside.bdd; import org.junit.Test; -import org.mage.test.base.Command; -import org.mage.test.base.MageAPI; -import org.mage.test.base.exception.CardNotFoundException; -import org.mage.test.bdd.and.And; -import org.mage.test.bdd.given.Given; -import org.mage.test.bdd.then.Then; -import org.mage.test.bdd.when.When; +import org.mage.test.clientside.base.Command; +import org.mage.test.clientside.base.MageAPI; +import org.mage.test.clientside.base.exception.CardNotFoundException; +import org.mage.test.clientside.bdd.and.And; +import org.mage.test.clientside.bdd.given.Given; +import org.mage.test.clientside.bdd.then.Then; +import org.mage.test.clientside.bdd.when.When; -import static org.mage.test.base.MageAPI.Owner.mine; +import static org.mage.test.clientside.base.MageAPI.Owner.mine; /** * Tests BDD classes. diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/Expect.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/Expect.java similarity index 82% rename from Mage.Tests/src/test/java/org/mage/test/bdd/Expect.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/Expect.java index cf794b9124..49d3669d1f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/Expect.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/Expect.java @@ -1,7 +1,7 @@ -package org.mage.test.bdd; +package org.mage.test.clientside.bdd; import org.junit.Assert; -import org.mage.test.base.Command; +import org.mage.test.clientside.base.Command; import static org.hamcrest.CoreMatchers.is; diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/StepController.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/StepController.java similarity index 91% rename from Mage.Tests/src/test/java/org/mage/test/bdd/StepController.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/StepController.java index d9821bb1c1..60ef062e0e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/StepController.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/StepController.java @@ -1,4 +1,4 @@ -package org.mage.test.bdd; +package org.mage.test.clientside.bdd; /** * Controls steps of bdd calls. diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/StepState.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/StepState.java similarity index 65% rename from Mage.Tests/src/test/java/org/mage/test/bdd/StepState.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/StepState.java index cc264748ea..b1f62f2973 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/StepState.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/StepState.java @@ -1,4 +1,4 @@ -package org.mage.test.bdd; +package org.mage.test.clientside.bdd; public enum StepState { GIVEN, diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/and/And.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/And.java similarity index 59% rename from Mage.Tests/src/test/java/org/mage/test/bdd/and/And.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/And.java index 21e57e3bff..2fca595954 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/and/And.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/And.java @@ -1,7 +1,7 @@ -package org.mage.test.bdd.and; +package org.mage.test.clientside.bdd.and; -import org.mage.test.bdd.StepState; -import org.mage.test.bdd.given.I; +import org.mage.test.clientside.bdd.StepState; +import org.mage.test.clientside.bdd.given.I; public class And { public static Phase phase = new Phase(StepState.UNKNOWN); diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/and/Graveyards.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/Graveyards.java similarity index 74% rename from Mage.Tests/src/test/java/org/mage/test/bdd/and/Graveyards.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/Graveyards.java index 967cc578bb..1972c10a6a 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/and/Graveyards.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/Graveyards.java @@ -1,9 +1,9 @@ -package org.mage.test.bdd.and; +package org.mage.test.clientside.bdd.and; import org.junit.Assert; -import org.mage.test.base.MageAPI; -import org.mage.test.base.MageBase; -import org.mage.test.bdd.StepState; +import org.mage.test.clientside.base.MageAPI; +import org.mage.test.clientside.base.MageBase; +import org.mage.test.clientside.bdd.StepState; import static org.hamcrest.core.Is.is; diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/and/Phase.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/Phase.java similarity index 68% rename from Mage.Tests/src/test/java/org/mage/test/bdd/and/Phase.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/Phase.java index 3854f52b8b..47dde060e0 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/and/Phase.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/and/Phase.java @@ -1,13 +1,10 @@ -package org.mage.test.bdd.and; +package org.mage.test.clientside.bdd.and; -import org.mage.test.base.MageAPI; -import org.mage.test.base.MageBase; -import org.mage.test.bdd.StepState; -import org.mage.test.bdd.given.Have; -import sun.reflect.generics.reflectiveObjects.NotImplementedException; +import org.mage.test.clientside.base.MageAPI; +import org.mage.test.clientside.base.MageBase; +import org.mage.test.clientside.bdd.StepState; -import static org.mage.test.base.MageAPI.*; -import static org.mage.test.base.MageAPI.Owner.*; +import static org.mage.test.clientside.base.MageAPI.Owner.*; public class Phase { private StepState step; diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/given/A.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/A.java similarity index 71% rename from Mage.Tests/src/test/java/org/mage/test/bdd/given/A.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/A.java index ca4b959809..ff7e0539de 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/given/A.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/A.java @@ -1,10 +1,9 @@ -package org.mage.test.bdd.given; +package org.mage.test.clientside.bdd.given; -import org.mage.test.base.MageAPI; -import org.mage.test.base.MageBase; -import org.mage.test.base.exception.CardNotFoundException; -import org.mage.test.bdd.StepController; -import org.mage.test.bdd.StepState; +import org.mage.test.clientside.base.MageAPI; +import org.mage.test.clientside.base.MageBase; +import org.mage.test.clientside.base.exception.CardNotFoundException; +import org.mage.test.clientside.bdd.StepState; public class A { private StepState step; diff --git a/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Given.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Given.java new file mode 100644 index 0000000000..45a6710a41 --- /dev/null +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Given.java @@ -0,0 +1,9 @@ +package org.mage.test.clientside.bdd.given; + +import org.mage.test.clientside.bdd.StepState; +import org.mage.test.clientside.bdd.and.Phase; + +public class Given { + public static I I = new I(StepState.GIVEN); + public static Phase phase = new Phase(StepState.GIVEN); +} diff --git a/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Have.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Have.java new file mode 100644 index 0000000000..a28035efa5 --- /dev/null +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/Have.java @@ -0,0 +1,10 @@ +package org.mage.test.clientside.bdd.given; + +import org.mage.test.clientside.bdd.StepState; + +public class Have { + public Have(StepState step) { + a = new A(step); + } + public A a; +} \ No newline at end of file diff --git a/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/I.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/I.java new file mode 100644 index 0000000000..148fbeae2e --- /dev/null +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/given/I.java @@ -0,0 +1,10 @@ +package org.mage.test.clientside.bdd.given; + +import org.mage.test.clientside.bdd.StepState; + +public class I { + public I(StepState step) { + have = new Have(step); + } + public Have have; +} \ No newline at end of file diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/then/Battlefield.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/then/Battlefield.java similarity index 70% rename from Mage.Tests/src/test/java/org/mage/test/bdd/then/Battlefield.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/then/Battlefield.java index 65b1c77841..abaa744075 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/then/Battlefield.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/then/Battlefield.java @@ -1,8 +1,8 @@ -package org.mage.test.bdd.then; +package org.mage.test.clientside.bdd.then; -import org.mage.test.base.MageAPI; -import org.mage.test.base.MageBase; -import org.mage.test.bdd.StepState; +import org.mage.test.clientside.base.MageAPI; +import org.mage.test.clientside.base.MageBase; +import org.mage.test.clientside.bdd.StepState; public class Battlefield { private StepState step; diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/then/Then.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/then/Then.java similarity index 53% rename from Mage.Tests/src/test/java/org/mage/test/bdd/then/Then.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/then/Then.java index bab0ba4bc9..6e759337dc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/then/Then.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/then/Then.java @@ -1,7 +1,7 @@ -package org.mage.test.bdd.then; +package org.mage.test.clientside.bdd.then; -import org.mage.test.bdd.StepState; -import org.mage.test.bdd.and.Graveyards; +import org.mage.test.clientside.bdd.StepState; +import org.mage.test.clientside.bdd.and.Graveyards; public class Then { public static Battlefield battlefield = new Battlefield(StepState.THEN); diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/when/I.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/when/I.java similarity index 57% rename from Mage.Tests/src/test/java/org/mage/test/bdd/when/I.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/when/I.java index 606b21257a..4d84aa2c98 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/when/I.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/when/I.java @@ -1,6 +1,6 @@ -package org.mage.test.bdd.when; +package org.mage.test.clientside.bdd.when; -import org.mage.test.base.MageBase; +import org.mage.test.clientside.base.MageBase; public class I { public void play(String cardName) throws Exception { diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/when/When.java b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/when/When.java similarity index 53% rename from Mage.Tests/src/test/java/org/mage/test/bdd/when/When.java rename to Mage.Tests/src/frozen/org/mage/test/clientside/bdd/when/When.java index 41cb10a937..97efc9d6ab 100644 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/when/When.java +++ b/Mage.Tests/src/frozen/org/mage/test/clientside/bdd/when/When.java @@ -1,4 +1,4 @@ -package org.mage.test.bdd.when; +package org.mage.test.clientside.bdd.when; public class When { public static I I = new I(); diff --git a/Mage.Tests/src/test/java/org/mage/test/LandTest.java b/Mage.Tests/src/test/java/org/mage/test/LandTest.java deleted file mode 100644 index a2235509d0..0000000000 --- a/Mage.Tests/src/test/java/org/mage/test/LandTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.mage.test; - -import org.junit.Test; -import org.mage.test.base.MageAPI; -import org.mage.test.bdd.and.And; -import org.mage.test.bdd.given.Given; -import org.mage.test.bdd.then.Then; -import org.mage.test.bdd.when.When; - -import static org.mage.test.base.MageAPI.Owner.*; - -public class LandTest extends MageAPI { - - @Test - public void testPlayingLandInMainPhase() throws Exception { - Given.I.have.a.card("Mountain"); - And.phase.is("Precombat Main", mine); - When.I.play("Mountain"); - Then.battlefield.has("Mountain"); - And.graveyards.empty(); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/given/Given.java b/Mage.Tests/src/test/java/org/mage/test/bdd/given/Given.java deleted file mode 100644 index d80bd10d2b..0000000000 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/given/Given.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.mage.test.bdd.given; - -import org.mage.test.bdd.StepState; -import org.mage.test.bdd.and.Phase; - -public class Given { - public static I I = new I(StepState.GIVEN); - public static Phase phase = new Phase(StepState.GIVEN); -} diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/given/Have.java b/Mage.Tests/src/test/java/org/mage/test/bdd/given/Have.java deleted file mode 100644 index 85f46168b3..0000000000 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/given/Have.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.mage.test.bdd.given; - -import org.mage.test.bdd.StepController; -import org.mage.test.bdd.StepState; - -public class Have { - public Have(StepState step) { - a = new A(step); - } - public A a; -} \ No newline at end of file diff --git a/Mage.Tests/src/test/java/org/mage/test/bdd/given/I.java b/Mage.Tests/src/test/java/org/mage/test/bdd/given/I.java deleted file mode 100644 index 5a5160ee5e..0000000000 --- a/Mage.Tests/src/test/java/org/mage/test/bdd/given/I.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.mage.test.bdd.given; - -import org.mage.test.bdd.StepController; -import org.mage.test.bdd.StepState; - -public class I { - public I(StepState step) { - have = new Have(step); - } - public Have have; -} \ No newline at end of file diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java new file mode 100644 index 0000000000..1c1cc4b119 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/PlayGameTest.java @@ -0,0 +1,53 @@ +package org.mage.test.serverside; + +import mage.Constants; +import mage.cards.decks.Deck; +import mage.game.Game; +import mage.game.GameException; +import mage.game.TwoPlayerDuel; +import mage.players.Player; +import mage.server.game.PlayerFactory; +import mage.sets.Sets; +import org.junit.Test; +import org.mage.test.serverside.base.MageTestBase; + +import java.io.FileNotFoundException; + +/** + * @author ayratn + */ +public class PlayGameTest extends MageTestBase { + + @Test + public void playOneGame() throws GameException, FileNotFoundException, IllegalArgumentException { + Game game = new TwoPlayerDuel(Constants.MultiplayerAttackOption.LEFT, Constants.RangeOfInfluence.ALL); + + Player player = createPlayer("computer1", "Computer - mad"); + Deck deck = Deck.load(Sets.loadDeck("RB Aggro.dck")); + + if (deck.getCards().size() < 40) { + throw new IllegalArgumentException("Couldn't load deck, deck side=" + deck.getCards().size()); + } + game.addPlayer(player, deck); + game.loadCards(deck.getCards(), player.getId()); + + Player player2 = createPlayer("computer2", "Computer - mad"); + Deck deck2 = Deck.load(Sets.loadDeck("UW Control.dck")); + if (deck2.getCards().size() < 40) { + throw new IllegalArgumentException("Couldn't load deck, deck side=" + deck2.getCards().size()); + } + game.addPlayer(player2, deck2); + game.loadCards(deck2.getCards(), player2.getId()); + + long t1 = System.nanoTime(); + game.start(player.getId()); + long t2 = System.nanoTime(); + + logger.info("Winner: " + game.getWinner()); + logger.info("Time: " + (t2 - t1) / 1000000 + " ms"); + } + + private Player createPlayer(String name, String playerType) { + return PlayerFactory.getInstance().createPlayer(playerType, name, Constants.RangeOfInfluence.ALL); + } +} 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 new file mode 100644 index 0000000000..56e319cb6c --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/MageTestBase.java @@ -0,0 +1,108 @@ +package org.mage.test.serverside.base; + +import mage.game.match.MatchType; +import mage.game.tournament.TournamentType; +import mage.server.game.DeckValidatorFactory; +import mage.server.game.GameFactory; +import mage.server.game.PlayerFactory; +import mage.server.tournament.TournamentFactory; +import mage.server.util.ConfigSettings; +import mage.server.util.PluginClassLoader; +import mage.server.util.config.GamePlugin; +import mage.server.util.config.Plugin; +import mage.util.Copier; +import mage.util.Logging; +import org.junit.BeforeClass; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author ayratn + */ +public class MageTestBase { + protected static Logger logger = Logging.getLogger(MageTestBase.class.getName()); + + public static PluginClassLoader classLoader = new PluginClassLoader(); + + private final static String pluginFolder = "plugins"; + + @BeforeClass + public static void init() { + logger.info("Starting MAGE tests"); + logger.info("Logging level: " + Logging.getLevel(logger)); + deleteSavedGames(); + ConfigSettings config = ConfigSettings.getInstance(); + 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); + } + + private static Class loadPlugin(Plugin plugin) { + try { + classLoader.addURL(new File(pluginFolder + "/" + plugin.getJar()).toURI().toURL()); + logger.info("Loading plugin: " + plugin.getClassName()); + return Class.forName(plugin.getClassName(), true, classLoader); + } catch (ClassNotFoundException ex) { + logger.log(Level.SEVERE, "Plugin not Found:" + plugin.getJar() + " - check plugin folder"); + } catch (Exception ex) { + logger.log(Level.SEVERE, "Error loading plugin " + plugin.getJar(), ex); + } + return null; + } + + private static MatchType loadGameType(GamePlugin plugin) { + try { + classLoader.addURL(new File(pluginFolder + "/" + plugin.getJar()).toURI().toURL()); + logger.info("Loading game type: " + plugin.getClassName()); + return (MatchType) Class.forName(plugin.getTypeName(), true, classLoader).newInstance(); + } catch (ClassNotFoundException ex) { + logger.log(Level.SEVERE, "Game type not found:" + plugin.getJar() + " - check plugin folder"); + } catch (Exception ex) { + logger.log(Level.SEVERE, "Error loading game type " + plugin.getJar(), ex); + } + return null; + } + + private static TournamentType loadTournamentType(GamePlugin plugin) { + try { + classLoader.addURL(new File(pluginFolder + "/" + plugin.getJar()).toURI().toURL()); + logger.info("Loading tournament type: " + plugin.getClassName()); + return (TournamentType) Class.forName(plugin.getTypeName(), true, classLoader).newInstance(); + } catch (ClassNotFoundException ex) { + logger.log(Level.SEVERE, "Tournament type not found:" + plugin.getJar() + " - check plugin folder"); + } catch (Exception ex) { + logger.log(Level.SEVERE, "Error loading game type " + plugin.getJar(), ex); + } + return null; + } + + private static void deleteSavedGames() { + File directory = new File("saved/"); + if (!directory.exists()) + directory.mkdirs(); + File[] files = directory.listFiles( + new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.endsWith(".game"); + } + } + ); + for (File file : files) { + file.delete(); + } + } +} diff --git a/Mage/src/mage/cards/decks/Deck.java b/Mage/src/mage/cards/decks/Deck.java index 5ebba4cfb8..d7234af042 100644 --- a/Mage/src/mage/cards/decks/Deck.java +++ b/Mage/src/mage/cards/decks/Deck.java @@ -41,6 +41,7 @@ public class Deck implements Serializable { private Set sideboard = new LinkedHashSet(); public static Deck load(DeckCardLists deckCardLists) throws GameException { + return Deck.load(deckCardLists, false); }