@@ -1319,16 +1319,22 @@ def test_royalty_rate(self):
13191319 zero_royalty_npv = None
13201320 for royalty_rate in [0 , 0.1 ]:
13211321 with self .subTest (msg = f'royalty_rate={ royalty_rate } ' ):
1322- result = GeophiresXClient ().get_geophires_result (
1323- ImmutableGeophiresInputParameters (
1324- from_file_path = self ._get_test_file_path (
1325- 'geophires_x_tests/generic-egs-case-2_sam-single-owner-ppa.txt'
1326- ),
1327- params = {
1328- 'Royalty Rate' : royalty_rate ,
1329- },
1322+
1323+ def _get_result (
1324+ _royalty_rate : float , additional_params : dict [str , Any ] | None = None
1325+ ) -> GeophiresXResult :
1326+ if additional_params is None :
1327+ additional_params = {}
1328+ return GeophiresXClient ().get_geophires_result (
1329+ ImmutableGeophiresInputParameters (
1330+ from_file_path = self ._get_test_file_path (
1331+ 'geophires_x_tests/generic-egs-case-2_sam-single-owner-ppa.txt'
1332+ ),
1333+ params = {'Royalty Rate' : _royalty_rate , ** additional_params },
1334+ )
13301335 )
1331- )
1336+
1337+ result = _get_result (royalty_rate )
13321338 opex_result = result .result ['OPERATING AND MAINTENANCE COSTS (M$/yr)' ]
13331339
13341340 self .assertIsNotNone (opex_result [royalties_output_name ])
@@ -1347,8 +1353,14 @@ def test_royalty_rate(self):
13471353
13481354 self .assertEqual (opex_line_item_sum , total_opex_MUSD )
13491355
1350- econ_result = result .result ['EXTENDED ECONOMICS' ]
1351- royalty_holder_npv_MUSD = econ_result ['Royalty Holder NPV' ]['value' ]
1356+ def _royalty_holder_npv_MUSD (r : GeophiresXResult ) -> float :
1357+ econ_result = r .result ['EXTENDED ECONOMICS' ]
1358+ return econ_result ['Royalty Holder NPV' ]['value' ]
1359+
1360+ # econ_result = result.result['EXTENDED ECONOMICS']
1361+ royalty_holder_npv_MUSD = _royalty_holder_npv_MUSD (
1362+ result
1363+ ) # econ_result['Royalty Holder NPV']['value']
13521364
13531365 if royalty_rate > 0.0 :
13541366 self .assertEqual (58.88 , opex_result [royalties_output_name ]['value' ])
@@ -1369,7 +1381,14 @@ def test_royalty_rate(self):
13691381 )
13701382
13711383 if royalty_rate == 0.1 :
1372- self .assertAlmostEqual (708.07 , royalty_holder_npv_MUSD , places = 2 )
1384+ base_expected_royalty_holder_npv_MUSD = 708.07
1385+ self .assertAlmostEqual (base_expected_royalty_holder_npv_MUSD , royalty_holder_npv_MUSD , places = 2 )
1386+
1387+ result_multiple_construction_years = _get_result (
1388+ royalty_rate , additional_params = {'Construction Years' : 5 }
1389+ )
1390+ mcy_royalty_npv = _royalty_holder_npv_MUSD (result_multiple_construction_years )
1391+ self .assertLess (mcy_royalty_npv , base_expected_royalty_holder_npv_MUSD )
13731392
13741393 if royalty_rate == 0.0 :
13751394 self .assertEqual (0 , opex_result [royalties_output_name ]['value' ])
0 commit comments