Olá, Na aula 2 do curso de TDD, há a inserção do método equals na classe Usuário. Antes de inseri-lo, rodei os testes e não houve erros. Isto está correto?
Classe de teste
package br.com.caelum.leilao.test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import br.com.caelum.leilao.servico.Lance;
import br.com.caelum.leilao.servico.Leilao;
import br.com.caelum.leilao.servico.Usuario;
public class LeilaoTest {
@Test
public void deveReceberUmLance() {
Leilao leilao = new Leilao("Macbook Pro 15");
assertEquals(0,leilao.getLances().size());
leilao.propoe(new Lance(new Usuario("Steve Jobs"), 2000));
assertEquals(1, leilao.getLances().size());
assertEquals(2000, leilao.getLances().get(0).getValor(), 0000.1);
}
@Test
public void deveReceberVariosLances() {
Leilao leilao = new Leilao("Macbook Pro 15");
leilao.propoe(new Lance(new Usuario("Steve Jobs"), 2000));
leilao.propoe(new Lance(new Usuario("Steve Wozniak"), 3000));
assertEquals(2, leilao.getLances().size());
assertEquals(2000, leilao.getLances().get(0).getValor(), 0.00001);
assertEquals(3000, leilao.getLances().get(1).getValor(), 0.00001);
}
@Test
public void naoDeveAceitarDoisLancesSeguidosdoMesmoUsuario() {
Leilao leilao = new Leilao("Macbook Pro 15");
Usuario steveJobs = new Usuario("Steve Jobs");
leilao.propoe(new Lance(steveJobs, 2000));
leilao.propoe(new Lance(steveJobs, 3000));
assertEquals(1, leilao.getLances().size());
assertEquals(2000, leilao.getLances().get(0).getValor(), 0.00001);
}
}
Classe Leilao
package br.com.caelum.leilao.servico;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
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) {
if(lances.isEmpty() || !lances.get(lances.size()-1).getUsuario().equals(lance.getUsuario())){
lances.add(lance);
}
}
public String getDescricao() {
return descricao;
}
public List<Lance> getLances() {
return Collections.unmodifiableList(lances);
}
}
Classe Usuario
package br.com.caelum.leilao.servico;
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;
}
// @Override
// public int hashCode() {
// final int prime = 31;
// int result = 1;
// result = prime * result + id;
// result = prime * result + ((nome == null) ? 0 : nome.hashCode());
// return result;
// }
//
// @Override
// public boolean equals(Object obj) {
// if (this == obj)
// return true;
// if (obj == null)
// return false;
// if (getClass() != obj.getClass())
// return false;
// Usuario other = (Usuario) obj;
// if (id != other.id)
// return false;
// if (nome == null) {
// if (other.nome != null)
// return false;
// } else if (!nome.equals(other.nome))
// return false;
// return true;
// }
public int getId() {
return id;
}
public String getNome() {
return nome;
}
}