package com.hearthsim.test.spell; import com.hearthsim.card.Card; import com.hearthsim.card.CharacterIndex; import com.hearthsim.card.basic.minion.BoulderfistOgre; import com.hearthsim.card.basic.minion.RaidLeader; import com.hearthsim.card.classic.minion.common.AcolyteOfPain; import com.hearthsim.card.classic.spell.common.InnerRage; import com.hearthsim.card.classic.spell.common.Silence; import com.hearthsim.exception.HSException; import com.hearthsim.model.BoardModel; import com.hearthsim.model.PlayerModel; import com.hearthsim.model.PlayerSide; import com.hearthsim.util.tree.CardDrawNode; import com.hearthsim.util.tree.HearthTreeNode; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TestInnerRage { private HearthTreeNode board; private PlayerModel currentPlayer; private PlayerModel waitingPlayer; @Before public void setup() throws HSException { board = new HearthTreeNode(new BoardModel()); currentPlayer = board.data_.getCurrentPlayer(); waitingPlayer = board.data_.getWaitingPlayer(); board.data_.placeMinion(PlayerSide.CURRENT_PLAYER, new RaidLeader()); board.data_.placeMinion(PlayerSide.CURRENT_PLAYER, new BoulderfistOgre()); board.data_.placeMinion(PlayerSide.CURRENT_PLAYER, new AcolyteOfPain()); board.data_.placeMinion(PlayerSide.WAITING_PLAYER, new RaidLeader()); board.data_.placeMinion(PlayerSide.WAITING_PLAYER, new BoulderfistOgre()); Card fb = new InnerRage(); currentPlayer.placeCardHand(fb); currentPlayer.setMana((byte) 18); waitingPlayer.setMana((byte) 18); currentPlayer.setMaxMana((byte) 8); waitingPlayer.setMaxMana((byte) 8); board.data_.resetMana(); board.data_.resetMinions(); } @Test public void test1() throws HSException { Card theCard = currentPlayer.getHand().get(0); HearthTreeNode ret = theCard.useOn(PlayerSide.CURRENT_PLAYER, CharacterIndex.MINION_1, board); assertFalse(ret == null); assertEquals(currentPlayer.getHand().size(), 0); assertEquals(currentPlayer.getNumMinions(), 3); assertEquals(waitingPlayer.getNumMinions(), 2); assertEquals(currentPlayer.getMana(), 8); assertEquals(waitingPlayer.getMana(), 8); assertEquals(currentPlayer.getHero().getHealth(), 30); assertEquals(waitingPlayer.getHero().getHealth(), 30); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 1); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getHealth(), 3); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 4); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getTotalAttack(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 7); } @Test public void test2() throws HSException { Card theCard = currentPlayer.getHand().get(0); HearthTreeNode ret = theCard.useOn(PlayerSide.CURRENT_PLAYER, CharacterIndex.MINION_2, board); assertFalse(ret == null); assertEquals(currentPlayer.getHand().size(), 0); assertEquals(currentPlayer.getNumMinions(), 3); assertEquals(waitingPlayer.getNumMinions(), 2); assertEquals(currentPlayer.getMana(), 8); assertEquals(waitingPlayer.getMana(), 8); assertEquals(currentPlayer.getHero().getHealth(), 30); assertEquals(waitingPlayer.getHero().getHealth(), 30); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 6); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getHealth(), 3); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 9); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getTotalAttack(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 7); currentPlayer.placeCardHand(new Silence()); theCard = currentPlayer.getHand().get(0); ret = theCard.useOn(PlayerSide.CURRENT_PLAYER, CharacterIndex.MINION_1, board); assertFalse(ret == null); assertEquals(currentPlayer.getHand().size(), 0); assertEquals(currentPlayer.getNumMinions(), 3); assertEquals(waitingPlayer.getNumMinions(), 2); assertEquals(currentPlayer.getMana(), 8); assertEquals(waitingPlayer.getMana(), 8); assertEquals(currentPlayer.getHero().getHealth(), 30); assertEquals(waitingPlayer.getHero().getHealth(), 30); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 6); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getHealth(), 3); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 8); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getTotalAttack(), 1); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 7); } @Test public void test3() throws HSException { Card theCard = currentPlayer.getHand().get(0); HearthTreeNode ret = theCard.useOn(PlayerSide.CURRENT_PLAYER, CharacterIndex.MINION_3, board); assertFalse(ret == null); assertTrue(ret instanceof CardDrawNode); assertEquals(((CardDrawNode)ret).getNumCardsToDraw(), 1); assertEquals(currentPlayer.getHand().size(), 0); assertEquals(currentPlayer.getNumMinions(), 3); assertEquals(waitingPlayer.getNumMinions(), 2); assertEquals(currentPlayer.getMana(), 8); assertEquals(waitingPlayer.getMana(), 8); assertEquals(currentPlayer.getHero().getHealth(), 30); assertEquals(waitingPlayer.getHero().getHealth(), 30); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getHealth(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getHealth(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getHealth(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 7); assertEquals(currentPlayer.getCharacter(CharacterIndex.MINION_3).getTotalAttack(), 4); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_1).getTotalAttack(), 2); assertEquals(waitingPlayer.getCharacter(CharacterIndex.MINION_2).getTotalAttack(), 7); } }