@@ -86,6 +86,7 @@ def teste_colisao_somente_um_ator_destruido(self):
8686 self .assert_nao_colisao (Ator (1 , 2 ), ator )
8787 self .assert_nao_colisao (Ator (1 , 3 ), ator )
8888
89+
8990 def teste_status (self ):
9091 ator = Ator ()
9192 assert_ator_status (self , ator , 'A' , '✝' )
@@ -103,11 +104,15 @@ def teste_status(self):
103104 assert_ator_status (self , porco , '☺' , '✝' )
104105
105106
106- class PassaroAmareloTests (TestCase ):
107- def teste_status (self ):
108- passaro_amarelo = PassaroAmarelo (1 , 1 )
109- assert_ator_status (self , passaro_amarelo , '>' , '✝' )
107+ class PassaroBaseTests (TestCase ):
108+ def assert_passaro_posicao (self , x_esperado , y_esperado , status_esperado , passaro , tempo ):
109+ dct = {'x_esperado' : x_esperado , 'y_esperado' : y_esperado , 'status_esperado' : status_esperado , 'tempo' : tempo }
110+ self .assertTupleEqual ((x_esperado , y_esperado ), passaro .calcular_posicao (tempo ), dct )
111+ passaro .colidir_com_chao (tempo )
112+ self .assertEqual (status_esperado , passaro .status (tempo ), dct )
113+
110114
115+ class PassaroAmareloTests (PassaroBaseTests ):
111116 def teste_posicao_antes_do_lancamento (self ):
112117 passaro_amarelo = PassaroAmarelo (1 , 1 )
113118 passaro_amarelo .lancar (90 , 2 ) # passaro lancado a 90 graus no tempo 2 segundos
@@ -116,8 +121,71 @@ def teste_posicao_antes_do_lancamento(self):
116121 t /= 10
117122 self .assertEqual ((1 , 1 ), passaro_amarelo .calcular_posicao (t ),
118123 'Não deveria se mover no tempo %s < 2 segundtos' % t )
119- self .assertNotEqual ((1 , 1 ), passaro_amarelo .calcular_posicao (3 ), 'Deveria ter subido' )
120124
125+ def teste_status (self ):
126+ passaro_amarelo = PassaroAmarelo (1 , 1 )
127+ assert_ator_status (self , passaro_amarelo , '>' , '✝' )
128+
129+ def teste_colisao_com_chao (self ):
130+ for i in range (30 ):
131+ passaro = PassaroAmarelo (i , 0 )
132+ passaro .colidir_com_chao (3 )
133+ self .assertEqual (DESTRUIDO , passaro .status (3 ), 'Deve colidir com chão sempre que y=0' )
121134
135+ def teste_lacamento_vertical (self ):
136+ passaro_amarelo = PassaroAmarelo (1 , 1 )
137+ passaro_amarelo .lancar (90 , 2 ) # passaro lancado a 90 graus no tempo 2 segundos
122138
139+ def assert_vertical (y_local , tempo ):
140+ self .assert_passaro_posicao (1 , y_local , ATIVO , passaro_amarelo , tempo )
141+
142+ # subindo
143+
144+ assert_vertical (1 , 2.0 )
145+ assert_vertical (1 , 2.0 )
146+ assert_vertical (1 , 2.01 )
147+ assert_vertical (2 , 2.02 )
148+ assert_vertical (2 , 2.03 )
149+ assert_vertical (2 , 2.04 )
150+ assert_vertical (2 , 2.05 )
151+
152+ # descendo
153+
154+ assert_vertical (46 , 5.26 )
155+ assert_vertical (46 , 5.27 )
156+ assert_vertical (46 , 5.279999999999999 )
157+ assert_vertical (46 , 5.29 )
158+ assert_vertical (46 , 5.3 )
159+ assert_vertical (46 , 5.3100000000000005 )
160+ assert_vertical (45 , 5.32 )
161+ assert_vertical (45 , 5.33 )
162+ assert_vertical (45 , 5.34 )
163+ assert_vertical (45 , 5.35 )
164+ assert_vertical (45 , 5.359999999999999 )
165+ assert_vertical (45 , 5.37 )
166+ assert_vertical (45 , 5.38 )
167+ assert_vertical (45 , 5.390000000000001 )
168+ assert_vertical (45 , 5.4 )
169+ assert_vertical (45 , 5.41 )
170+ assert_vertical (45 , 5.42 )
171+ assert_vertical (45 , 5.43 )
172+ assert_vertical (45 , 5.4399999999999995 )
173+ assert_vertical (45 , 5.45 )
174+ assert_vertical (45 , 5.46 )
175+ assert_vertical (45 , 5.470000000000001 )
176+ assert_vertical (45 , 5.48 )
177+
178+ # preparando para impacto no chão
179+ assert_vertical (1 , 8.0 )
180+ assert_vertical (1 , 8.01 )
181+
182+ # colisão
183+ self .assert_passaro_posicao (1 , 0 , DESTRUIDO , passaro_amarelo , 8.02 )
184+
185+ def lancamento_45_graus (self ):
186+ pass
187+ # for delta_t in range(0, 1000):
188+ # t = 2 + (delta_t / 100)
189+ # y=passaro_amarelo.calcular_posicao(t)[1]
190+ # print(' assert_vertical(%s, %s)'%(y,t))
123191
0 commit comments