private List<Disciplina> filtraSemRequisitos(List<Disciplina> ofertadas, Plano plano) {
    List<Disciplina> comRequisitos = new ArrayList<Disciplina>();

    for (Disciplina disciplina : ofertadas) {
      if (plano.temRequisitos(disciplina, plano.getPeriodoAtual() + 1)) {
        comRequisitos.add(disciplina);
      }
    }

    return comRequisitos;
  }
Ejemplo n.º 2
0
  @Test
  public void disciplinasOfertadas() {
    List<Disciplina> naoAlocadas = new ArrayList<Disciplina>();
    naoAlocadas.add(grade.getDisciplinaPorNome("Inglês"));
    naoAlocadas.add(grade.getDisciplinaPorNome("Engenharia de Software II"));

    assertTrue(plano1.getDisciplinasOfertadas(grade).containsAll(naoAlocadas));
  }
Ejemplo n.º 3
0
  @Test
  public void comparaDeferencasEntrePlanos() {
    Plano plano2 = new Plano();
    plano2.iniciaPlanoSugerido(grade);

    assertEquals(0, plano1.getDiferencaDePlanos(plano2));

    plano2.removeDisciplina(grade.getDisciplinaPorNome("Projeto em Computação I"));
    assertEquals(2, plano1.getDiferencaDePlanos(plano2));

    plano2.addDisciplina(grade.getDisciplinaPorNome("Projeto em Computação I"), 6);
    assertEquals(1, plano1.getDiferencaDePlanos(plano2));

    plano2.addDisciplina(grade.getDisciplinaPorNome("Projeto em Computação II"), 7);
    plano2.addDisciplina(grade.getDisciplinaPorNome("Inglês"), 7);
    assertEquals(1, plano1.getDiferencaDePlanos(plano2));
  }
Ejemplo n.º 4
0
  @Test
  public void mudarDisciplinaDePeriodo() {
    assertTrue(
        plano1
            .getPeriodos()
            .get(6)
            .contemDisciplina(grade.getDisciplinaPorNome("Métodos e Software Numéricos")));

    plano1.addDisciplina(grade.getDisciplinaPorNome("Métodos e Software Numéricos"), 7);
    assertFalse(
        plano1
            .getPeriodos()
            .get(6)
            .contemDisciplina(grade.getDisciplinaPorNome("Métodos e Software Numéricos")));
    assertTrue(
        plano1
            .getPeriodos()
            .get(7)
            .contemDisciplina(grade.getDisciplinaPorNome("Métodos e Software Numéricos")));
  }
  @Override
  public List<Disciplina> quaisAlocar(Plano plano) {
    List<Disciplina> paraAlocar = new ArrayList<Disciplina>();
    List<Disciplina> possiveis =
        filtraSemRequisitos(plano.getDisciplinasOfertadas(new Grade()), plano);
    Disciplina proximaDificil;
    int creditos = 0;

    while (true) {
      proximaDificil = maisDificil(possiveis);
      creditos += proximaDificil.getCreditos();

      if (creditos > MAX_CREDITOS) break;

      paraAlocar.add(proximaDificil);
      possiveis.remove(proximaDificil);
    }

    return paraAlocar;
  }
Ejemplo n.º 6
0
  @Test
  public void definirPeriodoAtual() {
    plano1.setPeriodoAtual(3);

    plano1.addDisciplina(grade.getDisciplinaPorNome("Cálculo Diferencial e Integral III"), 2);
    assertFalse(
        plano1
            .getDisciplinasAlocadas()
            .contains(grade.getDisciplinaPorNome("Cálculo Diferencial e Integral III")));

    plano1.addDisciplina(grade.getDisciplinaPorNome("Cálculo Diferencial e Integral III"), 3);
    assertFalse(
        plano1
            .getDisciplinasAlocadas()
            .contains(grade.getDisciplinaPorNome("Cálculo Diferencial e Integral III")));

    plano1.removeDisciplina(grade.getDisciplinaPorNome("Projeto em Computação II"));
    plano1.addDisciplina(grade.getDisciplinaPorNome("Cálculo Diferencial e Integral III"), 6);
    plano1.addDisciplina(grade.getDisciplinaPorNome("Economia"), 6);
    plano1.addDisciplina(grade.getDisciplinaPorNome("Administração"), 6);
    plano1.addDisciplina(grade.getDisciplinaPorNome("Engenharia de Software II"), 6);
    plano1.addDisciplina(grade.getDisciplinaPorNome("Inglês"), 6);

    assertTrue(
        plano1
            .getDisciplinasAlocadas()
            .contains(grade.getDisciplinaPorNome("Cálculo Diferencial e Integral III")));
    assertTrue(plano1.getDisciplinasAlocadas().contains(grade.getDisciplinaPorNome("Economia")));
    assertTrue(
        plano1.getDisciplinasAlocadas().contains(grade.getDisciplinaPorNome("Administração")));
    assertTrue(
        plano1
            .getDisciplinasAlocadas()
            .contains(grade.getDisciplinaPorNome("Engenharia de Software II")));
    assertTrue(plano1.getDisciplinasAlocadas().contains(grade.getDisciplinaPorNome("Inglês")));

    assertEquals(33, plano1.getPeriodos().get(6).getTotalDeCreditos());
  }