@Test public void chimericMass() { this.addDeck( ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class); this.addDeck( ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class, ChimericMass.class); startGame(new Open()); respondWith(getPlayer(0)); keep(); keep(); goToPhase(Phase.PhaseType.PRECOMBAT_MAIN); respondWith(getSpellAction(ChimericMass.class)); respondWith(18); addMana("(18)"); donePlayingManaAbilities(); pass(); pass(); assertEquals(1, this.game.actualState.battlefield().objects.size()); assertEquals("Chimeric Mass", this.game.actualState.battlefield().objects.get(0).getName()); assertEquals(18, this.game.actualState.battlefield().objects.get(0).counters.size()); assertEquals( 2, this.game.actualState.battlefield().objects.get(0).getAbilityIDsInOrder().size()); assertFalse( this.game.actualState.battlefield().objects.get(0).getTypes().contains(Type.CREATURE)); respondWith(getAbilityAction(ChimericMass.ChimericMassAbility1.class)); addMana("1"); donePlayingManaAbilities(); pass(); pass(); assertEquals(1, this.game.actualState.battlefield().objects.size()); assertEquals("Chimeric Mass", this.game.actualState.battlefield().objects.get(0).getName()); assertEquals(18, this.game.actualState.battlefield().objects.get(0).counters.size()); assertEquals( 3, this.game.actualState.battlefield().objects.get(0).getAbilityIDsInOrder().size()); assertTrue( this.game.actualState.battlefield().objects.get(0).getTypes().contains(Type.CREATURE)); assertEquals(18, this.game.actualState.battlefield().objects.get(0).getPower()); }
@Test public void suturedGhoul() { this.addDeck( // Second Hand (6 cards) SuturedGhoul.class, Shock.class, Shock.class, Shock.class, Shock.class, Shock.class, // Initial Hand (7 cards) ShatteredPerception.class, RagingGoblin.class, Maro.class, GrizzlyBears.class, MoggFanatic.class, Forest.class, Plains.class); this.addDeck( Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class); startGame(new Stacked()); respondWith(getPlayer(0)); keep(); keep(); goToPhase(Phase.PhaseType.PRECOMBAT_MAIN); castAndResolveSpell(ShatteredPerception.class); castAndResolveSpell(SuturedGhoul.class); respondWith(pullChoice(MoggFanatic.class), pullChoice(Maro.class)); assertEquals(5, player(0).getHand(this.game.actualState).objects.size()); assertEquals("Sutured Ghoul", this.game.actualState.battlefield().objects.get(0).getName()); assertEquals(6, this.game.actualState.battlefield().objects.get(0).getPower()); pass(); }
@Test public void obstinateBaloth() { this.addDeck( ObstinateBaloth.class, OnewithNothing.class, MindShatter.class, Plains.class, Plains.class, Plains.class, Plains.class); this.addDeck( ObstinateBaloth.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class); startGame(new Open()); respondWith(getPlayer(0)); keep(); keep(); goToPhase(Phase.PhaseType.PRECOMBAT_MAIN); respondWith(getSpellAction(MindShatter.class)); respondWith(7); respondWith(getTarget(player(1))); addMana("7BB"); donePlayingManaAbilities(); pass(); pass(); assertEquals(1, this.game.actualState.battlefield().objects.size()); assertEquals(1, this.game.actualState.stack().objects.size()); pass(); pass(); assertEquals(24, player(1).lifeTotal); castAndResolveSpell(OnewithNothing.class, "B"); assertEquals(1, this.game.actualState.battlefield().objects.size()); }
@Test public void spellbook() { // Make sure you don't have to discard with a spellbook in play. this.addDeck( Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Meditate.class, BlackLotus.class, Spellbook.class); this.addDeck( Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class); startGame(new Stacked()); respondWith(getPlayer(0)); keep(); keep(); // pass upkeep pass(); pass(); respondWith(getSpellAction(BlackLotus.class)); pass(); pass(); respondWith(getSpellAction(Spellbook.class)); pass(); pass(); respondWith(getSpellAction(Meditate.class)); respondWith(getAbilityAction(BlackLotus.BlackLotusMana.class)); respondWith(Color.BLUE); donePlayingManaAbilities(); pass(); pass(); // End the turn // Pass 1st Main Phase pass(); pass(); // Pass Beginning of Combat pass(); pass(); // Pass Declare Attackers pass(); pass(); // Pass End of Combat pass(); pass(); // Pass 2nd Main Phase pass(); pass(); // Pass End of Turn assertEquals(8, getHand(0).objects.size()); pass(); pass(); // it should know be player 1's upkeep step, not asking player 0 to // discard a card assertEquals(8, getHand(0).objects.size()); assertTrue(this.game.actualState.currentStep().type == Step.StepType.UPKEEP); // End the turn // Pass Upkeep pass(); pass(); // Pass Draw pass(); pass(); // Pass 1st Main Phase pass(); pass(); // Pass Beginning of Combat pass(); pass(); // Pass Declare Attackers pass(); pass(); // Pass End of Combat pass(); pass(); // Pass 2nd Main Phase pass(); pass(); // Pass End of Turn assertEquals(8, getHand(1).objects.size()); pass(); pass(); // it should now be player 1's cleanup step, and they should be being // asked to discard a card assertEquals(8, getHand(1).objects.size()); assertTrue(this.game.actualState.currentStep().type == Step.StepType.CLEANUP); // discard a card respondWith(pullChoice(Plains.class)); // now it should be player 1's upkeep step (a turn was skipped because // of meditate) assertEquals(8, getHand(0).objects.size()); assertEquals(7, getHand(1).objects.size()); assertTrue(this.game.actualState.currentStep().type == Step.StepType.UPKEEP); }
@Test public void tarmogoyf() { this.addDeck( Tarmogoyf.class, Tarmogoyf.class, Tarmogoyf.class, BlackLotus.class, BlackLotus.class, Shock.class, Shock.class); this.addDeck( Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class, Plains.class); startGame(new Open()); respondWith(getPlayer(0)); keep(); keep(); // pass upkeep pass(); pass(); respondWith(getSpellAction(BlackLotus.class)); pass(); pass(); respondWith(getSpellAction(Tarmogoyf.class)); respondWith(getAbilityAction(BlackLotus.BlackLotusMana.class)); respondWith(Color.GREEN); donePlayingManaAbilities(); respondWith(getMana(Color.GREEN, Color.GREEN)); pass(); pass(); assertTrue(this.game.actualState.battlefield().objects.get(0).getName().equals("Tarmogoyf")); assertEquals(1, this.game.actualState.battlefield().objects.get(0).getPower()); assertEquals(2, this.game.actualState.battlefield().objects.get(0).getToughness()); respondWith(getSpellAction(BlackLotus.class)); pass(); pass(); respondWith(getSpellAction(Shock.class)); respondWith(getTarget(Tarmogoyf.class)); respondWith(getAbilityAction(BlackLotus.BlackLotusMana.class)); respondWith(Color.RED); donePlayingManaAbilities(); respondWith(getMana(Color.RED)); pass(); pass(); assertTrue(this.game.actualState.battlefield().objects.get(0).getName().equals("Tarmogoyf")); assertEquals(2, this.game.actualState.battlefield().objects.get(0).getPower()); assertEquals(3, this.game.actualState.battlefield().objects.get(0).getToughness()); assertEquals(2, this.game.actualState.battlefield().objects.get(0).getDamage()); respondWith(getSpellAction(Shock.class)); respondWith(getTarget(Tarmogoyf.class)); donePlayingManaAbilities(); respondWith(getMana(Color.RED)); pass(); pass(); // tarmogoyf should be 3/4 and dead -- it counts itself since it's in // the yard now! GameObject tarmy = this.game.actualState.get(getGraveyard(0).objects.get(0).ID); assertEquals(0, this.game.actualState.battlefield().objects.size()); assertTrue(tarmy.getName().equals("Tarmogoyf")); assertEquals(3, tarmy.getPower()); assertEquals(4, tarmy.getToughness()); }