Last active
November 12, 2024 18:34
-
-
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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
commented
Jan 16, 2023
•
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment