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