package br.com.caelum.leilao.dominio;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class AvaliadorTest {
private Usuario andre;
private Usuario aline;
private Usuario ricardo;
private Usuario fred;
private Avaliador leiloeiro;
@Before
public void setUp() {
andre = new Usuario ("Andre");
aline = new Usuario ("Aline");
ricardo = new Usuario ("Ricardo");
fred = new Usuario ("Fred");
leiloeiro = new Avaliador ();
}
@Test
public void main() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(fred, 3000.00)
.lance(aline, 2500.00)
.lance(ricardo, 3500.00)
.lance(andre, 2000.00);
leiloeiro.avalia(criadorDeLeilao.getLeilao());
double maiorTest = 3500.00;
double menorTest = 2000.00;
double mediaTest = 11000.00/4;
Assert.assertEquals (maiorTest, leiloeiro.maior.getValor(), 0.0001);
Assert.assertEquals (menorTest, leiloeiro.menor.getValor(), 0.0001);
Assert.assertEquals(mediaTest, leiloeiro.getMedia(), 0.0001 );
}
@Test
public void main1() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(ricardo, 100.00);
leiloeiro.avalia(criadorDeLeilao.getLeilao());
Assert.assertEquals(leiloeiro.getMenor().getValor(), leiloeiro.getMaior().getValor(), 0.0001);
Assert.assertEquals(leiloeiro.getMenor(), leiloeiro.getMaior());
}
@Test
public void main2() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(ricardo, 200.00)
.lance(aline, 450.00)
.lance(fred, 120.00)
.lance(andre, 700.00)
.lance(ricardo, 530.00)
.lance(andre, 630)
.lance(aline, 230);
double maiorTest = 700.00;
double menorTest = 120.00;
double mediaTest = 2860.00/7;
leiloeiro.avalia(criadorDeLeilao.getLeilao());
Assert.assertEquals (maiorTest, leiloeiro.maior.getValor(), 0.0001);
Assert.assertEquals (menorTest, leiloeiro.menor.getValor(), 0.0001);
Assert.assertEquals(mediaTest, leiloeiro.getMedia(), 0.0001 );
}
@Test
public void main3() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(ricardo, 700.00)
.lance(aline, 500.00)
.lance(fred, 300.00)
.lance(andre, 100.00);
double maiorTest = 700.00;
double menorTest = 100.00;
double mediaTest = 1600.00/4;
leiloeiro.avalia(criadorDeLeilao.getLeilao());
Assert.assertEquals (maiorTest, leiloeiro.maior.getValor(), 0.0001);
Assert.assertEquals (menorTest, leiloeiro.menor.getValor(), 0.0001);
Assert.assertEquals(mediaTest, leiloeiro.getMedia(), 0.0001 );
}
@Test
public void naoDeveAceitarDoisLancesSeguidosDoMesmoUsuario() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(fred, 2000.00)
.lance(fred, 5000.00);
int ultimo = criadorDeLeilao.getLeilao().getLances().size()-1;
Assert.assertEquals(1, criadorDeLeilao.getLeilao().getLances().size());
Assert.assertEquals(2000, criadorDeLeilao.getLeilao().getLances().get(ultimo).getValor(), 0.0001);
}
@Test
public void naoDeveAceitarMaisDoQue5LancesDeUmMesmoUsuario() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(fred, 2000.00)
.lance(aline, 3000.00)
.lance(fred, 4000.00)
.lance(aline, 6000.00)
.lance(fred, 6500.00)
.lance(aline, 7000.00)
.lance(fred, 8500.00)
.lance(aline, 9000.00)
.lance(fred, 10000.00)
.lance(aline, 12000)
.lance(fred, 15000)
.lance(aline, 16000);
int ultimo = criadorDeLeilao.getLeilao().getLances().size()-1;
Assert.assertEquals(10, criadorDeLeilao.getLeilao().getLances().size());
Assert.assertEquals(12000, criadorDeLeilao.getLeilao().getLances().get(ultimo).getValor(), 0.00001);
}
@Test
public void testeDobraLance () {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX")
.lance(andre, 1000.00)
.lance(aline, 2000.00)
.lance(ricardo, 3000.00)
.lance(fred, 4000.00)
.lance(andre, 5000.00);
Assert.assertEquals(10000, criadorDeLeilao.getLeilao().dobraLance(andre).getValor(), 0.0001);
Assert.assertEquals(8000, criadorDeLeilao.getLeilao().dobraLance(fred).getValor(), 0.0001);
}
@Test (expected = RuntimeException.class)
public void testeLeiloeiroAvaliaLeilaoSemLances() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX");
leiloeiro.avalia(criadorDeLeilao.getLeilao());
}
@Test (expected = IllegalArgumentException.class)
public void testeComLanceIgualA0() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX").lance(fred, 0);
}
@Test (expected = IllegalArgumentException.class)
public void testeComUsuarioNull() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX").lance(null, 10);
}
@Test (expected = IllegalArgumentException.class)
public void testeComLanceMenorQue0() {
CriadorDeLeilao criadorDeLeilao = new CriadorDeLeilao();
criadorDeLeilao.criaLeilao("XXX").lance(fred, -1);
}
}
Na situação em que há testes passando, apenas o "testeComLanceMenorQue0" e o "testeComLanceIgualA0" falham. No caso dos testes acusarem erro, todos eles acusam erro.
PS: peço desculpas, não estou conseguindo deixar o código devidamente formatado.