Skip to content

Commit 1b80010

Browse files
committed
[M3C] Desert Warfare tests
1 parent 0352d84 commit 1b80010

File tree

2 files changed

+278
-9
lines changed

2 files changed

+278
-9
lines changed

Mage.Sets/src/mage/cards/d/DesertWarfare.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
import mage.abilities.Ability;
66
import mage.abilities.TriggeredAbilityImpl;
77
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
8-
import mage.abilities.common.delayed.AtTheBeginOfPlayersNextEndStepDelayedTriggeredAbility;
98
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
109
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
11-
import mage.abilities.decorator.ConditionalOneShotEffect;
1210
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
1311
import mage.abilities.effects.Effect;
1412
import mage.abilities.effects.OneShotEffect;
@@ -24,7 +22,6 @@
2422
import mage.filter.common.FilterControlledPermanent;
2523
import mage.game.Game;
2624
import mage.game.events.GameEvent;
27-
import mage.game.events.SacrificedPermanentEvent;
2825
import mage.game.events.ZoneChangeEvent;
2926
import mage.game.permanent.Permanent;
3027
import mage.game.permanent.token.SandWarriorToken;
@@ -91,10 +88,6 @@ public boolean checkEventType(GameEvent event, Game game) {
9188

9289
@Override
9390
public boolean checkTrigger(GameEvent event, Game game) {
94-
if (!(event instanceof ZoneChangeEvent) && !(event instanceof SacrificedPermanentEvent)) {
95-
return false;
96-
}
97-
Effect effect = new ReturnToBattlefieldUnderYourControlTargetEffect();
9891
if (event instanceof ZoneChangeEvent) {
9992
ZoneChangeEvent zce = (ZoneChangeEvent) event;
10093
Card card = game.getCard(event.getTargetId());
@@ -106,16 +99,16 @@ public boolean checkTrigger(GameEvent event, Game game) {
10699
&& zce.getFromZone() != Zone.LIBRARY)) {
107100
return false;
108101
}
109-
effect.setTargetPointer(new FixedTarget(card, game));
110102
} else {
111103
Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
112104
if (permanent == null
113105
|| !permanent.isOwnedBy(getControllerId())
114106
|| !permanent.hasSubtype(SubType.DESERT, game)) {
115107
return false;
116108
}
117-
effect.setTargetPointer(new FixedTarget(permanent, game));
118109
}
110+
Effect effect = new ReturnToBattlefieldUnderYourControlTargetEffect();
111+
effect.setTargetPointer(new FixedTarget(event.getTargetId(), game));
119112
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect, TargetController.YOU), this);
120113
return true;
121114
}
Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
package org.mage.test.cards.single.m3c;
2+
3+
import mage.constants.PhaseStep;
4+
import mage.constants.Zone;
5+
import org.junit.Test;
6+
import org.mage.test.serverside.base.CardTestPlayerBase;
7+
8+
/**
9+
* @author balazskristof
10+
*/
11+
public class DesertWarfareTest extends CardTestPlayerBase {
12+
13+
@Test
14+
public void TestTokens() {
15+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
16+
addCard(Zone.BATTLEFIELD, playerA, "Desert", 4);
17+
addCard(Zone.HAND, playerA, "Desert");
18+
19+
setStopAt(1, PhaseStep.BEGIN_COMBAT);
20+
execute();
21+
assertTokenCount(playerA, "Sand Warrior Token", 0);
22+
23+
setStopAt(2, PhaseStep.BEGIN_COMBAT);
24+
execute();
25+
assertTokenCount(playerA, "Sand Warrior Token", 0);
26+
27+
playLand(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Desert");
28+
setStopAt(3, PhaseStep.BEGIN_COMBAT);
29+
execute();
30+
assertTokenCount(playerA, "Sand Warrior Token", 5);
31+
32+
setStopAt(4, PhaseStep.BEGIN_COMBAT);
33+
execute();
34+
assertTokenCount(playerA, "Sand Warrior Token", 5);
35+
36+
setStopAt(5, PhaseStep.BEGIN_COMBAT);
37+
execute();
38+
assertTokenCount(playerA, "Sand Warrior Token", 10);
39+
}
40+
41+
@Test
42+
public void TestSacrifice() {
43+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
44+
45+
addCard(Zone.BATTLEFIELD, playerA, "Desert");
46+
addCard(Zone.BATTLEFIELD, playerA, "Akki Avalanchers");
47+
48+
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice");
49+
setChoice(playerA, "Desert");
50+
51+
setStopAt(1, PhaseStep.BEGIN_COMBAT);
52+
execute();
53+
54+
assertGraveyardCount(playerA, "Desert", 1);
55+
assertPermanentCount(playerA, "Desert", 0);
56+
57+
setStopAt(1, PhaseStep.END_TURN);
58+
execute();
59+
60+
assertGraveyardCount(playerA, "Desert", 0);
61+
assertPermanentCount(playerA, "Desert", 1);
62+
}
63+
64+
@Test
65+
public void TestSacrificeOpponentsTurn() {
66+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
67+
68+
addCard(Zone.BATTLEFIELD, playerA, "Desert");
69+
addCard(Zone.BATTLEFIELD, playerA, "Akki Avalanchers");
70+
71+
activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice");
72+
setChoice(playerA, "Desert");
73+
74+
setStopAt(2, PhaseStep.END_TURN);
75+
execute();
76+
77+
assertGraveyardCount(playerA, "Desert", 1);
78+
assertPermanentCount(playerA, "Desert", 0);
79+
80+
setStopAt(3, PhaseStep.END_TURN);
81+
execute();
82+
83+
assertGraveyardCount(playerA, "Desert", 0);
84+
assertPermanentCount(playerA, "Desert", 1);
85+
}
86+
87+
@Test
88+
public void TestDestroy() {
89+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
90+
addCard(Zone.BATTLEFIELD, playerA, "Desert");
91+
92+
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 4);
93+
addCard(Zone.HAND, playerB, "Volcanic Upheaval");
94+
95+
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Volcanic Upheaval");
96+
addTarget(playerB, "Desert");
97+
98+
setStopAt(1, PhaseStep.END_TURN);
99+
execute();
100+
101+
assertGraveyardCount(playerA, "Desert", 1);
102+
assertPermanentCount(playerA, "Desert", 0);
103+
}
104+
105+
@Test
106+
public void TestDiscard() {
107+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
108+
109+
skipInitShuffling();
110+
addCard(Zone.LIBRARY, playerA, "Island");
111+
addCard(Zone.LIBRARY, playerA, "Desert");
112+
113+
addCard(Zone.BATTLEFIELD, playerA, "Mountain");
114+
addCard(Zone.HAND, playerA, "Mountain", 2);
115+
addCard(Zone.HAND, playerA, "Faithless Looting");
116+
117+
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Faithless Looting");
118+
setChoice(playerA, "Island^Desert");
119+
//setChoice(playerA, "Desert");
120+
121+
setStrictChooseMode(true);
122+
setStopAt(1, PhaseStep.END_TURN);
123+
execute();
124+
125+
assertGraveyardCount(playerA, "Desert", 0);
126+
assertGraveyardCount(playerA, "Island", 1);
127+
assertPermanentCount(playerA, "Desert", 1);
128+
}
129+
130+
@Test
131+
public void TestDiscardOpponentsTurn() {
132+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
133+
134+
skipInitShuffling();
135+
addCard(Zone.LIBRARY, playerA, "Island");
136+
addCard(Zone.LIBRARY, playerA, "Desert");
137+
138+
addCard(Zone.BATTLEFIELD, playerA, "Mountain");
139+
addCard(Zone.HAND, playerA, "Mountain", 2);
140+
addCard(Zone.HAND, playerA, "Faithless Looting");
141+
142+
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Faithless Looting");
143+
setChoice(playerA, "Island");
144+
setChoice(playerA, "Desert");
145+
146+
setStrictChooseMode(true);
147+
setStopAt(1, PhaseStep.END_TURN);
148+
execute();
149+
assertGraveyardCount(playerA, "Desert", 0);
150+
assertGraveyardCount(playerA, "Island", 1);
151+
assertPermanentCount(playerA, "Desert", 1);
152+
}
153+
154+
@Test
155+
public void TestCycling() {
156+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
157+
158+
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
159+
addCard(Zone.HAND, playerA, "Desert of the Fervent");
160+
161+
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cycling {1}{R}");
162+
163+
setStopAt(1, PhaseStep.END_TURN);
164+
execute();
165+
166+
assertGraveyardCount(playerA, "Desert of the Fervent", 0);
167+
assertPermanentCount(playerA, "Desert of the Fervent", 1);
168+
}
169+
170+
@Test
171+
public void TestCyclingOpponentsTurn() {
172+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
173+
174+
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
175+
addCard(Zone.HAND, playerA, "Desert of the Fervent");
176+
177+
activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerA, "Cycling {1}{R}");
178+
179+
setStopAt(2, PhaseStep.END_TURN);
180+
execute();
181+
182+
assertGraveyardCount(playerA, "Desert of the Fervent", 1);
183+
assertPermanentCount(playerA, "Desert of the Fervent", 0);
184+
185+
setStopAt(3, PhaseStep.END_TURN);
186+
execute();
187+
188+
assertGraveyardCount(playerA, "Desert of the Fervent", 0);
189+
assertPermanentCount(playerA, "Desert of the Fervent", 1);
190+
}
191+
192+
@Test
193+
public void TestMill() {
194+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
195+
196+
skipInitShuffling();
197+
addCard(Zone.LIBRARY, playerA, "Plains");
198+
addCard(Zone.LIBRARY, playerA, "Island");
199+
addCard(Zone.LIBRARY, playerA, "Desert");
200+
201+
addCard(Zone.BATTLEFIELD, playerA, "Swamp");
202+
addCard(Zone.HAND, playerA, "Stitcher's Supplier");
203+
204+
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Stitcher's Supplier");
205+
206+
setStopAt(1, PhaseStep.END_TURN);
207+
execute();
208+
209+
assertGraveyardCount(playerA, "Desert", 0);
210+
assertPermanentCount(playerA, "Desert", 1);
211+
assertGraveyardCount(playerA, "Plains", 1);
212+
assertGraveyardCount(playerA, "Island", 1);
213+
}
214+
215+
@Test
216+
public void TestMillOpponentsTurn() {
217+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
218+
219+
skipInitShuffling();
220+
addCard(Zone.LIBRARY, playerA, "Plains");
221+
addCard(Zone.LIBRARY, playerA, "Island");
222+
addCard(Zone.LIBRARY, playerA, "Desert");
223+
224+
addCard(Zone.BATTLEFIELD, playerA, "Stitcher's Supplier");
225+
226+
addCard(Zone.BATTLEFIELD, playerB, "Mountain");
227+
addCard(Zone.HAND, playerB, "Shock");
228+
229+
castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Shock");
230+
addTarget(playerB, "Stitcher's Supplier");
231+
232+
setStopAt(2, PhaseStep.END_TURN);
233+
execute();
234+
235+
assertPermanentCount(playerA, "Desert", 0);
236+
assertGraveyardCount(playerA, "Desert", 1);
237+
assertGraveyardCount(playerA, "Plains", 1);
238+
assertGraveyardCount(playerA, "Island", 1);
239+
240+
setStopAt(3, PhaseStep.END_TURN);
241+
execute();
242+
243+
assertPermanentCount(playerA, "Desert", 1);
244+
assertGraveyardCount(playerA, "Desert", 0);
245+
assertGraveyardCount(playerA, "Plains", 1);
246+
assertGraveyardCount(playerA, "Island", 1);
247+
}
248+
249+
@Test
250+
public void TestDuneChanter() {
251+
addCard(Zone.BATTLEFIELD, playerA, "Desert Warfare");
252+
addCard(Zone.BATTLEFIELD, playerA, "Dune Chanter");
253+
254+
skipInitShuffling();
255+
addCard(Zone.LIBRARY, playerA, "Plains");
256+
addCard(Zone.LIBRARY, playerA, "Island");
257+
addCard(Zone.LIBRARY, playerA, "Desert");
258+
259+
addCard(Zone.BATTLEFIELD, playerA, "Swamp");
260+
addCard(Zone.HAND, playerA, "Stitcher's Supplier");
261+
262+
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Stitcher's Supplier");
263+
264+
setStopAt(1, PhaseStep.END_TURN);
265+
execute();
266+
267+
assertGraveyardCount(playerA, "Desert", 0);
268+
assertGraveyardCount(playerA, "Plains", 0);
269+
assertGraveyardCount(playerA, "Island", 0);
270+
assertPermanentCount(playerA, "Desert", 1);
271+
assertPermanentCount(playerA, "Plains", 1);
272+
assertPermanentCount(playerA, "Island", 1);
273+
274+
}
275+
}
276+

0 commit comments

Comments
 (0)