RegraExpressao extends Regra { @Override public void preparacao(final Parser parser) { if (parser == null) { throw new CampoExigidoNaoFornecido("parser"); } List<String> dd = parser.dependencias(expressao); setDependeDe(dd); ctx = new HashMap<>(dd.size()); for (String dep : dd) { ctx.put(dep, 0f); } ast = parser.ast(expressao); } RegraExpressao(final String variavel, final String descricao,
                          final float valorMaximo, final float valorMinimo,
                          final String expressao); @Override void preparacao(final Parser parser); String getExpressao(); @Override Valor avalie(List<Avaliavel> avaliaveis, Map<String, Valor> contexto);  }
@Test public void parserObrigatorioParaPreparacao() { RegraExpressao re = new RegraExpressao("v", "d", 1, 0, "x"); assertThrows(CampoExigidoNaoFornecido.class, () -> re.preparacao(null)); }