Skip to content

Instantly share code, notes, and snippets.

@rafaelpontezup
Last active November 12, 2024 18:34
Show Gist options
  • Save rafaelpontezup/ecba938670eb13f876bd279e898b84af to your computer and use it in GitHub Desktop.
Save rafaelpontezup/ecba938670eb13f876bd279e898b84af to your computer and use it in GitHub Desktop.
Quantos e quais cenarios/casos de testes você enxerga para o código da classe ParceladorDeFatura? (adiciona resposta nos comentarios)
package br.com.zup.edu.certificacoes.testing.parcelador;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
public class ParceladorDeFatura {
public static final BigDecimal VALOR_MINIMO_FATURA = new BigDecimal("100");
public static final BigDecimal VALOR_MAXIMO_FATURA = new BigDecimal("100000"); // UPDATED at 2024-10-24
public List<BigDecimal> parcela(BigDecimal valor, int quantidadeDeParcelas) {
if (valor == null) {
throw new FaturaInvalidaException("Valor da fatura não pode ser nula");
}
if (valor.compareTo(VALOR_MINIMO_FATURA) < 0) {
throw new FaturaInvalidaException("Valor da fatura muito baixo para parcelamento");
}
// UPDATED at 2024-10-24
if (valor.compareTo(VALOR_MAXIMO_FATURA) > 0) {
throw new FaturaInvalidaException("Valor da fatura acima do valor máximo para parcelamento");
}
if (quantidadeDeParcelas < 2 || quantidadeDeParcelas > 10) {
throw new FaturaInvalidaException("Número de parcelas deve estar entre 2 e 10");
}
BigDecimal numeroDeParcelas = BigDecimal.valueOf(quantidadeDeParcelas);
BigDecimal valorDaParcela = valor.divide(numeroDeParcelas, 2, RoundingMode.DOWN);
List<BigDecimal> parcelas = new ArrayList<>();
for (int i = 0; i < quantidadeDeParcelas - 1; i++) {
parcelas.add(valorDaParcela);
}
// adiciona resto na ultima parcela
BigDecimal resto = valor.subtract(valorDaParcela.multiply(numeroDeParcelas));
parcelas.add(valorDaParcela.add(resto));
return parcelas;
}
}
@kewers
Copy link

kewers commented Jan 16, 2023

A : BigDecimal
B : Int
1. A == null ==> Exception
2. A < 100   ==> Exception
3. B < 2     ==> Exception
4. B > 10    ==> Exception
5. Para todo (A : BigDecimal) e (B : Int), onde A!= null, e A >= 100, e B >= 2, e B <= 10, 
    somaLista(parcela(A,B)) == A
    length(parcela(A,B)) == B

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment