Entendi como foi realizado o teste, mas tenho uma dúvida: como faço para imprimir a lista de lances?
Tentei imprimir com o sysout abaixo mas o retorno foi uma lista de objetos(endereços).
System.out.println(leilao.getLances());
Resultado:
[br.com.caelum.leilao.dominio.Lance@5ef04b5, br.com.caelum.leilao.dominio.Lance@5f4da5c3, br.com.caelum.leilao.dominio.Lance@443b7951, br.com.caelum.leilao.dominio.Lance@14514713]
Abaixo todas as classes.
public class Lance {
private Usuario usuario;
private double valor;
public Lance(Usuario usuario, double valor) {
this.usuario = usuario;
this.valor = valor;
}
public Usuario getUsuario() {
return usuario;
}
public double getValor() {
return valor;
}
}
public class Leilao {
private String descricao;
private List<Lance> lances;
public Leilao(String descricao) {
this.descricao = descricao;
this.lances = new ArrayList<Lance>();
}
public void propoe(Lance lance) {
lances.add(lance);
}
public String getDescricao() {
return descricao;
}
public List<Lance> getLances() {
return Collections.unmodifiableList(lances);
}
}
public class Avaliador {
private double maiorLance = Double.NEGATIVE_INFINITY;
private double menorLance = Double.POSITIVE_INFINITY;
public void avalia(Leilao leilao){
for(Lance lance : leilao.getLances()){
if(lance.getValor() > maiorLance) {maiorLance = lance.getValor();}
if(lance.getValor() < menorLance) {menorLance = lance.getValor();}
}
}
public double getMaiorLance(){
return this.maiorLance;
}
public class Usuario {
private int id;
private String nome;
public Usuario(String nome) {
this(0, nome);
}
public Usuario(int id, String nome) {
this.id = id;
this.nome = nome;
}
public int getId() {
return id;
}
public String getNome() {
return nome;
}
}
public class TesteAvaliador {
@Test
public void teste() {
Leilao leilao = new Leilao("playstation 3 novo");
Usuario joao = new Usuario("João");
Usuario maria = new Usuario("Maria");
Usuario jose = new Usuario("José");
Usuario francisca = new Usuario("Francisca");
leilao.propoe(new Lance(maria,500));
leilao.propoe(new Lance(joao,505));
leilao.propoe(new Lance(jose,575));
leilao.propoe(new Lance(francisca,103.75));
Avaliador leiloeiro = new Avaliador();
leiloeiro.avalia(leilao);
double maiorEsperado = 575;
double menorEsperado = 103.75;
Assert.assertEquals(maiorEsperado, leiloeiro.getMaiorLance(), 0.0001);
Assert.assertEquals(menorEsperado, leiloeiro.getMenorLance(), 0.0001);
// somente para aprender mais...
System.out.println(leilao.getLances());
}
}