Regra { public final float ajustaLimites(final float valor) { if (valor < getValorMinimo()) { return getValorMinimo(); } if (valor > getValorMaximo()) { return getValorMaximo(); } return valor; } Regra(final String resultado,
                 final String detalhes,
                 final float maximo,
                 final float minimo); final String getDescricao(); final float getValorMaximo(); final float getValorMinimo(); final String getVariavel(); final List<String> getDependeDe(); final void setDependeDe(final List<String> dependencias); @Override final boolean equals(final Object outro); @Override final int hashCode(); final float ajustaLimites(final float valor); void preparacao(final Parser parser); abstract Valor avalie(List<Avaliavel> avaliaveis,
                                 Map<String, Valor> contexto);  }
@Test public void ajustaLimitesCorretamente() { RegraParaTeste r = new RegraParaTeste("v", "d", 1, 0); assertEquals(1f, r.ajustaLimites(1.001f), 0.0001f); assertEquals(0f, r.ajustaLimites(-0.0001f), 0.0001f); assertEquals(0.5f, r.ajustaLimites(0.5f), 0.0001f); }