Download Proyecto P4
Document related concepts
no text concepts found
Transcript
Dpto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación, Ciudad Universitaria, 28040 Madrid LABORATORIO DE PROGRAMACIÓN - JUNIO 2008 Examen del Proyecto P4 - Solución Enunciado Considere el constructor de Parametros implementado en el proyecto 4, cuya especificación se reproduce a continuación: public Parametros(java.lang.String fichero) throws java.io.IOException Constructor a partir de fichero. Parameters: fichero - con los parámetros de la simulación Throws: java.lang.IllegalArgumentException - si algún valor está fuera de rango java.lang.NumberFormatException - si algún valor está mal escrito java.io.IOException - si hay problemas con el fichero Pregunta 1 (3 puntos): Explique una posible estrategia para implementar una batería completa de pruebas de caja negra, para dicho método. Las pruebas del constructor pueden organizarse del siguiente modo: - Pruebas con ficheros de parámetros correctos, para comprobar que se lee correctamente el objeto Parámetros a partir del fichero - Pruebas con ficheros de parámetros incorrectos, para comprobar que se lanzan correctamente los distintos tipos de excepciones: o Fichero con valores fuera de rango, para probar IllegalArgumentException o Fichero con valores mal escritos, para probar NumberFormatException o Fichero que no existe o no se puede leer, para probar IOException Laboratorio de Programación 14.6.2007 página 1 Pregunta 2 (4 puntos): Implemente, utilizando JUnit, un método de prueba que compruebe que el constructor de parámetros lanza correctamente las excepciones de tipo IllegalArgumentException, de acuerdo con su especificación. Utilice los comentarios que considere oportunos para documentar el código. /** * Prueba lanzamiento de IllegalArgumentException */ public void testParametrosIllegalArgumentException() { Parametros p; // fichero "parametrosIAE.ini" con algún valor fuera de rango try { p = new Parametros("parametrosIAE.ini"); fail("Debería haber lanzado IllegalArgumentException"); } catch (IllegalArgumentException e) { // OK } catch (Exception e) { fail("Ha lanzado excepción distinta de IllegalArgumentException"); } } Pregunta 3 (3 puntos) Escriba un método para la clase Simulador que tome como argumento de entrada un objeto de tipo ColaEventos y devuelva un valor de tipo int con el número de Intentos de Aterrizaje pendientes de ser procesados. /** * Cuenta número de intentos de aterrizaje en una ColaEventos * @param cola ColaEventos * @return Numero Intentos Aterrizaje en la cola */ public int getNumeroIntentosAterrizaje(ColaEventos cola) { int n = 0; // contador ColaEventos colaAux = new ColaEventos(); // cola auxiliar // Solo podemos mirar la cola usando el método extrae while (!cola.isVacia()) { Evento evento = cola.extrae(); if (evento instanceof EventoAeroportuario) { EventoAeroportuario evt = (EventoAeroportuario) evento; if (evt.isIntento() && evt.isAterrizaje()) n++; } colaAux.inserta(evento); } // Podemos restaurar la cola a partir de colaAux while (!colaAux.isVacia()) cola.inserta(colaAux.extrae()); return n; } Laboratorio de Programación 14.6.2007 página 2