Skip to content
Snippets Groups Projects
Commit a45c464a authored by Ivan Gonzalez's avatar Ivan Gonzalez
Browse files

Terminada la implementación de colaDeAmigos

parent 8dc070ca
No related branches found
No related tags found
2 merge requests!3Develop,!2Cola
Pipeline #
......@@ -242,7 +242,68 @@ public class ColaDeAmigos {
* si se incumple alguna de las condiones puestas al parámetro.
*/
public void colarse(Persona persona) {
if (persona == null)
throw new IllegalArgumentException("La persona no puede ser null");
if (containsPersona(persona.getId()))
throw new IllegalArgumentException("La persona ya está en la cola o hay alguien con su mismo id.");
if (!hasAmigo(persona))
throw new IllegalArgumentException("La persona no tiene amigos en la cola.");
if (buscarAmigo(persona) == null)
throw new IllegalArgumentException("No tiene amigos que puedan colarle.");
Persona amigo = buscarAmigo(persona);
int indexOfAmigo = getCola().indexOf(amigo);
getCola().add(indexOfAmigo, persona);
amigo.restarAmigosPorColar();
}
/**
* Comprobará,dada una Persona, si tiene a un amigo en la cola. Esto se
* cumple si la relación entre la Persona y su amigo es recíproca.
*
* @param persona
* Persona a mirar si tiene amigos en la cola. Debe ser
* correcta:no nula.
* @return true si tiene algún amigo, false en caso contrario.
* @throws IllegalArgumentException
* si se incumple alguna de las condiciones impuestas al
* parámetro.
*/
public boolean hasAmigo(Persona persona) {
if (persona == null)
throw new IllegalArgumentException("La persona no puede ser nula");
Persona actual = null;
for (int i = 0; i < getCola().size(); i++) {
actual = getCola().get(i);
if (actual.getAmigos().contains(persona) && persona.getAmigos().contains(actual))
return true;
}
return false;
}
/**
* Dada una persona, obtiene a un amigo que haya en la cola.
*
* @param persona
* Persona a obtener su amigo de la cola.Debe ser correcta:No
* nula y debe tener amigo en la cola.
* @return el primer amigo de la persona.
* @throw IllegalArgumentException si se incumple alguna de las condiciones
* impuetas al parámetro.
*/
public Persona buscarAmigo(Persona persona) {
if (persona == null)
throw new IllegalArgumentException("La persona no puede ser nula");
if (!hasAmigo(persona))
throw new IllegalArgumentException("La persona no tiene amigos en la cola.");
Persona actual = null;
for (int i = 0; i < getCola().size(); i++) {
actual = getCola().get(i);
if (actual.getAmigos().contains(persona) && persona.getAmigos().contains(actual)
&& actual.getAmigosPorColar() > 0 && actual.getMaxAmigos() > 0)
return actual;
}
return null;
}
}
......@@ -211,7 +211,6 @@ public class ColaDeAmigosTDDTest {
@Test
public void colarseCorrectoTest() {
fail("Quitar en implementación");
ArrayList<Persona> colaInicial = new ArrayList<Persona>();
Persona p = new Persona("Pepe", 1, new ArrayList<Persona>(), new ArrayList<Persona>());
Persona p2 = new Persona("Manu", 2, new ArrayList<Persona>(), new ArrayList<Persona>());
......@@ -225,6 +224,7 @@ public class ColaDeAmigosTDDTest {
p.setMaxAmigos(2);
ColaDeAmigos colaDeAmigos = new ColaDeAmigos(colaInicial);
colaDeAmigos.colarse(p2);
System.out.println("Cosa" + colaInicial.get(0).getId());
assertEquals(p2, colaDeAmigos.getCola().get(colaDeAmigos.getCola().indexOf(p) - 1));
}
......
......@@ -38,4 +38,51 @@ public class ColaDeAmigosTest {
colaDeAmigos.buscarPersona(-1);
}
@Test
public void hasAmigoCorrectoTest() {
ArrayList<Persona> cola = new ArrayList<Persona>();
ColaDeAmigos colaDeAmigos = new ColaDeAmigos(cola);
Persona p = new Persona("pepe", 1, new ArrayList<Persona>(), new ArrayList<Persona>());
colaDeAmigos.hasAmigo(p);
assertFalse(colaDeAmigos.hasAmigo(p));
}
@Test(expected = IllegalArgumentException.class)
public void hasAmigoConPersonaNullTest() {
ArrayList<Persona> cola = new ArrayList<Persona>();
ColaDeAmigos colaDeAmigos = new ColaDeAmigos(cola);
colaDeAmigos.hasAmigo(null);
}
@Test
public void buscarAmigoCorrectoTest() {
ArrayList<Persona> cola = new ArrayList<Persona>();
ColaDeAmigos colaDeAmigos = new ColaDeAmigos(cola);
Persona p = new Persona("pepe", 1, new ArrayList<Persona>(), new ArrayList<Persona>());
Persona p2 = new Persona("pepe", 2, new ArrayList<Persona>(), new ArrayList<Persona>());
p.addConocido(p2);
p.addAmigo(p2);
p.setMaxAmigos(1);
p2.addConocido(p);
p2.addAmigo(p);
cola.add(p);
colaDeAmigos.buscarAmigo(p2);
assertEquals(p, colaDeAmigos.buscarAmigo(p2));
}
@Test(expected = IllegalArgumentException.class)
public void buscarAmigoConPersonaNullTest() {
ArrayList<Persona> cola = new ArrayList<Persona>();
ColaDeAmigos colaDeAmigos = new ColaDeAmigos(cola);
colaDeAmigos.buscarAmigo(null);
}
@Test(expected = IllegalArgumentException.class)
public void buscarAmigoConPersonaQueNoTieneAmigosEnLaColaTest() {
ArrayList<Persona> cola = new ArrayList<Persona>();
ColaDeAmigos colaDeAmigos = new ColaDeAmigos(cola);
Persona p = new Persona("pepe", 1, new ArrayList<Persona>(), new ArrayList<Persona>());
colaDeAmigos.buscarAmigo(p);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment