Esempio n. 1
0
    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)
Esempio n. 2
0
 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 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 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))
Esempio n. 5
0
    def __init__(self):
        super().__init__()

        self._estadoFenologico = EstadoFenologico()
        self._temperatura = TemperaturaEnCelsius(16)
        self._humedad = HumedadRelativa(Porcentaje(0))
        self._acidez = AcidezEnPH(7)
        self._estadoDeSalud = EstadoDeSaludBueno
Esempio n. 6
0
    def __init__(self):
        """inicializa un estado fenológico a partir de valores por defecto
        (todos cero).
        """

        self._cantidadBrotes = 0
        self._cantidadFlores = 0
        self._cantidadFrutos = 0
        self._porcentajeFrutasMaduras = Porcentaje(0)
        self._estadioDeCultivo = EstadioGerminacion
        self._altura = LongitudEnCentimetros(0)
Esempio n. 7
0
    def test_estadoFenologico_se_inicializa_en_cero_y_estadio_germinacion(
            self):
        """Inicializa un estado fenológico, deberían estar todos los
        parámetros numéricos en cero (el porcentaje tiene valor() 0),
        y el estadio de cultivo debería ser el de germinación (es el
        primer estadio de cualquier plan maestro).

        """
        x = EstadoFenologico()
        self.assertEqual(x.cantidadBrotes(), 0)
        self.assertEqual(x.cantidadFlores(), 0)
        self.assertEqual(x.cantidadFrutos(), 0)
        self.assertEqual(x.porcentajeFrutasMaduras(), Porcentaje(0))
        self.assertEqual(x.estadioDeCultivo(), EstadioGerminacion)
        self.assertEqual(x.altura(), LongitudEnCentimetros(0))
    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())
Esempio n. 9
0
 def test_porcentaje_fuera_de_limite_inferior(self):
     Porcentaje(-1)  # debe tirar excepción
Esempio n. 10
0
 def humedadRelativa(x):
     return HumedadRelativa(Porcentaje(x))
Esempio n. 11
0
 def parse(self, unaCadena):
     return Porcentaje(int(unaCadena))
Esempio n. 12
0
 def test_comparar_ph_con_porcentaje_explota(self):
     # debe tirar excepción
     LuzEnLux(5) == Porcentaje(16)
Esempio n. 13
0
 def test_comparar_humedad_con_porcentaje_explota(self):
     humedad(50) == Porcentaje(50)  # debe tirar excepción
Esempio n. 14
0
def humedad(numero):
    # dado un número entre 1 y 100, construye una humedad relativa,
    # para ahorrar verbosidad, nomás.
    return HumedadRelativa(Porcentaje(numero))
Esempio n. 15
0
 def test_porcentaje_fuera_de_limite_superior(self):
     Porcentaje(101)  # debe tirar excepción
Esempio n. 16
0
 def test_comparadores(self):
     self.assertLess(Porcentaje(10), Porcentaje(11))
     self.assertGreater(Porcentaje(11), Porcentaje(10))
     self.assertGreaterEqual(Porcentaje(11), Porcentaje(10))
     self.assertGreaterEqual(Porcentaje(11), Porcentaje(11))
     self.assertLessEqual(Porcentaje(11), Porcentaje(11))
     self.assertLessEqual(Porcentaje(10), Porcentaje(11))
     self.assertEqual(Porcentaje(10), Porcentaje(10))
     self.assertNotEqual(Porcentaje(10), Porcentaje(11))
Esempio n. 17
0
 def test_comparar_porcentaje_con_liquido_explota(self):
     # debe tirar excepción
     Porcentaje(50) == LiquidoEnLitros(100)