package com.rzg.zombieland.comunes.comunicacion.pojo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Test;
import com.rzg.zombieland.comunes.misc.ParametrosNoValidosException;
/**
* Verifica el correcto funcionamiento de los POJO de creaci�n de partida.
* @author nicolas
*
*/
public class POJOCreacionPartidaTest {
private final static int CANTIDAD_JUGADORES_VALIDA = 5;
private final static int CANTIDAD_RONDAS_VALIDA = 10;
/**
* Verifica los valores creando un pojo con datos v�lidos.
* @throws ParametrosNoValidosException
*/
@Test
public void testParametrosValidos() throws ParametrosNoValidosException {
POJOCreacionPartida pojo =
new POJOCreacionPartida(CANTIDAD_RONDAS_VALIDA, CANTIDAD_JUGADORES_VALIDA, "a");
assertEquals(CANTIDAD_RONDAS_VALIDA, pojo.getCantidadRondas());
assertEquals(CANTIDAD_JUGADORES_VALIDA, pojo.getCantidadMaximaJugadores());
}
/**
* Verifica la existencia de error al usar una cantidad de rondas fuera de los l�mites.
* @throws ParametrosNoValidosException
*/
@Test
public void testCantidadRondasFueraDeLosLimites() {
try {
new POJOCreacionPartida(POJOCreacionPartida.CANTIDAD_MAXIMA_RONDAS + 1,
CANTIDAD_JUGADORES_VALIDA, "a");
fail("Deber�a haber lanzado una excepci�n");
} catch (ParametrosNoValidosException e) {
// Esperada.
}
try {
new POJOCreacionPartida(POJOCreacionPartida.CANTIDAD_MINIMA_RONDAS - 1,
CANTIDAD_JUGADORES_VALIDA, "a");
fail("Deber�a haber lanzado una excepci�n");
} catch (ParametrosNoValidosException e) {
// Esperada.
}
}
/**
* Verifica la existencia de error al usar valores fuera de los l�mites.
* @throws ParametrosNoValidosException
*/
@Test
public void testCantidadJugadoresFueraDeLosLimites() {
try {
new POJOCreacionPartida(CANTIDAD_RONDAS_VALIDA,
POJOCreacionPartida.CANTIDAD_MAXIMA_JUGADORES + 1, "a");
fail("Deber�a haber lanzado una excepci�n");
} catch (ParametrosNoValidosException e) {
// Esperada.
}
try {
new POJOCreacionPartida(CANTIDAD_RONDAS_VALIDA,
POJOCreacionPartida.CANTIDAD_MINIMA_JUGADORES - 1, "a");
fail("Deber�a haber lanzado una excepci�n");
} catch (ParametrosNoValidosException e) {
// Esperada.
}
}
/**
* Verifica la existencia de error al usar una cantidad de jugadores que no sea
* m�ltiplo de la cantidad de partidas.
* @throws ParametrosNoValidosException
*/
@Test
public void testCantidadDeJugadoresNoMultiploDeCantidadPartidas() {
try {
new POJOCreacionPartida(CANTIDAD_RONDAS_VALIDA,
CANTIDAD_JUGADORES_VALIDA - 1, "a");
fail("Deber�a haber lanzado una excepci�n");
} catch (ParametrosNoValidosException e) {
// Esperada.
}
}
/**
* Verifica que al haber varios errores, se devuelva un mensaje de error por cada uno.
* m�ltiplo de la cantidad de partidas.
* @throws ParametrosNoValidosException
*/
@Test
public void testTodosLosErrores() throws ParametrosNoValidosException {
final int CANTIDAD_ERRORES_ESPERADOS = 4;
try {
new POJOCreacionPartida(POJOCreacionPartida.CANTIDAD_MINIMA_RONDAS - 15,
POJOCreacionPartida.CANTIDAD_MINIMA_JUGADORES - 17, "");
fail("Deber�a haber lanzado una excepci�n");
} catch (ParametrosNoValidosException e) {
assertEquals(CANTIDAD_ERRORES_ESPERADOS, e.getCantidadParametros());
}
}
}