diff --git a/costs/cost.py b/costs/cost.py index 9780e41..5911236 100644 --- a/costs/cost.py +++ b/costs/cost.py @@ -98,6 +98,7 @@ class Cost: global_capital_costs['D5020_lighting_and_branch_wiring'] + global_capital_costs['D301010_photovoltaic_system'] ) + df_end_of_life_costs = global_end_of_life_costs['End_of_life_costs'] df_operational_costs = ( global_operational_costs['Fixed_costs_electricity_peak'] + diff --git a/tests/unit_tests.py b/tests/unit_tests.py index 5a6b1dd..64f2140 100644 --- a/tests/unit_tests.py +++ b/tests/unit_tests.py @@ -18,53 +18,64 @@ from costs.cost import Cost from costs.constants import SKIN_RETROFIT, SKIN_RETROFIT_AND_SYSTEM_RETROFIT_AND_PV, SYSTEM_RETROFIT_AND_PV +class Initialize: + def __init__(self): + self._city = None + + @property + def city(self): + if self._city is None: + print('init tests') + city_file = (Path(__file__).parent / 'data/test.geojson').resolve() + output_path = (Path(__file__).parent / 'output').resolve() + city = GeometryFactory('geojson', + city_file, + height_field='citygml_me', + year_of_construction_field='ANNEE_CONS', + function_field='CODE_UTILI', + function_to_hub=Dictionaries().montreal_function_to_hub_function).city + ConstructionFactory('nrcan', city).enrich() + UsageFactory('nrcan', city).enrich() + ExportsFactory('sra', city, output_path).export() + sra_file = str((output_path / f'{city.name}_sra.xml').resolve()) + subprocess.run(['sra', sra_file], stdout=subprocess.DEVNULL) + ResultFactory('sra', city, output_path).enrich() + + for building in city.buildings: + building.energy_systems_archetype_name = 'system 1 gas pv' + EnergySystemsFactory('montreal_custom', city).enrich() + EnergyBuildingsExportsFactory('insel_monthly_energy_balance', city, output_path).export() + _insel_files = glob.glob(f'{output_path}/*.insel') + for insel_file in _insel_files: + subprocess.run(['insel', str(insel_file)], stdout=subprocess.DEVNULL) + ResultFactory('insel_monthly_energy_balance', city, output_path).enrich() + self._city = city + print('init completed') + return self._city + + class UnitTests(unittest.TestCase): - def setUp(self) -> None: - - city_file = (Path(__file__).parent / 'data/test.geojson').resolve() - output_path = (Path(__file__).parent / 'output').resolve() - city = GeometryFactory('geojson', - city_file, - height_field='citygml_me', - year_of_construction_field='ANNEE_CONS', - function_field='CODE_UTILI', - function_to_hub=Dictionaries().montreal_function_to_hub_function).city - ConstructionFactory('nrcan', city).enrich() - UsageFactory('nrcan', city).enrich() - ExportsFactory('sra', city, output_path).export() - sra_file = str((output_path / f'{city.name}_sra.xml').resolve()) - subprocess.run(['sra', sra_file]) - ResultFactory('sra', city, output_path).enrich() - - for building in city.buildings: - building.energy_systems_archetype_name = 'system 1 gas pv' - EnergySystemsFactory('montreal_custom', city).enrich() - EnergyBuildingsExportsFactory('insel_monthly_energy_balance', city, output_path).export() - _insel_files = glob.glob(f'{output_path}/*.insel') - for insel_file in _insel_files: - subprocess.run(['insel', str(insel_file)], stdout=subprocess.DEVNULL) - ResultFactory('insel_monthly_energy_balance', city, output_path).enrich() - self._city = city + init = Initialize() def test_current_status(self): - for building in self._city.buildings: + for building in self.init.city.buildings: result = Cost(building).life_cycle self.assertIsNotNone(result) self.assertEqual(0, result.values[0]) def test_scenario_1(self): - for building in self._city.buildings: + for building in self.init.city.buildings: result = Cost(building, retrofit_scenario=SKIN_RETROFIT).life_cycle self.assertIsNotNone(result) def test_scenario_2(self): - for building in self._city.buildings: + for building in self.init.city.buildings: result = Cost(building, retrofit_scenario=SYSTEM_RETROFIT_AND_PV).life_cycle self.assertIsNotNone(result) self.assertEqual(0, result.values[0]) def test_scenario_3(self): - for building in self._city.buildings: + for building in self.init.city.buildings: result = Cost(building, retrofit_scenario=SKIN_RETROFIT_AND_SYSTEM_RETROFIT_AND_PV).life_cycle self.assertIsNotNone(result)