""" TestSensorsFactory test and validate the city model structure schedules SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2021 Project Author Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ from pathlib import Path from unittest import TestCase import pandas as pd from city_model_structure.city import City from city_model_structure.building import Building from city_model_structure.city_object import CityObject from imports.sensors_factory import SensorsFactory class TestSensorsFactory(TestCase): """ TestSchedulesFactory TestCase """ def setUp(self) -> None: """ Configure test environment :return: """ self._city = TestSensorsFactory._mockup_city() self._end_point = (Path(__file__).parent / 'tests_data/EV-GM energy demand weekly report_01-26-20_04-30.csv').resolve() @staticmethod def _mockup_city(): lower_corner = [0, 0, 0] upper_corner = [10, 10, 10] srs_name = 'Mockup_city' buildings = [] lod = 2 surfaces = [] year_of_construction = 2021 function = "office" buildings.append(Building("EV", lod, surfaces, year_of_construction, function, lower_corner)) buildings.append(Building("GM", lod, surfaces, year_of_construction, function, lower_corner)) city = City(lower_corner, upper_corner, srs_name, buildings) city.add_city_object(CityObject("GM_MB_EV", lod, surfaces, lower_corner)) return city def test_city_with_sensors(self): SensorsFactory('cec', self._city, self._end_point).enrich() SensorsFactory('cgf', self._city, self._end_point).enrich() SensorsFactory('ct', self._city, self._end_point).enrich() for city_object in self._city.city_objects: print(city_object.name) for sensor in city_object.sensors: print(sensor.name) # force update last row update = pd.DataFrame([['2020-01-19 23:55:00', '12345.0']], columns=["Date time", "Energy consumption"]) update = update.astype({"Date time": 'datetime64', "Energy consumption": 'float64'}) sensor.add_period(update) row = sensor.measures.loc[sensor.measures["Date time"] == '2020-01-19 23:55:00']['Energy consumption'].iloc[0] self.assertTrue(f'{row}' == '12345.0')