-
Notifications
You must be signed in to change notification settings - Fork 1
/
AlbumFigurinhasTest.java
110 lines (82 loc) · 3.96 KB
/
AlbumFigurinhasTest.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
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class AlbumFigurinhasTest {
private AlbumFigurinhas albumFigurinhas;
private RepositorioFigurinhas repositorioFigurinhas;
private static final int TAMANHO_DO_ALBUM = 200;
private static final int FIGURINHAS_POR_PACOTE = 3;
@Before // roda antes de cada teste
public void setUp() {
this.repositorioFigurinhas = new RepositorioFigurinhas(
"Repositorio Teste", TAMANHO_DO_ALBUM);
this.albumFigurinhas = new AlbumFigurinhas(repositorioFigurinhas, FIGURINHAS_POR_PACOTE);
}
private void popularAlbum(int[] posicoesDesejadas) {
PacotinhoFigurinhas pacote = new PacotinhoFigurinhas(
this.repositorioFigurinhas, posicoesDesejadas);
this.albumFigurinhas.receberNovoPacotinho(pacote);
}
@Test
public void testarPossuiFigurinhaParaFigurinhasExistentes() {
popularAlbum(new int[] {1, 2, 3});
for (int i = 1; i <= FIGURINHAS_POR_PACOTE; i++) {
assertTrue("Figurinhas já inseridas devem ser encontradas",
this.albumFigurinhas.possuiFigurinhaColada(i));
}
}
@Test
public void testarPossuiFigurinhaParaFigurinhasAusentes() {
popularAlbum(new int[] {1, 2, 3});
assertFalse("Não devemos encontrar no álbum figurinhas nunca inseridas",
this.albumFigurinhas.possuiFigurinhaColada(4));
assertFalse("Não devemos encontrar figurinhas de posições não-positivas",
this.albumFigurinhas.possuiFigurinhaColada(-390));
assertFalse("Não devemos encontrar figurinhas maiores do que o tamanho",
this.albumFigurinhas.possuiFigurinhaColada(TAMANHO_DO_ALBUM + 1));
}
@Test
public void testarPossuiRepetidaParaFigurinhaRepetida() {
popularAlbum(new int[] {1, 2, 3});
assertFalse(this.albumFigurinhas.possuiFigurinhaRepetida(2)); // sanity check
popularAlbum(new int[] {2, 8, 9});
assertTrue(this.albumFigurinhas.possuiFigurinhaRepetida(2));
}
@Test
public void testarGetTamanhoAlbum() {
assertEquals(TAMANHO_DO_ALBUM, this.albumFigurinhas.getTamanho());
}
@Test
public void testarGetContFigurinhas() {
popularAlbum(new int[] {1, 2, 3});
assertEquals(FIGURINHAS_POR_PACOTE, this.albumFigurinhas.getQuantFigurinhasColadas());
// 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(FIGURINHAS_POR_PACOTE, this.albumFigurinhas.getQuantFigurinhasColadas());
}
@Test
public void testarGetQuantasFaltam() {
popularAlbum(new int[] {1, 2, 3});
assertEquals(TAMANHO_DO_ALBUM - FIGURINHAS_POR_PACOTE,
this.albumFigurinhas.getQuantFigurinhasFaltantes());
}
@Test
public void testarAutoCompletar() {
albumFigurinhas.autoCompletar();
assertEquals("Não deve ser possível auto-completar um álbum que esteja vazio",
TAMANHO_DO_ALBUM, albumFigurinhas.getQuantFigurinhasFaltantes());
// agora vamos adicionar pacotinhos aleatório até o álbum ficar quase cheio
int minimoFigurinhasColadasParaAutoCompletar =
(int) (TAMANHO_DO_ALBUM * AlbumFigurinhas.PERCENTUAL_MINIMO_PARA_AUTO_COMPLETAR / 100f);
while (albumFigurinhas.getQuantFigurinhasColadas() < minimoFigurinhasColadasParaAutoCompletar) {
PacotinhoFigurinhas novoPacotinho = new PacotinhoFigurinhas(
this.repositorioFigurinhas, FIGURINHAS_POR_PACOTE); // aleatório
albumFigurinhas.receberNovoPacotinho(novoPacotinho);
}
// sanity check
assertTrue(albumFigurinhas.getQuantFigurinhasFaltantes() > 0);
albumFigurinhas.autoCompletar();
assertEquals(0, albumFigurinhas.getQuantFigurinhasFaltantes()); // álbum completo!
}
}