package com.hearthsim.test.minion;
import com.hearthsim.card.Card;
import com.hearthsim.card.CharacterIndex;
import com.hearthsim.card.basic.minion.Nightblade;
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.HearthTreeNode;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class TestNightblade {
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();
Card fb = new Nightblade();
currentPlayer.placeCardHand(fb);
currentPlayer.setMana((byte) 10);
currentPlayer.setMaxMana((byte) 7);
}
@Test
public void testDamagesEnemyHero() throws HSException {
Card theCard = currentPlayer.getHand().get(0);
HearthTreeNode ret = theCard.useOn(PlayerSide.CURRENT_PLAYER, CharacterIndex.HERO, board);
assertNotNull(ret);
currentPlayer = ret.data_.getCurrentPlayer();
waitingPlayer = ret.data_.getWaitingPlayer();
assertEquals(currentPlayer.getHand().size(), 0);
assertEquals(currentPlayer.getMana(), 5);
assertEquals(currentPlayer.getHero().getHealth(), 30);
assertEquals(waitingPlayer.getHero().getHealth(), 27);
}
@Test
public void testKillsEnemyHero() throws HSException {
waitingPlayer.getHero().setHealth((byte)2);
Card theCard = currentPlayer.getHand().get(0);
HearthTreeNode ret = theCard.useOn(PlayerSide.CURRENT_PLAYER, CharacterIndex.HERO, board);
assertNotNull(ret);
currentPlayer = ret.data_.getCurrentPlayer();
waitingPlayer = ret.data_.getWaitingPlayer();
assertEquals(currentPlayer.getHand().size(), 0);
assertEquals(currentPlayer.getMana(), 5);
assertEquals(currentPlayer.getHero().getHealth(), 30);
assertEquals(waitingPlayer.getHero().getHealth(), -1);
assertTrue(ret.data_.isLethalState());
}
}