-
Notifications
You must be signed in to change notification settings - Fork 1
/
test_partida.py
136 lines (119 loc) · 6.54 KB
/
test_partida.py
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
128
129
130
131
132
133
134
135
136
import unittest
from parameterized import parameterized
from partida import Partida
from servicesPartidas import ServicesPartidas
class TestPartida(unittest.TestCase):
# Crea una partida con valores iniciales.
# palabra_acierto: se guarda las letras acertadas por el usuario
# tipo_palabra: para dar orientacion al jugador
# palabra: palabra que tiene que adivinar
def test_constructor_con_valores_iniciales_partida(self):
partida = Partida('python', 2, 'lenguaje de programacion', 'Claudio')
self.assertDictEqual(partida.__dict__, {'_palabra':
['P', 'Y', 'T', 'H', 'O', 'N'],
'_tipo_palabra':
'LENGUAJE DE PROGRAMACION',
'_intentos': 2,
'_nombre_jugador': 'CLAUDIO',
'_palabra_aciertos':
[None, None, None, None, None,
None], })
# Verificar exceptions, palabra no puede ser vacia
def test_exceptions_valor_inicial_palabra(self):
with self.assertRaises(ValueError):
Partida('', 2, 'lenguaje de programacion', 'Claudio')
# Verificar exceptions nombre_jugador no puede ser vacia
def test_exceptions_valor_inicial_nombre_jugador(self):
with self.assertRaises(ValueError):
Partida('Python', 2, 'lenguaje de programacion', '')
# Verificar exceptions tipo_palabra no puede ser vacia
def test_exceptions_valor_inicial_tipo_palabra(self):
with self.assertRaises(ValueError):
Partida('Python', 2, '', 'Claudio')
# Verificar exceptions intentos no puede ser negativo,
# anularia intentos
def test_exceptions_valor_inicial_intentos(self):
with self.assertRaises(ValueError):
Partida('Python', -1, 'lenguaje de programacion', 'Claudio')
# La funcion iniciar_partida intancia un objeto del tipo Partida
# Lo intentos que tiene el jugador depende de la longitud de la palabra
# multiplicado por el valor intentos ingresados en esta funcion
# return partida: Partida
def test_iniciar_partida(self):
partida = ServicesPartidas().iniciar_partida('claudio', 3,
'python',
'lenguaje de programacion'
)
self.assertDictEqual(partida.__dict__, {'_palabra':
['P', 'Y', 'T', 'H', 'O', 'N'],
'_tipo_palabra':
'LENGUAJE DE PROGRAMACION',
'_intentos': 18,
'_nombre_jugador': 'CLAUDIO',
'_palabra_aciertos':
[None, None, None, None,
None, None], })
# La funcion iniciar_partida puede ser llamada sin palabra ni tipo de
# palabra, esta busca en un reposotorio una palabra de manera random
# return partida: Partida
def test_iniciar_partida_palabra_random(self):
partida = ServicesPartidas().iniciar_partida('claudio', 3, '', '')
palabra = partida.palabra
tipo_palabra = partida.tipo_palabra
palabra_acierto = partida.palabra_aciertos
intentos = partida.intentos
self.assertDictEqual(partida.__dict__, {'_palabra': palabra,
'_tipo_palabra': tipo_palabra,
'_intentos': intentos,
'_nombre_jugador': 'CLAUDIO',
'_palabra_aciertos':
palabra_acierto, })
# La dificultad de los intentos es de 1-10
def test_exceptions_valor_intentos_mayor(self):
with self.assertRaises(ValueError):
ServicesPartidas().iniciar_partida('claudio', 15, '', '')
# La dificultad de los intentos es de 1-10
def test_exceptions_valor_intentos_menor(self):
with self.assertRaises(ValueError):
ServicesPartidas().iniciar_partida('claudio', 0, '', '')
# La funcion get_random_palabra selecciona una palabra y tipo de palabra
# alearoria de un repositorio
# return {'palabra':'python', 'tipo_palabra':'LENGUAJE DE PROGRAMACION'}
def test_get_random_palabra(self):
palabra = ServicesPartidas().get_random_palabra()
self.assertEqual(palabra, {'palabra': palabra.get('palabra'),
'tipo_palabra': palabra.get('tipo_palabra')}
)
# La funcion intentar_letra prueba si esta la letra en la partida.palabra
# si esta la guarda y continuia
# si se temrminana los intentos muestra Perdio
# si partida.palabra es igual a partida.palabra_aciertos muestra Gano
# si todavia le quedan intentos y no completo palabra_aciertos muestra
# Continuo
@parameterized.expand([
(1, ['P', 'Y', 'T', 'H', 'O', 'N'], 'Gano'),
(2, ['M', 'R', 'P', 'Y', 'T', 'H', 'O', 'N'], 'Gano'),
(1, ['M', 'R', 'P', 'U', 'I', 'E'], 'Perdio'),
(1, ['M', 'R', 'P', 'U'], 'Continua'),
])
def test_intentar_letra(self, dificultad, letras, result):
servicePartida = ServicesPartidas()
partida = servicePartida.iniciar_partida('claudio', dificultad,
'python',
'lenguaje de programacion')
for letra in letras:
result_aux = servicePartida.intentar_letra(partida, letra)
self.assertEqual(result_aux, result)
@parameterized.expand([
(1, ['M', 'R', 'P', 'U', 'I', 'E', 'E', 'E'], 'Perdio')
])
def test_exceptionsintentar_letra_(self, dificultad, letras, result):
servicePartida = ServicesPartidas()
partida = servicePartida.iniciar_partida('claudio', dificultad,
'python',
'lenguaje de programacion')
with self.assertRaises(ValueError):
for letra in letras:
servicePartida.intentar_letra(partida, letra)
if __name__ == '__main__':
unittest.main()