def test_append_different_append(self): """Append DiscRates with same and new values. The rates with repeated years are overwritten.""" disc_rate = DiscRates() disc_rate.tag.file_name = 'file1.txt' disc_rate.tag.description = 'descr1' disc_rate.years = np.array([2000, 2001, 2002]) disc_rate.rates = np.array([0.1, 0.2, 0.3]) disc_rate_add = DiscRates() disc_rate_add.tag.file_name = 'file2.txt' disc_rate_add.tag.description = 'descr2' disc_rate_add.years = np.array([2000, 2001, 2003]) disc_rate_add.rates = np.array([0.11, 0.22, 0.33]) disc_rate.append(disc_rate_add) disc_rate.check() self.assertTrue( np.array_equal(disc_rate.years, np.array([2000, 2001, 2002, 2003]))) self.assertTrue( np.array_equal(disc_rate.rates, np.array([0.11, 0.22, 0.3, 0.33]))) self.assertTrue( np.array_equal(disc_rate.tag.file_name, 'file1.txt + file2.txt')) self.assertTrue( np.array_equal(disc_rate.tag.description, 'descr1 + descr2'))
def test_check_wrongRates_fail(self): """Wrong discount rates definition""" disc_rate = DiscRates() disc_rate.rates = np.array([3,4]) disc_rate.years = np.array([1]) with self.assertLogs('climada.util.checker', level='ERROR') as cm: with self.assertRaises(ValueError): disc_rate.check() self.assertIn('Invalid DiscRates.rates size: 1 != 2.', cm.output[0])
def test_net_present_value_wrong_pass(self): """Test net_present_value wrong time range.""" disc_rate = DiscRates() disc_rate.tag.file_name = 'file1.txt' disc_rate.tag.description = 'descr1' disc_rate.years = np.arange(2000, 2050) disc_rate.rates = np.arange(disc_rate.years.size) val_years = np.ones(11)*6.512201157564418e9 with self.assertRaises(ValueError): disc_rate.net_present_value(2050, 2060, val_years)
def test_select_wrong_pass(self): """Test select wrong time range.""" disc_rate = DiscRates() disc_rate.tag.file_name = 'file1.txt' disc_rate.tag.description = 'descr1' disc_rate.years = np.arange(2000, 2050) disc_rate.rates = np.arange(disc_rate.years.size) year_range = np.arange(2050, 2060) self.assertEqual(None, disc_rate.select(year_range))
def test_check_wrongRates_fail(self): """Wrong discount rates definition""" disc_rate = DiscRates() disc_rate.rates = np.array([3, 4]) disc_rate.years = np.array([1]) with self.assertRaises(ValueError) as cm: disc_rate.check() self.assertIn('Invalid DiscRates.rates size: 1 != 2.', str(cm.exception))
def test_net_present_value_pass(self): """Test net_present_value right time range.""" disc_rate = DiscRates() disc_rate.tag.file_name = 'file1.txt' disc_rate.tag.description = 'descr1' disc_rate.years = np.arange(2000, 2050) disc_rate.rates = np.ones(disc_rate.years.size)*0.02 val_years = np.ones(23)*6.512201157564418e9 res = disc_rate.net_present_value(2018, 2040, val_years) self.assertEqual(res, 1.215049630691397e+11)
def test_append_equal_same(self): """Append the same DiscRates. The inital DiscRates is obtained.""" disc_rate = DiscRates() disc_rate.tag.file_name = 'file1.txt' disc_rate.tag.description = 'descr1' disc_rate.years = np.array([2000, 2001, 2002]) disc_rate.rates = np.array([0.1, 0.2, 0.3]) disc_rate_add = DiscRates() disc_rate_add.tag.file_name = 'file1.txt' disc_rate_add.tag.description = 'descr1' disc_rate_add.years = np.array([2000, 2001, 2002]) disc_rate_add.rates = np.array([0.1, 0.2, 0.3]) disc_rate.append(disc_rate_add) disc_rate.check() self.assertTrue(np.array_equal(disc_rate.years, disc_rate_add.years)) self.assertTrue(np.array_equal(disc_rate.rates, disc_rate_add.rates)) self.assertTrue(np.array_equal(disc_rate.tag.file_name, disc_rate_add.tag.file_name)) self.assertEqual(disc_rate.tag.description, disc_rate_add.tag.description)
def test_select_pass(self): """Test select right time range.""" disc_rate = DiscRates() disc_rate.tag.file_name = 'file1.txt' disc_rate.tag.description = 'descr1' disc_rate.years = np.arange(2000, 2050) disc_rate.rates = np.arange(disc_rate.years.size) year_range = np.arange(2010, 2020) sel_disc = disc_rate.select(year_range) self.assertTrue(np.array_equal(sel_disc.years, year_range)) self.assertTrue(np.array_equal(sel_disc.rates, disc_rate.rates[10:20]))
def test_write_read_pass(self): """ Read demo excel file.""" disc_rate = DiscRates() disc_rate.years = np.arange(1950, 2150) disc_rate.rates = np.ones(disc_rate.years.size)*0.03 file_name = os.path.join(os.path.join(CURR_DIR, 'data'), 'test_disc.xlsx') disc_rate.write_excel(file_name) disc_read = DiscRates() disc_read.read_excel(file_name) self.assertTrue(np.array_equal(disc_read.years, disc_rate.years)) self.assertTrue(np.array_equal(disc_read.rates, disc_rate.rates)) self.assertEqual(disc_read.tag.file_name, file_name) self.assertEqual(disc_read.tag.description, '')
def test_append_to_empty_same(self): """Append DiscRates to empty one.""" disc_rate = DiscRates() disc_rate_add = DiscRates() disc_rate_add.tag.file_name = 'file1.txt' disc_rate_add.tag.description = 'descr1' disc_rate_add.years = np.array([2000, 2001, 2002]) disc_rate_add.rates = np.array([0.1, 0.2, 0.3]) disc_rate.append(disc_rate_add) disc_rate.check() self.assertTrue(np.array_equal(disc_rate.years, disc_rate_add.years)) self.assertTrue(np.array_equal(disc_rate.rates, disc_rate_add.rates)) self.assertTrue(np.array_equal(disc_rate.tag.file_name, \ disc_rate_add.tag.file_name)) self.assertTrue(np.array_equal(disc_rate.tag.description, \ disc_rate_add.tag.description))
def test_write_read_pass(self): """Read demo excel file.""" disc_rate = DiscRates() disc_rate.years = np.arange(1950, 2150) disc_rate.rates = np.ones(disc_rate.years.size) * 0.03 file_name = CONFIG.disc_rates.test_data.dir().joinpath( 'test_disc.xlsx') disc_rate.write_excel(file_name) disc_read = DiscRates() disc_read.read_excel(file_name) self.assertTrue(np.array_equal(disc_read.years, disc_rate.years)) self.assertTrue(np.array_equal(disc_read.rates, disc_rate.rates)) self.assertEqual(disc_read.tag.file_name, str(file_name)) self.assertEqual(disc_read.tag.description, '')