Skip to content

Commit 26a4309

Browse files
Unit test DR is set when FIR is provided
1 parent 37fdfe7 commit 26a4309

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/geophires_x/Economics.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2166,24 +2166,27 @@ def read_parameters(self, model: Model) -> None:
21662166
model.logger.info(f'complete {__class__!s}: {sys._getframe().f_code.co_name}')
21672167

21682168
def sync_interest_rate(self, model):
2169+
def discount_rate_display() -> str:
2170+
return str(self.discountrate.quantity()).replace(' dimensionless', '')
2171+
21692172
if self.discountrate.Provided ^ self.FixedInternalRate.Provided:
21702173
if self.discountrate.Provided:
21712174
self.FixedInternalRate.value = self.discountrate.quantity().to(
21722175
convertible_unit(self.FixedInternalRate.CurrentUnits)).magnitude
21732176
model.logger.info(f'Set {self.FixedInternalRate.Name} to {self.FixedInternalRate.quantity()} '
2174-
f'because {self.discountrate.Name} was provided ({self.discountrate.value})')
2177+
f'because {self.discountrate.Name} was provided ({discount_rate_display()})')
21752178
else:
21762179
self.discountrate.value = self.FixedInternalRate.quantity().to(
21772180
convertible_unit(self.discountrate.CurrentUnits)).magnitude
21782181
model.logger.info(
2179-
f'Set {self.discountrate.Name} to {self.discountrate.value} because '
2182+
f'Set {self.discountrate.Name} to {discount_rate_display()} because '
21802183
f'{self.FixedInternalRate.Name} was provided ({self.FixedInternalRate.quantity()})')
21812184

21822185
if self.discountrate.Provided and self.FixedInternalRate.Provided \
21832186
and self.discountrate.quantity().to(convertible_unit(self.FixedInternalRate.CurrentUnits)).magnitude \
21842187
!= self.FixedInternalRate.value:
21852188
model.logger.warning(f'{self.discountrate.Name} and {self.FixedInternalRate.Name} provided with different '
2186-
f'values ({self.discountrate.value}; {self.FixedInternalRate.quantity()}). '
2189+
f'values ({discount_rate_display()}; {self.FixedInternalRate.quantity()}). '
21872190
f'It is recommended to only provide one of these values.')
21882191

21892192
self.interest_rate.value = self.discountrate.quantity().to(convertible_unit(self.interest_rate.CurrentUnits)).magnitude

tests/test_geophires_x.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,9 +553,28 @@ def input_params(discount_rate=None, fixed_internal_rate=None):
553553
return GeophiresInputParameters(params)
554554

555555
client = GeophiresXClient()
556-
with self.assertLogs(level='INFO') as logs: # noqa: F841
556+
557+
# noinspection PyPep8Naming
558+
def assertHasLogRecordWithMessage(logs_, message):
559+
assert message in [record.message for record in logs_.records]
560+
561+
with self.assertLogs(level='INFO') as logs:
557562
result = client.get_geophires_result(input_params(discount_rate='0.042'))
558563

559564
assert result is not None
560565
assert result.result['ECONOMIC PARAMETERS']['Interest Rate']['value'] == 4.2
561566
assert result.result['ECONOMIC PARAMETERS']['Interest Rate']['unit'] == '%'
567+
assertHasLogRecordWithMessage(
568+
logs, 'Set Fixed Internal Rate to 4.2 percent because Discount Rate was provided (0.042)'
569+
)
570+
571+
with self.assertLogs(level='INFO') as logs2:
572+
result2 = client.get_geophires_result(input_params(fixed_internal_rate='4.2'))
573+
574+
assert result2 is not None
575+
assert result2.result['ECONOMIC PARAMETERS']['Interest Rate']['value'] == 4.2
576+
assert result2.result['ECONOMIC PARAMETERS']['Interest Rate']['unit'] == '%'
577+
578+
assertHasLogRecordWithMessage(
579+
logs2, 'Set Discount Rate to 0.042 because Fixed Internal Rate was provided (4.2 percent)'
580+
)

0 commit comments

Comments
 (0)