Estou com problemas para comparar esses valores dos Enums.
Eu debuguei a aplicação e está caindo em todas as comparações de decisão. E no fim, ele da o “Saldo Insuficiente”.
public void lancarMovimento(Calendar data, BigDecimal valor, TipoMovimento tipoMovimento, String descricao) throws Exception {
if (tipoMovimento.equals(TipoMovimento.credito)) {
this.movimentos.add(new Movimento(descricao, data, valor.plus(), tipoMovimento));
}
if (tipoMovimento.equals(TipoMovimento.debito)) {
if (this.getSaldo().compareTo(valor) >= 0) {
this.movimentos.add(new Movimento(descricao, data, valor.negate(), tipoMovimento));
} else {
throw new Exception("Saldo insuficiente!");
}
}
}
O código completo desta classe se encontra aqui:
https://github.com/codenome/GestaoBancaria/blob/master/src/main/java/com/lcspoo/getaobancaria/model/ContaCorrente.java
Agradeço a todos pela ajuda!
Se é tipo Enum
, vc pode usar o switch/case
.
Antes do compareTo
, verifique se os valores estão corretos:
System.out.println("Saldo: " + saldo);
System.out.println("Valor: " + valor);
System.out.println("CompareTo: " + (saldo.compareTo(valor) >= 0));
if (this.getSaldo().compareTo(valor) >= 0) {
Essa foi a resposta de saída:
> Saldo: 0
> Valor: 300
> Tipo Movimento: credito
> Descrição: Deposito bancario
> CompareTo: false
Não encontrei problemas, fiz uns testes aqui e funcionou corretamente.
Vc pode testar o seguinte:
case debito:
System.out.println("Parametro: " + tipoMovimento);
System.out.println("Case: " + TipoMovimento.debito);
if (this.getSaldo().compareTo(valor) >= 0) {
Se o parâmetro e o case imprimirem o mesmo valor, então está correto, caso contrário, aconteceu uma situação absurda.
Mais sugestoes:
- Crie uma cópia da classe de teste, remova todas as annotation do JUnit e execute sem o JUnit. Talvez seja um problema do JUnit.
- Tente dar um refresh no projeto.
Rapaz! Consegui aqui…
o problema estava na função getSaldo() e o uso do método .add do BigDecimal. Na verdade, ele retorna um valor…
o certo seria:
saldo = saldo.add(movimento.getValor());
Agradeço demais a colaboração!