RegraPontosPorRelato extends Regra { @Override public final Valor avalie(final List<Avaliavel> avaliaveis, final Map<String, Valor> contexto) { int total = 0; for (Avaliavel avaliavel : avaliaveis) { if (tipoRelato.equals(avaliavel.get("classe").getString())) { total = total + 1; } } float pontos = getPontosPorItem() * total; return new Valor(ajustaLimites(pontos)); } RegraPontosPorRelato(final String variavel,
                                final String descricao,
                                final float valorMaximo,
                                final float valorMinimo,
                                final String tipo,
                                final float pontos); final String getTipoRelato(); final float getPontosPorItem(); @Override final Valor avalie(final List<Avaliavel> avaliaveis,
                        final Map<String, Valor> contexto);  }
@Test public void nenhumRelatoTotalDePontosZeroOuMinimo() { RegraPontosPorRelato rp = new RegraPontosPorRelato("v", "d", 7, 6, "a", 8); ParserTeste parser = new ParserTeste(); parser.setDependencias(new ArrayList<>(0)); rp.preparacao(parser); assertEquals(6, rp.avalie(new ArrayList<>(0), new HashMap<>(0)).getReal(), 0.0001f); }