def test_pronosticoMeteorologico_se_parsea(self): s = ("2014-09-27 11:00:0.0\n" "2014-09-27 11:59:59.0\n" "20\n" "55\n" "60\n" "1010\n" "2014-09-27 12:00:00.0\n" "2014-09-27 12:59:59.0\n" "25\n" "50\n" "65\n" "1020\n") result = ParserPronosticoMeteorologico().parse(s) prediccionesEsperadas = [ PrediccionMeteorologica( Rango(FechaYHora(date(2014, 9, 27), time(11, 0, 0)), FechaYHora(date(2014, 9, 27), time(11, 59, 59))), TemperaturaEnCelsius(20), Porcentaje(55), HumedadRelativa(Porcentaje(60)), LuzEnLux(1010)), PrediccionMeteorologica( Rango(FechaYHora(date(2014, 9, 27), time(12, 0, 0)), FechaYHora(date(2014, 9, 27), time(12, 59, 59))), TemperaturaEnCelsius(25), Porcentaje(50), HumedadRelativa(Porcentaje(65)), LuzEnLux(1020)), ] expected = PronosticoMeteorologico(prediccionesEsperadas) self.assertEqual(expected, result)
def test_planta_puede_modificarse_correctamente(self): x = EstadoDePlanta() x.temperatura(TemperaturaEnCelsius(15)) self.assertEqual(x.temperatura(), TemperaturaEnCelsius(15)) x.humedad(HumedadRelativa(Porcentaje(30))) self.assertEqual(x.humedad(), HumedadRelativa(Porcentaje(30))) x.acidez(AcidezEnPH(6.66)) self.assertEqual(x.acidez(), AcidezEnPH(6.66))
def setUp(self): self.desdeLapso1 = FechaYHora(date(2014, 9, 21), time(10, 45, 50)) self.hastaLapso1 = FechaYHora(date(2014, 9, 21), time(13, 45, 50)) self.desdeLapso2 = FechaYHora(date(2014, 9, 20), time(10, 45, 50)) self.hastaLapso2 = FechaYHora(date(2014, 9, 20), time(13, 45, 50)) self.prediccion1 = PrediccionMeteorologica( Rango(self.desdeLapso1, self.hastaLapso1), TemperaturaEnCelsius(20), Porcentaje(80), HumedadRelativa(Porcentaje(50)), LuzEnLux(1000)) self.prediccion2 = PrediccionMeteorologica( Rango(self.desdeLapso2, self.hastaLapso2), TemperaturaEnCelsius(25), Porcentaje(40), HumedadRelativa(Porcentaje(10)), LuzEnLux(800))
def test_prediccion_se_construye_correctamente(self): desde = FechaYHora(date(2014, 9, 20), time(10, 45, 50)) hasta = FechaYHora(date(2014, 9, 20), time(13, 45, 50)) prediccion = PrediccionMeteorologica(Rango(desde, hasta), TemperaturaEnCelsius(25), Porcentaje(40), HumedadRelativa(Porcentaje(10)), LuzEnLux(800)) self.assertEqual(Rango(desde, hasta), prediccion.lapso()) self.assertEqual(TemperaturaEnCelsius(25), prediccion.temperatura()) self.assertEqual(Porcentaje(40), prediccion.probabilidadDeLluvia()) self.assertEqual(HumedadRelativa(Porcentaje(10)), prediccion.humedad()) self.assertEqual(LuzEnLux(800), prediccion.luzAmbiente())
def parse(self, unaCadena): # El formato es: # desdeLapso # hastaLapso # temp # lluvia # humedad # luz # desdeLapso # ... predicciones = [] datosSerializados = unaCadena.split("\n") for i in range(0, len(datosSerializados) - 1, 6): desde = CadenaAFechaYHora().parse(datosSerializados[i]) hasta = CadenaAFechaYHora().parse(datosSerializados[i + 1]) temp = TemperaturaEnCelsius(CadenaANumero().parse( datosSerializados[i + 2])) lluvia = CadenaAPorcentaje().parse(datosSerializados[i + 3]) humedad = HumedadRelativa(CadenaAPorcentaje().parse( datosSerializados[i + 4])) luz = LuzEnLux(CadenaANumero().parse(datosSerializados[i + 5])) predicciones.append( icherry.central_meteorologica.PrediccionMeteorologica( Rango(desde, hasta), temp, lluvia, humedad, luz)) return icherry.central_meteorologica.PronosticoMeteorologico( predicciones)
def __init__(self): super().__init__() self._estadoFenologico = EstadoFenologico() self._temperatura = TemperaturaEnCelsius(16) self._humedad = HumedadRelativa(Porcentaje(0)) self._acidez = AcidezEnPH(7) self._estadoDeSalud = EstadoDeSaludBueno
def test_central_meteorologica_devuelve_pronostico(self): desde = FechaYHora(date(2014, 9, 21), time(10, 45, 50)) hasta = FechaYHora(date(2014, 9, 21), time(12, 45, 50)) predictor = PredictorMeteorologicoMock(TemperaturaEnCelsius(25), Porcentaje(40), HumedadRelativa(Porcentaje(10)), LuzEnLux(800)) central = CentralMeteorologica(predictor, None) self.assertIsNone(central.ultimoPronostico()) pronostico = central.obtenerPronostico(desdeFechaYHora=desde, cantidadDeHs=2) self.assertEqual(desde, pronostico.fechaInicio()) self.assertEqual(hasta, pronostico.fechaFin()) prediccion1 = pronostico.prediccionPara( FechaYHora(date(2014, 9, 21), time(11, 40, 50))) self.assertEqual( Rango(desde, desde.agregarDuracion(DuracionEnHoras(1))), prediccion1.lapso()) self.assertEqual(TemperaturaEnCelsius(25), prediccion1.temperatura()) self.assertEqual(Porcentaje(40), prediccion1.probabilidadDeLluvia()) self.assertEqual(HumedadRelativa(Porcentaje(10)), prediccion1.humedad()) self.assertEqual(LuzEnLux(800), prediccion1.luzAmbiente()) prediccion2 = pronostico.prediccionPara( FechaYHora(date(2014, 9, 21), time(12, 40, 50))) self.assertEqual( Rango(desde.agregarDuracion(DuracionEnHoras(1)), hasta), prediccion2.lapso()) self.assertEqual(TemperaturaEnCelsius(25), prediccion2.temperatura()) self.assertEqual(Porcentaje(40), prediccion2.probabilidadDeLluvia()) self.assertEqual(HumedadRelativa(Porcentaje(10)), prediccion2.humedad()) self.assertEqual(LuzEnLux(800), prediccion2.luzAmbiente())
def humedadRelativa(x): return HumedadRelativa(Porcentaje(x))
def humedad(numero): # dado un número entre 1 y 100, construye una humedad relativa, # para ahorrar verbosidad, nomás. return HumedadRelativa(Porcentaje(numero))