Meu teste que não deve aceitar mais de 5 lances de um mesmo usuário não funciona mesmo com o método implementado. O teste:
[Test]
public void NaoDeveAceitarMaisQue5LancesDeUmMesmoUsuario()
{
Leilao leilao = new Leilao("Nintendo Switch");
Assert.AreEqual(0, leilao.Lances.Count);
Usuario jose = new Usuario("Jose");
Usuario maria = new Usuario("Maria");
leilao.Propoe(new Lance(jose, 1000));
leilao.Propoe(new Lance(maria, 2000));
leilao.Propoe(new Lance(jose, 3000));
leilao.Propoe(new Lance(maria, 4000));
leilao.Propoe(new Lance(jose, 5000));
leilao.Propoe(new Lance(maria, 6000));
leilao.Propoe(new Lance(jose, 7000));
leilao.Propoe(new Lance(maria, 8000));
leilao.Propoe(new Lance(jose, 9000));
leilao.Propoe(new Lance(maria, 10000));
leilao.Propoe(new Lance(jose, 11000));
Assert.AreEqual(10, leilao.Lances.Count);
Assert.AreEqual(10000, leilao.Lances[leilao.Lances.Count - 1]); //ultimo lance deve ser igual a 10000
}
O método:
public void Propoe(Lance lance)
{
int total=0;
foreach(var l in Lances)
{
if(l.Usuario.Equals(l.Usuario)) //se o usuario for igual ao usuario corrente
{
total++;
}
}
//se for o primeiro lance OU se o usuario corrente nao for igual ao usuario anterior
if (Lances.Count == 0 || (!ultimoLance().Usuario.Equals(lance.Usuario)) && total<5)
{
Lances.Add(lance);
}
}
private Lance ultimoLance()
{
return Lances[Lances.Count - 1];
}
O erro: Expected: 10 But was: 5 na linha Assert.AreEqual(10, leilao.Lances.Count);