package ingsw.proj.cluedo.junittests;
import static ingsw.proj.cluedo.utility.Utillity.contains;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import ingsw.proj.cluedo.componenti.Carta;
import ingsw.proj.cluedo.componenti.CartaSospetto;
import ingsw.proj.cluedo.componenti.Casella;
import ingsw.proj.cluedo.componenti.Giocatore;
import ingsw.proj.cluedo.componenti.StanzeEnum;
import java.awt.Point;
import java.util.ArrayList;
import java.util.Iterator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class GiocatoreTest {
Giocatore giocatore;
ArrayList<Carta> mazzo = new ArrayList<Carta>();
Casella posizioneIniziale;
CartaSospetto carta;
String nome;
String nota;
@Before
public void setUp() throws Exception {
posizioneIniziale = new Casella(StanzeEnum.BIBLIOTECA, new Point(4, 6));
carta = new CartaSospetto("ciao");
nome = "pippo";
mazzo.add(carta);
nota = new String("nuova nota");
giocatore = new Giocatore(nome, posizioneIniziale, mazzo);
}
@Test
public void testGiocatore() {
assertNotNull(giocatore);
assertTrue(giocatore.getNome() == nome);
assertNotNull(giocatore.getMazzo());
assertTrue(giocatore.getPosizione() == posizioneIniziale);
assertTrue(giocatore instanceof Giocatore);
}
@Test(expected = NullPointerException.class)
public void riferimentiNull() {
// 1� 3 null, 3 nome, 3 ""
// 2� 3 null, 3 posizioneIniziale
// 3� 3 null, 3 mazzo
new Giocatore(null, null, null);
new Giocatore(null, posizioneIniziale, null);
new Giocatore(null, null, mazzo);
new Giocatore(null, posizioneIniziale, mazzo);
new Giocatore("", null, null);
new Giocatore("", posizioneIniziale, null);
new Giocatore("", null, mazzo);
new Giocatore("", posizioneIniziale, mazzo);
new Giocatore(nome, null, null);
new Giocatore(nome, null, mazzo);
new Giocatore(nome, posizioneIniziale, null);
new Giocatore("", posizioneIniziale, null);
new Giocatore(null, posizioneIniziale, null);
giocatore.aggiungiNota(null);
giocatore.cambiaPosizione(null);
posizioneIniziale = new Casella(StanzeEnum.CORRIDOIO, new Point(-1, 3));
giocatore.cambiaPosizione(posizioneIniziale);
}
@After
public void tearDown() throws Exception {
giocatore = null;
mazzo = null;
posizioneIniziale = null;
carta = null;
nome = null;
nota = null;
System.gc();
}
@Test
public void testAggiungiNota() {
nota = "";
giocatore.aggiungiNota(nota);
assertNotNull(giocatore.getNote());
assertTrue(giocatore.getNote().hasNext() == false);
nota = "nuovanota";
giocatore.aggiungiNota(nota);
Iterator<String> noteIt = giocatore.getNote();
int count = 0;
while (noteIt.hasNext()) {
count++;
noteIt.next();
}
assertTrue(count == 1);
assertTrue(contains(giocatore.getNote(), nota));
giocatore.aggiungiNota(nota);
noteIt = giocatore.getNote();
count = 0;
while (noteIt.hasNext()) {
count++;
noteIt.next();
}
assertTrue(count == 2);
assertTrue(contains(giocatore.getNote(), nota));
}
@Test
public void testCambiaPosizione() {
assertTrue(giocatore.getPosizione() == posizioneIniziale);
posizioneIniziale = new Casella(StanzeEnum.CORRIDOIO, new Point(1, 3));
giocatore.cambiaPosizione(posizioneIniziale);
assertTrue(giocatore.getPosizione() == posizioneIniziale);
}
@Test
public void testHaCarta() {
assertFalse(giocatore.haCarta(null));
assertTrue(giocatore.haCarta("ciao"));
assertFalse(giocatore.haCarta("altraCarta"));
}
@Test
public void testSetInGioco() {
assertTrue(giocatore.getInGioco());
giocatore.setInGioco(false);
assertFalse(giocatore.getInGioco());
}
}