package com.rzg.zombieland.server.sesion; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Assert; import org.junit.Test; import com.rzg.zombieland.comunes.comunicacion.pojo.POJOCreacionPartida; import com.rzg.zombieland.comunes.misc.ParametrosNoValidosException; import com.rzg.zombieland.comunes.misc.ZombielandException; import com.rzg.zombieland.server.meta.EnviaPeticionesImpl; import com.rzg.zombieland.server.meta.Partida; import com.rzg.zombieland.server.sesion.Sesion.SesionListener; /** * Verifica el correcto funcionamiento de la sesi�n. * @author nicolas * */ public class SesionTest { private final Jugador jugadorValido; private class SesionListenerImpl implements SesionListener { private boolean sesionCerrada = false; @Override public void notificarSesionCerrada(Sesion sesion) { sesionCerrada = true; } public boolean getSesionCerrada() { return sesionCerrada; } } /** * Inicializa al jugador v�lido. * @throws ParametrosNoValidosException */ public SesionTest() throws ParametrosNoValidosException { jugadorValido = new Jugador("a", "b", "b", "c", "d"); } /** * Prueba generar una sesi�n con datos v�lidos. */ @Test public void testDatosValidos() { Sesion sesion = new Sesion(jugadorValido, new EnviaPeticionesImpl()); Assert.assertEquals(jugadorValido, sesion.getJugador()); } /** * Prueba generar una sesi�n con un jugador nulo y espera la excepci�n. */ @Test(expected = NullPointerException.class) public void testJugadorNull() { new Sesion(null, new EnviaPeticionesImpl()); } /** * Prueba generar una sesi�n con un hilo nulo y espera la excepci�n. */ @Test(expected = NullPointerException.class) public void testEnviaPeticionesNull() { new Sesion(jugadorValido, null); } /** * Prueba crear y cerrar una sesi�n. */ @Test public void testCerrar() { Sesion sesion = new Sesion(jugadorValido, new EnviaPeticionesImpl()); SesionListenerImpl listener = new SesionListenerImpl(); sesion.addListener(listener); assertFalse(listener.getSesionCerrada()); sesion.cerrar(); assertTrue(listener.getSesionCerrada()); } /** * Prueba crear y cerrar una sesi�n que ten�a una partida. * @throws ZombielandException * @throws ParametrosNoValidosException */ @Test public void testAbandonarPartida() throws ParametrosNoValidosException, ZombielandException { Sesion sesion = new Sesion(jugadorValido, new EnviaPeticionesImpl()); ServicioSesion.getInstancia().addSesion(sesion); Partida partida = new Partida(jugadorValido, new POJOCreacionPartida(5, 5, "test")); assertEquals(1, partida.getJugadores().size()); assertNull(sesion.getPartida()); sesion.setPartida(partida); assertEquals(partida, sesion.getPartida()); sesion.cerrar(); assertEquals(0, partida.getJugadores().size()); } }