Seguindo o exercício, implementei o caso de teste quando não há lances, porém o eclipse diz que há 1 erro ao invés de 1 falha. O que está errado?
Código de teste
@Test
public void leilaoSemNenhumLance() {
Leilao leilao = new Leilao("Playstation 3 Novo");
Avaliador leiloeiro = new Avaliador();
leiloeiro.avalia(leilao);
List<Lance> maiores = leiloeiro.getTresMaiores();
assertEquals(0, maiores.size());
}
Classe Avaliador
package br.com.caelum.leilao.servico;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class Avaliador {
private double maiorDeTodos = Double.NEGATIVE_INFINITY;
private double menorDeTodos = Double.POSITIVE_INFINITY;
private double media = 0;
private List<Lance> maiores;
private double total = 0.0;
public void avalia(Leilao leilao) {
// for(Lance lance : leilao.getLances()) {
// if(lance.getValor() > maiorDeTodos) maiorDeTodos = lance.getValor();
// if(lance.getValor() < menorDeTodos) menorDeTodos = lance.getValor();
// total += lance.getValor();
// }
leilao.getLances().forEach( lance -> {
if(lance.getValor() > maiorDeTodos) maiorDeTodos = lance.getValor();
if(lance.getValor() < menorDeTodos) menorDeTodos = lance.getValor();
total += lance.getValor();
});
if(total == 0) {
media = 0;
return;
}
media = total / leilao.getLances().size();
pegaOsMaioresNo(leilao);
}
private void pegaOsMaioresNo(Leilao leilao) {
maiores = new ArrayList<Lance>(leilao.getLances());
maiores.sort((o1,o2) -> {
if(o1.getValor() < o2.getValor()) return 1;
if(o1.getValor() > o2.getValor()) return -1;
return 0;
});
maiores = maiores.subList(0, maiores.size() > 3 ? 3 : maiores.size());
}
public List<Lance> getTresMaiores(){
return this.maiores;
}
public double getMaiorLance() {
return maiorDeTodos;
}
public double getMenorLance() {
return menorDeTodos;
}
public double getMedia() {
return media;
}
}