Exemple #1
0
  @Test
  public void testRelaciones() {

    // Test de constructor

    /*
     * Creamos una instancia de la clase Relaciones, sin investigadores
     * con un investigador fuente p, y un investigador destino q
     */

    ArrayList<Investigador> invList = new ArrayList<Investigador>();
    Investigador p = new Investigador("p");
    Investigador q = new Investigador("q");
    Investigador r = new Investigador("r");

    Relaciones relacionTest = new Relaciones(invList, p, q);

    /*
     * Veamos que el conjunto de investigadores es un arreglo vac’o,
     * comparando con el constructor vac’o de un arreglo de investigadores
     * y mostrando que la cantidad de elementos de dicho campo es 0.
     */
    assertEquals(new ArrayList<Investigador>(), relacionTest.investigadores);
    assertEquals(0, relacionTest.investigadores.size());

    /*
     * Veamos que los campos source (fuente) y destination (destino) del
     * grafo, posteriormente utilizados para el algoritmo BFS, se asignan
     * de manera correcta.
     */

    assertEquals(p, relacionTest.source);
    assertEquals(q, relacionTest.destination);

    // Test setSource y setDest

    /*
     * Intercambiamos investigador fuente y destino
     */

    relacionTest.setDest(p);
    relacionTest.setSource(q);

    assertEquals(q, relacionTest.source);
    assertEquals(p, relacionTest.destination);

    // Test de agregar investigador

    /*
     * Veamos que al agregar a p y a q como investigadores, aparecen como tales
     */

    relacionTest.AgregarInvestigador(p);
    relacionTest.AgregarInvestigador(q);
    assertEquals(
        p,
        relacionTest.investigadores.get(
            0)); // Como p es el primero que agregamos, est‡ en la posici—n 0
    assertEquals(
        q, relacionTest.investigadores.get(1)); // Por el mismo motivo, q est‡ en la posici—n 1

    /*
     * Veamos que ninguno tiene amigos, y luego testeamos la funci—n para agregar
     * amigos a ambos.
     */

    assertEquals(0, relacionTest.investigadores.get(0).amistades.size());
    assertEquals(0, relacionTest.investigadores.get(1).amistades.size());

    p.AgregarAmigo(q);

    /*
     * Vemos que cada uno tiene 1 amigo
     */

    assertEquals(1, relacionTest.investigadores.get(0).amistades.size());
    assertEquals(1, relacionTest.investigadores.get(1).amistades.size());

    /*
     * Vemos que el amigo de p es q y viceversa. Se puede acceder a los
     * amigos desde el objeto investigador y desde las relaciones.
     */

    assertEquals(q, p.amistades.get(0));
    assertEquals(p, q.amistades.get(0));
    assertEquals(q, relacionTest.investigadores.get(0).amistades.get(0));
    assertEquals(p, relacionTest.investigadores.get(1).amistades.get(0));

    /*
     * A un investigador r, vamos a agregarle primero a q como amigo y luego a p
     * y mostrar que los agrega bien, en —rden, y que cada uno tiene los amigos
     * que debe tener.
     */

    r.AgregarAmigo(q);
    r.AgregarAmigo(p);

    relacionTest.AgregarInvestigador(r);

    assertEquals(q, relacionTest.investigadores.get(2).amistades.get(0));
    assertEquals(p, relacionTest.investigadores.get(2).amistades.get(1));

    // Tiene 2 amigos
    assertEquals(2, r.amistades.size());

    // r es amigo de p y q
    assertEquals(r, p.amistades.get(1));
    assertEquals(r, q.amistades.get(1));
  }