Modificación método buscarViaje() + @Test

parent 3c101bb7
package com.carpooling.carpoolingaoraha.entidades;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
import static com.carpooling.carpoolingaoraha.entidades.Rol.CONDUCTOR;
import static com.carpooling.carpoolingaoraha.entidades.Rol.PASAJERO;
......@@ -169,15 +167,43 @@ public class Usuario {
List<Viaje> viajesDisponibles = new ArrayList<>();
for (Viaje viaje : todosLosViajes) {
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino)) {
if (viaje.getFechaSalida().equals(fecha)) {
if (getRol().equals(PASAJERO)) {
viajesDisponibles.add(viaje);
}
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino) &&
viaje.getFechaSalida().equals(fecha)) {
if (getRol().equals(PASAJERO)) {
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;
}
}
......@@ -43,20 +43,29 @@ public class UsuarioTest {
@Test
public void testBuscarViaje() {
List<Viaje> todosLosViajes = new ArrayList<>();;
Usuario pasajero = new Usuario("Pasajero", "ApellidoPasajero", new Date(), "87654321B", 987654321, "pasajero@example.com", "clave", Rol.PASAJERO);
// Inicializar un usuario de ejemplo
Usuario usuario = new Usuario("Nombre", "Apellidos", new Date(), "123456789", 123456789, "usuario@example.com", "clave", Rol.PASAJERO);
// Inicializar la lista de viajes con datos de ejemplo
List<Viaje> todosLosViajes = new ArrayList<>();
Viaje viaje1 = new Viaje("Origen1", "Destino1", new Date(), 3, 20);
Viaje viaje2 = new Viaje("Origen2", "Destino2", new Date(), 2, 15);
Viaje viaje3 = new Viaje("Origen1", "Destino1", new Date(), 4, 18);
Viaje viaje3 = new Viaje("Origen3", "Destino3", new Date(), 1, 10);
todosLosViajes.add(viaje1);
todosLosViajes.add(viaje2);
todosLosViajes.add(viaje3);
List<Viaje> viajesDisponibles = pasajero.buscarViaje("Origen1", "Destino1", new Date(), Rol.PASAJERO, todosLosViajes);
// Ejecutar la función buscarViaje con datos de ejemplo
List<Viaje> viajesDisponibles = usuario.buscarViaje("Origen1", "Destino1", new Date(), Rol.PASAJERO, todosLosViajes);
assertEquals(2, viajesDisponibles.size());
// Verificar que la lista de viajes disponibles no esté vacía
assertEquals(1, viajesDisponibles.size());
// Verificar que el viaje encontrado coincida con los criterios de búsqueda
Viaje viajeEncontrado = viajesDisponibles.get(0);
assertEquals("Origen1", viajeEncontrado.getOrigen());
assertEquals("Destino1", viajeEncontrado.getDestino());
}
}
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