-
Notifications
You must be signed in to change notification settings - Fork 1
/
AlbumTest.java
127 lines (96 loc) · 4.39 KB
/
AlbumTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class AlbumTest {
private Album albumFigurinhas;
private Repositorio repositorioFigurinhas;
private static final int TAMANHO_DO_ALBUM = 200;
private static final int ITENS_POR_PACOTE = 3;
@Before // roda antes de cada teste
public void setUp() {
this.repositorioFigurinhas = new Repositorio("album_copa2014", TAMANHO_DO_ALBUM);
this.albumFigurinhas = new Album(repositorioFigurinhas, ITENS_POR_PACOTE);
}
private void popularAlbum(int[] posicoesDesejadas) {
Pacotinho pacote = new Pacotinho(this.repositorioFigurinhas, posicoesDesejadas);
this.albumFigurinhas.receberNovoPacotinho(pacote);
}
@Test
public void testarPossuiFigurinhaParaFigurinhasExistentes() {
popularAlbum(new int[] {1, 2, 3});
for (int i = 1; i <= 3; i++) {
assertTrue("Figurinhas já inseridas devem ser encontradas",
this.albumFigurinhas.possuiItemColado(i));
}
}
@Test
public void testarPossuiFigurinhaParaFigurinhasAusentes() {
popularAlbum(new int[] {1, 2, 3});
assertFalse("Não devemos encontrar no álbum figurinhas nunca inseridas",
this.albumFigurinhas.possuiItemColado(4));
assertFalse("Não devemos encontrar figurinhas de posições não-positivas",
this.albumFigurinhas.possuiItemColado(-390));
assertFalse("Não devemos encontrar figurinhas maiores do que o tamanho",
this.albumFigurinhas.possuiItemColado(TAMANHO_DO_ALBUM + 1));
}
@Test
public void testarPossuiRepetidaParaFigurinhaRepetida() {
popularAlbum(new int[] {1, 2, 3});
assertFalse(this.albumFigurinhas.possuiItemRepetido(2)); // sanity check
popularAlbum(new int[] {2, 8, 9});
assertTrue(this.albumFigurinhas.possuiItemRepetido(2));
}
@Test
public void testarGetTamanhoAlbum() {
assertEquals(TAMANHO_DO_ALBUM, this.albumFigurinhas.getTamanho());
}
@Test
public void testarGetContFigurinhas() {
popularAlbum(new int[] {1, 2, 3});
assertEquals(3, this.albumFigurinhas.getQuantItensColados());
// vou agora abrir outro pacotinho com as mesmas figurinhas
// e verificar que o álbum terá ainda 3 figurinhas
popularAlbum(new int[] {1, 2, 3});
assertEquals(3, this.albumFigurinhas.getQuantItensColados());
}
@Test
public void testarGetQuantasFaltam() {
popularAlbum(new int[] {1, 2, 3});
assertEquals(TAMANHO_DO_ALBUM - 3,
this.albumFigurinhas.getQuantItensFaltantes());
}
@Test
public void testarAutoCompletar() {
albumFigurinhas.autoCompletar();
assertEquals("Não deve ser possível auto-completar um álbum que esteja vazio",
TAMANHO_DO_ALBUM, albumFigurinhas.getQuantItensFaltantes());
// agora vamos adicionar pacotinhos aleatórios até o álbum ficar quase cheio
int minimoFigurinhasColadasParaAutoCompletar =
(int) (TAMANHO_DO_ALBUM * Album.PERCENTUAL_MINIMO_PARA_AUTO_COMPLETAR / 100f);
while (albumFigurinhas.getQuantItensColados() < minimoFigurinhasColadasParaAutoCompletar) {
Pacotinho novoPacotinho = new Pacotinho(
this.repositorioFigurinhas, ITENS_POR_PACOTE); // aleatório
albumFigurinhas.receberNovoPacotinho(novoPacotinho);
}
// sanity check
assertTrue(albumFigurinhas.getQuantItensFaltantes() > 0);
albumFigurinhas.autoCompletar();
assertEquals("O álbum deve estar completo após uma chamada válida ao auto-completar",
0, albumFigurinhas.getQuantItensFaltantes()); // álbum completo!
}
@Test
public void testarGetItemColado() {
popularAlbum(new int[] {1, 2, 3});
Figurinha figurinha = albumFigurinhas.getItemColado(2);
assertNotNull(figurinha);
assertEquals(2, figurinha.getPosicao());
assertNull(albumFigurinhas.getItemColado(4));
}
@Test
public void testarRejeicaoPacotinhosDeTamanhoErrado() {
popularAlbum(new int[] {1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8});
assertEquals("Pacotes de tamanho distinto do informado na construção " +
"do álbum devem ser rejeitados",
0, albumFigurinhas.getQuantItensColados());
}
}