def test_acciones_en_horario(self): def lapso(desde, hasta): return Rango(diaN(desde), diaN(hasta)) def acciones(desde, hasta): # el 'hasta' está incluído n = len(_lista) if hasta < 0 or desde >= n: return set() if desde < 0: desde = 0 if hasta >= n: hasta = n - 1 return set([aP[1] for aP in _lista[desde:hasta + 1]]) def chk_acciones(p, desde, hasta): s = set(p.accionesEnHorario(lapso(desde, hasta))) self.assertEqual(s, acciones(desde, hasta)) # ahora sí, iniciamos una pequeña batería de tests p = ProgramaDeSuministro(_lapso) for fecha_accion in _lista: p.programarAccion(*fecha_accion) s = set(p.accionesEnHorario(p.lapso())) self.assertEqual(s, acciones(0, len(_lista) - 1)) chk_acciones(p, 0, 2) chk_acciones(p, 4, 20) chk_acciones(p, -1, 2) chk_acciones(p, -2, -1)
def test_acciones_removidas(self): # en este test verificamos que las acciones sean correctamente # removidas del programa de suministro. Vamos a usar cualquier # fruta como los datos del programa de suministro porque no # interesa ya demasiado el tema de las fechas y hora (eso ya # lo probamos antes). p = ProgramaDeSuministro(Rango(1, 10)) for i in range(1, 7): p.programarAccion(i, str(i)) # pequeño sanity check antes de empezar self.assertEqual(set(p.accionesEnHorario(p.lapso())), {'1', '2', '3', '4', '5', '6'}) def chk_remove(rango, accionesRemovidas, accionesRestantes): """verifica que dado un rango, el programa de suministro encuentre las acciones removidas, las remueva y finalmente se quede sólo con las acciones finales (ambos argumentos son conjuntos) """ self.assertEqual(set(p.retirarAccionesEnHorario(rango)), accionesRemovidas) self.assertEqual( set([aP.accion() for aP in p.accionesProgramadas()]), accionesRestantes ) # removemos '3' y '4' chk_remove(Rango(3, 4), {'3', '4'}, {'1', '2', '5', '6'}) # removemos '6,' chk_remove(Rango(5.5, 100), {'6'}, {'1', '2', '5'}) # removemos '1' y '2,' chk_remove(Rango(-10, 2.8), {'1', '2'}, {'5'}) # removemos '5', queda vacío chk_remove(Rango(-10, 10), {'5'}, set())
def test_acciones_removidas(self): # en este test verificamos que las acciones sean correctamente # removidas del programa de suministro. Vamos a usar cualquier # fruta como los datos del programa de suministro porque no # interesa ya demasiado el tema de las fechas y hora (eso ya # lo probamos antes). p = ProgramaDeSuministro(Rango(1, 10)) for i in range(1, 7): p.programarAccion(i, str(i)) # pequeño sanity check antes de empezar self.assertEqual(set(p.accionesEnHorario(p.lapso())), {'1', '2', '3', '4', '5', '6'}) def chk_remove(rango, accionesRemovidas, accionesRestantes): """verifica que dado un rango, el programa de suministro encuentre las acciones removidas, las remueva y finalmente se quede sólo con las acciones finales (ambos argumentos son conjuntos) """ self.assertEqual(set(p.retirarAccionesEnHorario(rango)), accionesRemovidas) self.assertEqual( set([aP.accion() for aP in p.accionesProgramadas()]), accionesRestantes) # removemos '3' y '4' chk_remove(Rango(3, 4), {'3', '4'}, {'1', '2', '5', '6'}) # removemos '6,' chk_remove(Rango(5.5, 100), {'6'}, {'1', '2', '5'}) # removemos '1' y '2,' chk_remove(Rango(-10, 2.8), {'1', '2'}, {'5'}) # removemos '5', queda vacío chk_remove(Rango(-10, 10), {'5'}, set())