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())
Ejemplo n.º 2
0
def main(argv):
    cmd = None

    try:
        opts, args = getopt.getopt(argv, "hc:")
    except getopt.GetoptError:
        mensajeAyuda()
        sys.exit()

    for opt, arg in opts:
        if opt == '-c' and arg in comandosValidos:
            cmd = arg
        else:
            mensajeAyuda()
            sys.exit()

    if cmd is None:
        mensajeAyuda()
        sys.exit()

    predictor = PredictorMeteorologicoPorArchivo(
        DispositivoDeLecturaArchivo("devices/pronostico"))
    reloj = ProveedorDeTiempoPorArchivo(
        DispositivoDeLecturaArchivo("devices/tiempo"))
    central = CentralMeteorologica(predictor, reloj)

    if cmd == 'pronostico':
        horas = 24
        desdeFechaYHora = FechaYHora(datetime.date(2014, 9, 27),
                                     datetime.time(11, 0, 0))
        pronostico = central.obtenerPronostico(desdeFechaYHora, horas)
        t = desdeFechaYHora
        for _ in range(0, horas):
            p = pronostico.prediccionPara(t)
            print(('El pronóstico para {4} es: \n'
                   'Temperatura: {0}, Humedad: {1}, '
                   'Prob. de lluvia: {2}, Luz ambiente: {3}')
                  .format(p.temperatura(),
                          p.humedad(),
                          p.probabilidadDeLluvia(),
                          p.luzAmbiente(), p.lapso()))
            t = t.agregarHoras(1)
    elif cmd == 'sensores':     # TODO
        print("No implementado.")
    elif cmd == 'tiempo':
        t = central.obtenerFechaYHora()
        print(t)
    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 test_central_meteorologica_devuelve_fechaYHora(self):
     fechaYHora = FechaYHora(date(2014, 9, 21), time(10, 45, 50))
     proveedorDeTiempo = ProveedorDeTiempoMock(fechaYHora)
     central = CentralMeteorologica(None, proveedorDeTiempo)
     self.assertEqual(fechaYHora, central.obtenerFechaYHora())
 def test_central_meteorologica_devuelve_fechaYHora(self):
     fechaYHora = FechaYHora(date(2014, 9, 21), time(10, 45, 50))
     proveedorDeTiempo = ProveedorDeTiempoMock(fechaYHora)
     central = CentralMeteorologica(None, proveedorDeTiempo)
     self.assertEqual(fechaYHora, central.obtenerFechaYHora())