59 lines
2.2 KiB
Python
59 lines
2.2 KiB
Python
"""
|
|
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')
|
|
|