package com.rzg.zombieland.comunes.comunicacion; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import org.junit.Test; import com.rzg.zombieland.comunes.controlador.ControladorTestFactory; import com.rzg.zombieland.comunes.misc.ZombielandException; /** * Testea que el hilo de escucha funcione correctamente. * @author nicolas * */ public class HiloEscuchaTest { private boolean hiloCerrado; /** * Intenta cerrar un hilo de escucha y verifica que haga el join efectivamente. * @throws InterruptedException * @throws UnknownHostException * @throws IOException * @throws ZombielandException */ @Test public void testCerrar() throws InterruptedException, UnknownHostException, IOException, ZombielandException { ServerSocket serverSocket = new ServerSocket(2048); Socket socket = new Socket("localhost", 2048); hiloCerrado = false; HiloEscucha escucha = new HiloEscucha(socket, new ControladorTestFactory()); escucha.addListener(new HiloListener() { @Override public void hiloCerrado(HiloEscucha hilo) { hiloCerrado = true; } }); escucha.start(); assertTrue(escucha.isAlive()); escucha.cerrar(true); escucha.join(); socket.close(); serverSocket.close(); assertFalse(escucha.isAlive()); assertTrue(hiloCerrado); } }