tenho a seguinte classe de teste:
public class OfertaViagemDesconto
{
[Theory]
[InlineData(120, 30)] // Caso onde o desconto é maior que o máximo permitido
[InlineData(100, 30)] // Caso onde o desconto é exatamente o máximo permitido
[InlineData(-1, 100)] // Caso onde o desconto é menor ou igual a zero
[InlineData(0, 100)] // Caso onde o desconto é exatamente zero
[InlineData(70, 30)] // Caso onde o desconto é exatamente 70%
[InlineData(20, 80)] // Caso normal com desconto de 20%
[InlineData(10, 90)] // Caso normal com desconto de 10%
[InlineData(10.5, 89.5)] // Caso normal com desconto de 10.5%
public void ValudaCoesGeraisDeDesconto(double desconto, double precoComDesconto)
{
// Arrange
Rota rota = new Rota("São Paulo", "Rio de Janeiro");
Periodo periodo = new Periodo(DateTime.Now, DateTime.Now.AddDays(1));
double precoOriginal = 100.00;
OfertaViagem oferta = new OfertaViagem(rota, periodo, precoOriginal);
// Act
oferta.Desconto = desconto;
// Assert
Assert.Equal(precoComDesconto, oferta.Preco, 0.001);
}
}
e minha model com o metodo AplicarDesconto():
public class OfertaViagem : Valida
{
public const double DESCONTO_MAXIMO = 0.7;
private double desconto;
public int Id { get; set; }
public Rota Rota { get; set; }
public Periodo Periodo { get; set; }
public double Preco { get; set; }
public double Desconto
{
get => desconto;
set
{
desconto = value;
Preco = AplicarDesconto();
}
}
private double AplicarDesconto()
{
if (desconto < 0)
return Preco;
if (desconto > 70)
return Preco * (1 - DESCONTO_MAXIMO);
return Preco - (Preco * (desconto / 100));
}
public OfertaViagem(Rota rota, Periodo periodo, double preco)
{
Rota = rota;
Periodo = periodo;
Preco = preco;
Validar();
}
public override string ToString()
{
return $"Origem: {Rota.Origem}, Destino: {Rota.Destino}, Data de Ida: {Periodo.DataInicial.ToShortDateString()}, Data de Volta: {Periodo.DataFinal.ToShortDateString()}, Preço: {Preco:C}";
}
protected override void Validar()
{
if (Rota == null || Periodo == null)
{
Erros.RegistrarErro("A oferta de viagem não possui rota ou período válidos.");
}
if (Preco <= 0)
{
Erros.RegistrarErro("O preço da oferta de viagem deve ser maior que zero.");
}
if (Rota != null && !Rota.IsValid)
{
Erros.RegistrarErro(Rota.Erros.Sumario);
}
if (Periodo != null && !Periodo.IsValid)
{
Erros.RegistrarErro(Periodo.Erros.Sumario);
}
}
}
o stryker esta acusando dois mutantes vivos nos ifs do metodo de aplicardesconto(): Ao meu ver na minha classe de testes eu apliquei todas as possivilidades de retorno. Alguem pode me auxliar com uma sugestao para matar os mutantes ainda vivos ?