Skip to content

Commit 7b20ecd

Browse files
author
renzon
committed
Teste se jogo acabou com todos atores Ok
1 parent a564849 commit 7b20ecd

File tree

2 files changed

+47
-4
lines changed

2 files changed

+47
-4
lines changed

fase.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from atores import ATIVO
2+
3+
14
class Fase():
25
def __init__(self):
36
self._passaros = []
@@ -13,5 +16,17 @@ def adicionar_porco(self, *porcos):
1316
def adicionar_passaro(self, *passaros):
1417
self._passaros.extend(passaros)
1518

16-
def acabou(self,tempo):
17-
return True
19+
def acabou(self, tempo):
20+
return not self._existe_porco_ativo(tempo) or not self._existe_passaro_ativo(tempo)
21+
22+
def _existe_porco_ativo(self, tempo):
23+
return self._verificar_se_existe_ator_ativo(self._porcos, tempo)
24+
25+
def _verificar_se_existe_ator_ativo(self, atores, tempo):
26+
for a in atores:
27+
if a.status(tempo) == ATIVO:
28+
return True
29+
return False
30+
31+
def _existe_passaro_ativo(self, tempo):
32+
return self._verificar_se_existe_ator_ativo(self._passaros,tempo)

testes/fase_testes.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,33 @@ def teste_adicionar_passaro(self):
4141
self.assertListEqual([passaro, passaro1, passaro2], fase._passaros)
4242

4343
def teste_acabou_sem_porcos(self):
44-
fase=Fase()
45-
self.assertTrue(fase.acabou(0))
44+
fase = Fase()
45+
self.assertTrue(fase.acabou(0))
46+
47+
def teste_acabou_com_porcos_e_passaros(self):
48+
fase = Fase()
49+
porcos = [Porco(1, 1) for i in range(2)]
50+
passaros = [PassaroAmarelo(1, 1) for i in range(2)]
51+
fase.adicionar_porco(*porcos)
52+
fase.adicionar_passaro(*passaros)
53+
self.assertFalse(fase.acabou(0))
54+
self.assertFalse(fase.acabou(2.9))
55+
self.assertFalse(fase.acabou(3))
56+
57+
for passaro, porco in zip(passaros, porcos):
58+
passaro.colidir(porco, 3)
59+
60+
self.assertFalse(fase.acabou(0))
61+
self.assertFalse(fase.acabou(2.9))
62+
self.assertTrue(fase.acabou(3))
63+
64+
fase.adicionar_obstaculo(Obstaculo())
65+
self.assertTrue(fase.acabou(3), 'Obstáculo não interfere no fim do jogo')
66+
67+
fase.adicionar_porco(Porco())
68+
self.assertTrue(fase.acabou(3), 'Com Porco ativo e sem pássaro para lançar, o jogo deveria acabar')
69+
70+
fase.adicionar_porco(PassaroAmarelo())
71+
self.assertTrue(fase.acabou(3), 'Com Porco ativo e com pássaro para lançar, o jogo não deveria acabar')
72+
73+

0 commit comments

Comments
 (0)