Documentación de tests

Documento en formato markdown los test de las clases Reserva y Usuario
parent 56ed74a8
...@@ -70,4 +70,35 @@ Al igual que el test `testGetUsuarios()`, este test verifica que el método `get ...@@ -70,4 +70,35 @@ Al igual que el test `testGetUsuarios()`, este test verifica que el método `get
### `testGetReservas()` ### `testGetReservas()`
Este test verifica que el método `getReservas()` de la clase `SistemaCarPooling` devuelva una lista de reservas que no sea nula. Este test verifica que el método `getReservas()` de la clase `SistemaCarPooling` devuelva una lista de reservas que no sea nula.
Estos tests aseguran que el sistema de Carpooling (`SistemaCarPooling`) funcione correctamente al agregar viajes y reservas, al permitir que los usuarios inicien sesión con credenciales válidas e invalidas, y que los métodos de obtención de información devuelvan resultados esperados. Estos tests aseguran que el sistema de Carpooling (`SistemaCarPooling`) funcione correctamente al agregar viajes y reservas, al permitir que los usuarios inicien sesión con credenciales válidas e invalidas, y que los métodos de obtención de información devuelvan resultados esperados.
\ No newline at end of file
## Explicación de los Tests en UsuarioTest.java
### `testCambiarRol()`
Este test comprueba el método `cambiarRol()` de la clase `Usuario`. Primero, se crea una instancia de `Usuario` con un rol de conductor. Luego, se verifica que el rol de esta instancia sea igual a `Rol.CONDUCTOR`. Después, se llama al método `cambiarRol()`, que debería cambiar el rol a `Rol.PASAJERO`, y se verifica que el nuevo rol sea `Rol.PASAJERO`. Finalmente, se llama nuevamente a `cambiarRol()`, y se comprueba que el rol vuelva a ser `Rol.CONDUCTOR`.
### `testOfrecerViaje()`
En este test, se crean dos instancias de `Usuario`, una como conductor y la otra como pasajero. Luego, se llama al método `ofrecerViaje()` para el usuario conductor con ciertos parámetros (origen, destino, fecha, número de asientos y precio). Se espera que esta función devuelva `true`, ya que un conductor puede ofrecer un viaje. Después, se llama a la misma función para el usuario pasajero con los mismos parámetros, y se espera que devuelva `false`, ya que un pasajero no puede ofrecer un viaje.
### `testAsignarPuntuacion()`
En este test, se crean dos instancias de `Usuario`, un conductor y un pasajero. Luego, se llama al método `asignarPuntuacion()` para el conductor y el pasajero, respectivamente, con un identificador, un código de usuario y una puntuación. Se espera que ambas llamadas devuelvan `true`, ya que tanto los conductores como los pasajeros pueden asignar puntuaciones.
### `testBuscarViaje()`
Este test evalúa la función `buscarViaje()` en la clase `Usuario`. Primero, se inicializa un usuario con datos de ejemplo. Luego, se crea una lista de viajes llamada `todosLosViajes` que contiene varios objetos de viaje. Se ejecuta la función `buscarViaje()` con ciertos criterios de búsqueda y la lista de viajes. Se verifica que la lista de viajes disponibles no esté vacía, y se compara el viaje encontrado con los criterios de búsqueda para asegurarse de que coincidan.
Estos tests ayudan a garantizar que la clase `Usuario` funcione según lo esperado y que sus métodos se comporten correctamente en diversas situaciones.
## Explicación de los Tests en ReservaTest.java
### `setUp()`
El método `setUp()` se ejecuta antes de cada test y se encarga de inicializar las instancias necesarias para realizar las pruebas. En este caso, crea una instancia de `Usuario` llamada `conductor` y una instancia de `Reserva` llamada `reserva` con valores de ejemplo, incluyendo un conductor, origen, destino, fecha de salida, número de asientos y precio.
### `testAnadirPasajeros()`
Este test verifica el método `anadirPasajeros()` de la clase `Reserva`. Primero, se llama al método `setUp()` para inicializar las instancias necesarias. Luego, se llama a `anadirPasajeros()` para añadir un pasajero con un identificador "87654321B" a la reserva. Después, se obtiene la lista de pasajeros asociada a la reserva y se verifica que contenga "87654321B". El propósito de este test es asegurarse de que el método `anadirPasajeros()` añada con éxito un pasajero a la reserva.
### `testEsViajero()`
En este test, nuevamente se llama al método `setUp()` para inicializar las instancias. Luego, se llama a `anadirPasajeros()` para añadir un pasajero con el identificador "87654321B" a la reserva. A continuación, se llama al método `esViajero()` con dos identificadores diferentes: "87654321B" (que es un pasajero en la reserva) y "99999999C" (que no está en la reserva). Se espera que el primer llamado a `esViajero()` devuelva `true`, indicando que "87654321B" es un pasajero en la reserva, y el segundo llamado debe devolver `false`, ya que "99999999C" no está en la reserva.
Estos tests aseguran que la clase `Reserva` se comporte adecuadamente al añadir pasajeros y verificar si un usuario es un pasajero en la reserva.
\ No newline at end of file
package com.carpooling.carpoolingaoraha.entidades; package com.carpooling.carpoolingaoraha.entidades;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static com.carpooling.carpoolingaoraha.entidades.Rol.CONDUCTOR; import static com.carpooling.carpoolingaoraha.entidades.Rol.CONDUCTOR;
import static com.carpooling.carpoolingaoraha.entidades.Rol.PASAJERO; import static com.carpooling.carpoolingaoraha.entidades.Rol.PASAJERO;
...@@ -167,43 +169,15 @@ public class Usuario { ...@@ -167,43 +169,15 @@ public class Usuario {
List<Viaje> viajesDisponibles = new ArrayList<>(); List<Viaje> viajesDisponibles = new ArrayList<>();
for (Viaje viaje : todosLosViajes) { for (Viaje viaje : todosLosViajes) {
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino) && if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino)) {
viaje.getFechaSalida().equals(fecha)) { if (viaje.getFechaSalida().equals(fecha)) {
if (getRol().equals(PASAJERO)) { if (getRol().equals(PASAJERO)) {
viajesDisponibles.add(viaje); viajesDisponibles.add(viaje);
}
}
}
// Filtrar las reservas asociadas a los viajes y calcular la puntuación de los conductores
List<Reserva> reservasAsociadas = new ArrayList<>();
for (Reserva reserva : sistemaCarPooling.getReservas()) {
if (viajesDisponibles.contains(reserva.getViaje())) {
reservasAsociadas.add(reserva);
}
}
// Ordenar la lista de viajes en función de la puntuación de los conductores
Collections.sort(viajesDisponibles, new Comparator<Viaje>() {
@Override
public int compare(Viaje viaje1, Viaje viaje2) {
int puntuacionConductor1 = 0;
int puntuacionConductor2 = 0;
for (Reserva reserva : reservasAsociadas) {
if (reserva.getViaje().equals(viaje1)) {
puntuacionConductor1 = Math.max(puntuacionConductor1, reserva.getConductor().getPuntuacion());
}
if (reserva.getViaje().equals(viaje2)) {
puntuacionConductor2 = Math.max(puntuacionConductor2, reserva.getConductor().getPuntuacion());
} }
} }
// Ordenar en orden descendente
return Integer.compare(puntuacionConductor2, puntuacionConductor1);
} }
}); }
return viajesDisponibles; return viajesDisponibles;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment