def test_cutoff_hazard_pass(self): """Test _cutoff_hazard_damage""" meas = MeasureSet() meas.read_mat(ENT_TEST_MAT) act_1 = meas.get_measure(name='Seawall')[0] haz = Hazard('TC') haz.read_mat(HAZ_TEST_MAT) exp = Exposures() exp.read_mat(ENT_TEST_MAT) exp.gdf.rename(columns={'if_': 'if_TC'}, inplace=True) exp.check() imp_set = ImpactFuncSet() imp_set.read_mat(ENT_TEST_MAT) new_haz = act_1._cutoff_hazard_damage(exp, imp_set, haz) self.assertFalse(id(new_haz) == id(haz)) pos_no_null = np.array([6249, 7697, 9134, 13500, 13199, 5944, 9052, 9050, 2429, 5139, 9053, 7102, 4096, 1070, 5948, 1076, 5947, 7432, 5949, 11694, 5484, 6246, 12147, 778, 3326, 7199, 12498, 11698, 6245, 5327, 4819, 8677, 5970, 7101, 779, 3894, 9051, 5976, 3329, 5978, 4282, 11697, 7193, 5351, 7310, 7478, 5489, 5526, 7194, 4283, 7191, 5328, 4812, 5528, 5527, 5488, 7475, 5529, 776, 5758, 4811, 6223, 7479, 7470, 5480, 5325, 7477, 7318, 7317, 11696, 7313, 13165, 6221]) all_haz = np.arange(haz.intensity.shape[0]) all_haz[pos_no_null] = -1 pos_null = np.argwhere(all_haz > 0).reshape(-1) for i_ev in pos_null: self.assertEqual(new_haz.intensity[i_ev, :].max(), 0)
def test_change_imp_func_pass(self): """Test _change_imp_func""" meas = MeasureSet() meas.read_mat(ENT_TEST_MAT) act_1 = meas.get_measure(name='Mangroves')[0] imp_set = ImpactFuncSet() imp_tc = ImpactFunc() imp_tc.haz_type = 'XX' imp_tc.id = 1 imp_tc.intensity = np.arange(10, 100, 10) imp_tc.intensity[0] = 0. imp_tc.intensity[-1] = 100. imp_tc.mdd = np.array([0.0, 0.0, 0.021857142857143, 0.035887500000000, 0.053977415307403, 0.103534246575342, 0.180414000000000, 0.410796000000000, 0.410796000000000]) imp_tc.paa = np.array([0, 0.005000000000000, 0.042000000000000, 0.160000000000000, 0.398500000000000, 0.657000000000000, 1.000000000000000, 1.000000000000000, 1.000000000000000]) imp_set.append(imp_tc) new_imp = act_1._change_imp_func(imp_set).get_func('XX')[0] self.assertTrue(np.array_equal(new_imp.intensity, np.array([4., 24., 34., 44., 54., 64., 74., 84., 104.]))) self.assertTrue(np.array_equal(new_imp.mdd, np.array([0, 0, 0.021857142857143, 0.035887500000000, 0.053977415307403, 0.103534246575342, 0.180414000000000, 0.410796000000000, 0.410796000000000]))) self.assertTrue(np.array_equal(new_imp.paa, np.array([0, 0.005000000000000, 0.042000000000000, 0.160000000000000, 0.398500000000000, 0.657000000000000, 1.000000000000000, 1.000000000000000, 1.000000000000000]))) self.assertFalse(id(new_imp) == id(imp_tc))
def read_excel(self, file_name, description=''): """Read csv or xls or xlsx file following climada's template. Parameters: file_name (str, optional): file name(s) or folder name containing the files to read description (str or list(str), optional): one description of the data or a description of each data file Raises: ValueError """ self.exposures = Exposures(pd.read_excel(file_name)) self.exposures.tag = Tag() self.exposures.tag.file_name = file_name self.exposures.tag.description = description self.disc_rates = DiscRates() self.disc_rates.read_excel(file_name, description) self.impact_funcs = ImpactFuncSet() self.impact_funcs.read_excel(file_name, description) self.measures = MeasureSet() self.measures.read_excel(file_name, description)
def test_get_measure_wrong_error(self): """Test get_measure method with wrong inputs.""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Seawall' act_1.haz_type = 'FL' meas.append(act_1) self.assertEqual([], meas.get_measure('Mangrove'))
def from_excel(cls, file_name, description=''): """Read csv or xls or xlsx file following climada's template. Parameters ---------- file_name : str, optional file name(s) or folder name containing the files to read description : str or list(str), optional one description of the data or a description of each data file Returns ------- ent : climada.entity.Entity The entity from excel file """ exp = Exposures(pd.read_excel(file_name)) exp.tag = Tag() exp.tag.file_name = str(file_name) exp.tag.description = description dr = DiscRates.from_excel(file_name, description) impf_set = ImpactFuncSet.from_excel(file_name, description) meas_set = MeasureSet.from_excel(file_name, description) return cls(exposures=exp, disc_rates=dr, impact_func_set=impf_set, measure_set=meas_set)
def test_get_measure_pass(self): """Test normal functionality of get_measure method.""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'FL' meas.append(act_1) self.assertIs(act_1, meas.get_measure(name='Mangrove')[0]) act_2 = Measure() act_2.name = 'Seawall' act_2.haz_type = 'FL' meas.append(act_2) self.assertIs(act_1, meas.get_measure(name='Mangrove')[0]) self.assertIs(act_2, meas.get_measure(name='Seawall')[0]) self.assertEqual(2, len(meas.get_measure('FL')))
def test_demo_file(self): # Read demo excel file description = 'One single file.' meas = MeasureSet.from_mat(ENT_TEST_MAT, description) # Check results n_meas = 4 self.assertEqual(meas.size(), n_meas) act_man = meas.get_measure(name='Mangroves')[0] self.assertEqual(act_man.name, 'Mangroves') self.assertEqual(act_man.haz_type, 'XX') self.assertEqual(type(act_man.color_rgb), np.ndarray) self.assertEqual(len(act_man.color_rgb), 3) self.assertEqual(act_man.color_rgb[0], 0.1529) self.assertEqual(act_man.color_rgb[1], 0.251) self.assertEqual(act_man.color_rgb[2], 0.5451) self.assertEqual(act_man.cost, 1311768360.8515418) self.assertEqual(act_man.hazard_freq_cutoff, 0) self.assertEqual(act_man.hazard_set, 'nil') self.assertEqual(act_man.hazard_inten_imp, (1, -4)) self.assertEqual(act_man.exposures_set, 'nil') self.assertEqual(act_man.exp_region_id, []) self.assertEqual(act_man.mdd_impact, (1, 0)) self.assertEqual(act_man.paa_impact, (1, 0)) self.assertEqual(act_man.imp_fun_map, 'nil') self.assertEqual(act_man.risk_transf_attach, 0) self.assertEqual(act_man.risk_transf_cover, 0) act_buil = meas.get_measure(name='Building code')[0] self.assertEqual(act_buil.name, 'Building code') self.assertEqual(act_buil.haz_type, 'XX') self.assertEqual(type(act_buil.color_rgb), np.ndarray) self.assertEqual(len(act_buil.color_rgb), 3) self.assertEqual(act_buil.color_rgb[0], 0.6980) self.assertEqual(act_buil.color_rgb[1], 0.8745) self.assertEqual(act_buil.color_rgb[2], 0.9333) self.assertEqual(act_buil.cost, 9200000000.0000000) self.assertEqual(act_buil.hazard_freq_cutoff, 0) self.assertEqual(act_buil.hazard_set, 'nil') self.assertEqual(act_buil.hazard_inten_imp, (1, 0)) self.assertEqual(act_buil.exposures_set, 'nil') self.assertEqual(act_buil.exp_region_id, []) self.assertEqual(act_buil.mdd_impact, (0.75, 0)) self.assertEqual(act_buil.paa_impact, (1, 0)) self.assertEqual(act_man.imp_fun_map, 'nil') self.assertEqual(act_buil.risk_transf_attach, 0) self.assertEqual(act_buil.risk_transf_cover, 0) self.assertEqual(meas.tag.file_name, str(ENT_TEST_MAT)) self.assertEqual(meas.tag.description, description)
def test_cutoff_hazard_region_pass(self): """Test _cutoff_hazard_damage in specific region""" meas = MeasureSet.from_mat(ENT_TEST_MAT) act_1 = meas.get_measure(name='Seawall')[0] act_1.exp_region_id = [1] haz = Hazard.from_mat(HAZ_TEST_MAT) exp = Exposures.from_mat(ENT_TEST_MAT) exp.gdf['region_id'] = np.zeros(exp.gdf.shape[0]) exp.gdf.region_id.values[10:] = 1 exp.check() imp_set = ImpactFuncSet.from_mat(ENT_TEST_MAT) new_haz = act_1._cutoff_hazard_damage(exp, imp_set, haz) self.assertFalse(id(new_haz) == id(haz)) pos_no_null = np.array([ 6249, 7697, 9134, 13500, 13199, 5944, 9052, 9050, 2429, 5139, 9053, 7102, 4096, 1070, 5948, 1076, 5947, 7432, 5949, 11694, 5484, 6246, 12147, 778, 3326, 7199, 12498, 11698, 6245, 5327, 4819, 8677, 5970, 7101, 779, 3894, 9051, 5976, 3329, 5978, 4282, 11697, 7193, 5351, 7310, 7478, 5489, 5526, 7194, 4283, 7191, 5328, 4812, 5528, 5527, 5488, 7475, 5529, 776, 5758, 4811, 6223, 7479, 7470, 5480, 5325, 7477, 7318, 7317, 11696, 7313, 13165, 6221 ]) all_haz = np.arange(haz.intensity.shape[0]) all_haz[pos_no_null] = -1 pos_null = np.argwhere(all_haz > 0).reshape(-1) centr_null = np.unique(exp.gdf.centr_[exp.gdf.region_id == 0]) for i_ev in pos_null: self.assertEqual(new_haz.intensity[i_ev, centr_null].max(), 0)
def test_template_file_pass(self): """ Read template excel file""" meas = MeasureSet() meas.read_excel(ENT_TEMPLATE_XLS) self.assertEqual(meas.size(), 7) name = 'elevate existing buildings' act_buil = meas.get_measure(name=name)[0] self.assertEqual(act_buil.name, name) self.assertEqual(act_buil.haz_type, 'TS') self.assertTrue( np.array_equal(act_buil.color_rgb, np.array([0.84, 0.89, 0.70]))) self.assertEqual(act_buil.cost, 3911963265.476649) self.assertEqual(act_buil.hazard_set, 'nil') self.assertEqual(act_buil.hazard_freq_cutoff, 0) self.assertEqual(act_buil.hazard_inten_imp, (1, -2)) self.assertEqual(act_buil.exposures_set, 'nil') self.assertEqual(act_buil.exp_region_id, 0) self.assertEqual(act_buil.paa_impact, (0.9, 0)) self.assertEqual(act_buil.mdd_impact, (0.9, -0.1)) self.assertEqual(act_buil.imp_fun_map, 'nil') self.assertEqual(act_buil.risk_transf_attach, 0) self.assertEqual(act_buil.risk_transf_cover, 0) name = 'vegetation management' act_buil = meas.get_measure(name=name)[0] self.assertEqual(act_buil.name, name) self.assertEqual(act_buil.haz_type, 'TC') self.assertTrue( np.array_equal(act_buil.color_rgb, np.array([0.76, 0.84, 0.60]))) self.assertEqual(act_buil.cost, 63968125.00687534) self.assertEqual(act_buil.hazard_set, 'nil') self.assertEqual(act_buil.hazard_freq_cutoff, 0) self.assertEqual(act_buil.hazard_inten_imp, (1, -1)) self.assertEqual(act_buil.exposures_set, 'nil') self.assertEqual(act_buil.exp_region_id, 0) self.assertEqual(act_buil.paa_impact, (0.8, 0)) self.assertEqual(act_buil.mdd_impact, (1, 0)) self.assertEqual(act_buil.imp_fun_map, 'nil') self.assertEqual(act_buil.risk_transf_attach, 0) self.assertEqual(act_buil.risk_transf_cover, 0) self.assertEqual( meas.get_measure(name='enforce building code')[0].imp_fun_map, '1to3') self.assertEqual(meas.tag.file_name, ENT_TEMPLATE_XLS) self.assertEqual(meas.tag.description, '')
def test_def_color(self): """Test default grey scale used when no color set""" meas = MeasureSet() act_1 = Measure() act_1.name = 'LaLa' act_1.haz_type = 'FL' meas.append(act_1) act_2 = Measure() act_2.name = 'LoLo' act_2.haz_type = 'FL' meas.append(act_2) meas.check() self.assertTrue(np.array_equal(meas.get_measure('FL', 'LaLa').color_rgb, np.ones(4))) self.assertTrue(np.allclose(meas.get_measure('FL', 'LoLo').color_rgb, np.array([0., 0., 0., 1.0])))
def test_remove_measure_pass(self): """Test remove_measure removes Measure of MeasureSet correcty.""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'FL' meas.append(act_1) meas.remove_measure(name='Mangrove') self.assertEqual(0, meas.size())
def read_mat(self, file_name, description=''): """Read MATLAB file of climada. Parameters: file_name (str, optional): file name(s) or folder name containing the files to read description (str or list(str), optional): one description of the data or a description of each data file Raises: ValueError """ self.exposures = Exposures() self.exposures.read_mat(file_name) self.disc_rates = DiscRates() self.disc_rates.read_mat(file_name, description) self.impact_funcs = ImpactFuncSet() self.impact_funcs.read_mat(file_name, description) self.measures = MeasureSet() self.measures.read_mat(file_name, description)
def __init__(self, exposures=None, disc_rates=None, impact_func_set=None, measure_set=None): """ Initialize entity Parameters ---------- exposures : climada.entity.Exposures, optional Exposures of the entity. The default is None (empty Exposures()). disc_rates : climada.entity.DiscRates, optional Disc rates of the entity. The default is None (empty DiscRates()). impact_func_set : climada.entity.ImpactFuncSet, optional The impact function set. The default is None (empty ImpactFuncSet()). measure_set : climada.entity.Measures, optional The measures. The default is None (empty MeasuresSet(). """ self.exposures = Exposures() if exposures is None else exposures self.disc_rates = DiscRates() if disc_rates is None else disc_rates self.impact_funcs = ImpactFuncSet( ) if impact_func_set is None else impact_func_set self.measures = MeasureSet() if measure_set is None else measure_set
def test_remove_wrong_error(self): """Test error is raised when invalid inputs.""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'FL' meas.append(act_1) with self.assertLogs('climada.entity.measures.measure_set', level='INFO') as cm: meas.remove_measure(name='Seawall') self.assertIn('No Measure with name Seawall.', cm.output[0])
def test_attributes_all(self): """All attributes are defined""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Seawall' self.assertTrue(hasattr(meas, 'tag')) self.assertTrue(hasattr(meas, '_data')) self.assertTrue(hasattr(act_1, 'name')) self.assertTrue(hasattr(act_1, 'color_rgb')) self.assertTrue(hasattr(act_1, 'cost')) self.assertTrue(hasattr(act_1, 'hazard_freq_cutoff')) self.assertTrue(hasattr(act_1, 'hazard_inten_imp')) self.assertTrue(hasattr(act_1, 'mdd_impact')) self.assertTrue(hasattr(act_1, 'paa_impact')) self.assertTrue(hasattr(act_1, 'risk_transf_attach')) self.assertTrue(hasattr(act_1, 'risk_transf_cover'))
def test_check_name_fail(self): """Wrong measures definition""" meas = MeasureSet() act_1 = Measure() act_1.name = 'LaLa' act_1.haz_type = 'FL' meas._data['FL'] = dict() meas._data['FL']['LoLo'] = act_1 with self.assertRaises(ValueError) as cm: meas.check() self.assertIn('Wrong Measure.name: LoLo != LaLa', str(cm.exception))
def test_add_wrong_error(self): """Test error is raised when wrong ImpactFunc provided.""" meas = MeasureSet() act_1 = Measure() with self.assertLogs('climada.entity.measures.measure_set', level='WARNING') as cm: meas.append(act_1) self.assertIn("Input Measure's hazard type not set.", cm.output[0]) with self.assertLogs('climada.entity.measures.measure_set', level='ERROR') as cm: with self.assertRaises(ValueError): meas.append(45) self.assertIn("Input value is not of type Measure.", cm.output[0])
def test_check_name_fail(self): """Wrong measures definition""" meas = MeasureSet() act_1 = Measure() act_1.name = 'LaLa' act_1.haz_type = 'FL' meas._data['FL'] = dict() meas._data['FL']['LoLo'] = act_1 with self.assertLogs('climada.entity.measures.measure_set', level='ERROR') as cm: with self.assertRaises(ValueError): meas.check() self.assertIn('Wrong Measure.name: LoLo != LaLa', cm.output[0])
def test_check_wrongMDD_fail(self): """Wrong measures definition""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'DR' act_1.color_rgb = np.array([1, 1, 1]) act_1.mdd_impact = (1) act_1.paa_impact = (1, 2) act_1.hazard_inten_imp = (1, 2) meas.append(act_1) with self.assertRaises(ValueError) as cm: meas.check() self.assertIn('Measure.mdd_impact has wrong size.', str(cm.exception))
def test_demo_file(self): """ Read demo excel file""" meas = MeasureSet() description = 'One single file.' meas.read_excel(ENT_DEMO_TODAY, description) # Check results n_meas = 4 self.assertEqual(meas.size(), n_meas) act_man = meas.get_measure(name='Mangroves')[0] self.assertEqual(act_man.name, 'Mangroves') self.assertEqual(type(act_man.color_rgb), np.ndarray) self.assertEqual(len(act_man.color_rgb), 3) self.assertEqual(act_man.color_rgb[0], 0.1529) self.assertEqual(act_man.color_rgb[1], 0.251) self.assertEqual(act_man.color_rgb[2], 0.5451) self.assertEqual(act_man.cost, 1311768360.8515418) self.assertEqual(act_man.hazard_freq_cutoff, 0) self.assertEqual(act_man.hazard_inten_imp, (1, -4)) self.assertEqual(act_man.mdd_impact, (1, 0)) self.assertEqual(act_man.paa_impact, (1, 0)) self.assertEqual(act_man.risk_transf_attach, 0) self.assertEqual(act_man.risk_transf_cover, 0) act_buil = meas.get_measure(name='Building code')[0] self.assertEqual(act_buil.name, 'Building code') self.assertEqual(type(act_buil.color_rgb), np.ndarray) self.assertEqual(len(act_buil.color_rgb), 3) self.assertEqual(act_buil.color_rgb[0], 0.6980) self.assertEqual(act_buil.color_rgb[1], 0.8745) self.assertEqual(act_buil.color_rgb[2], 0.9333) self.assertEqual(act_buil.cost, 9200000000.0000000) self.assertEqual(act_buil.hazard_freq_cutoff, 0) self.assertEqual(act_buil.hazard_inten_imp, (1, 0)) self.assertEqual(act_buil.mdd_impact, (0.75, 0)) self.assertEqual(act_buil.paa_impact, (1, 0)) self.assertEqual(act_buil.risk_transf_attach, 0) self.assertEqual(act_buil.risk_transf_cover, 0) self.assertEqual(meas.tag.file_name, ENT_DEMO_TODAY) self.assertEqual(meas.tag.description, description)
def test_check_wrongPAA_fail(self): """Wrong measures definition""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'TC' act_1.color_rgb = np.array([1, 1, 1]) act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2, 3, 4) act_1.hazard_inten_imp = (1, 2) meas.append(act_1) with self.assertLogs('climada.util.checker', level='ERROR') as cm: with self.assertRaises(ValueError): meas.check() self.assertIn('Invalid Measure.paa_impact size: 2 != 4.', cm.output[0])
def test_check_wronginten_fail(self): """Wrong intensity definition""" meas = MeasureSet() act_1 = Measure() act_1.haz_type = 'TC' act_1.name = 'Mangrove' act_1.hazard_inten_imp = (1, 2, 3) act_1.color_rgb = np.array([1, 1, 1]) act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2) meas.append(act_1) with self.assertRaises(ValueError) as cm: meas.check() self.assertIn('Invalid Measure.hazard_inten_imp size: 2 != 3.', str(cm.exception))
def test_check_wrongColor_fail(self): """Wrong measures definition""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'DR' act_1.color_rgb = (1, 2) act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2) act_1.hazard_inten_imp = (1, 2) meas.append(act_1) with self.assertRaises(ValueError) as cm: meas.check() self.assertIn('Invalid Measure.color_rgb size: 2 not in [3, 4].', str(cm.exception))
def from_mat(cls, file_name, description=''): """Read MATLAB file of climada. Parameters ---------- file_name : str, optional file name(s) or folder name containing the files to read description : str or list(str), optional one description of the data or a description of each data file Returns ------- ent : climada.entity.Entity The entity from matlab file """ return cls(exposures=Exposures.from_mat(file_name), disc_rates=DiscRates.from_mat(file_name, description), impact_func_set=ImpactFuncSet.from_mat( file_name, description), measure_set=MeasureSet.from_mat(file_name, description))
def test_write_read_file(self): """ Write and read excel file""" act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'TC' act_1.color_rgb = np.array([1, 1, 1]) act_1.cost = 10 act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2) act_1.hazard_inten_imp = (1, 2) act_1.risk_transf_cover = 500 act_11 = Measure() act_11.name = 'Something' act_11.haz_type = 'TC' act_11.color_rgb = np.array([1, 1, 1]) act_11.mdd_impact = (1, 2) act_11.paa_impact = (1, 3) act_11.hazard_inten_imp = (1, 2) act_11.exp_region_id = 2 act_2 = Measure() act_2.name = 'Anything' act_2.haz_type = 'FL' act_2.color_rgb = np.array([1, 1, 1]) act_2.mdd_impact = (1, 2) act_2.paa_impact = (1, 2) act_2.hazard_inten_imp = (1, 2) act_2.hazard_freq_cutoff = 30 act_2.imp_fun_map = 'map' meas_set = MeasureSet() meas_set.append(act_1) meas_set.append(act_11) meas_set.append(act_2) file_name = os.path.join(DATA_DIR, 'test_meas.xlsx') meas_set.write_excel(file_name) meas_read = MeasureSet() meas_read.read_excel(file_name, 'test') self.assertEqual(meas_read.tag.file_name, file_name) self.assertEqual(meas_read.tag.description, 'test') meas_list = meas_read.get_measure('TC') meas_list.extend(meas_read.get_measure('FL')) for meas in meas_list: if meas.name == 'Mangrove': meas_ref = act_1 elif meas.name == 'Something': meas_ref = act_11 elif meas.name == 'Anything': meas_ref = act_2 self.assertEqual(meas_ref.name, meas.name) self.assertEqual(meas_ref.haz_type, meas.haz_type) self.assertEqual(meas_ref.cost, meas.cost) self.assertEqual(meas_ref.hazard_set, meas.hazard_set) self.assertEqual(meas_ref.hazard_freq_cutoff, meas.hazard_freq_cutoff) self.assertEqual(meas_ref.exposures_set, meas.exposures_set) self.assertEqual(meas_ref.exp_region_id, meas.exp_region_id) self.assertTrue(np.array_equal(meas_ref.color_rgb, meas.color_rgb)) self.assertEqual(meas_ref.mdd_impact, meas.mdd_impact) self.assertEqual(meas_ref.paa_impact, meas.paa_impact) self.assertEqual(meas_ref.hazard_inten_imp, meas.hazard_inten_imp) self.assertEqual(meas_ref.imp_fun_map, meas.imp_fun_map) self.assertEqual(meas_ref.risk_transf_attach, meas.risk_transf_attach) self.assertEqual(meas_ref.risk_transf_cover, meas.risk_transf_cover)
def test_extend_different_extend(self): """Extend MeasureSet with same and new values. The actions with repeated name are overwritten.""" act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'TC' act_1.color_rgb = np.array([1, 1, 1]) act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2) act_1.hazard_inten_imp = (1, 2) act_11 = Measure() act_11.name = 'Mangrove' act_11.haz_type = 'TC' act_11.color_rgb = np.array([1, 1, 1]) act_11.mdd_impact = (1, 2) act_11.paa_impact = (1, 3) act_11.hazard_inten_imp = (1, 2) act_2 = Measure() act_2.name = 'Anything' act_2.haz_type = 'TC' act_2.color_rgb = np.array([1, 1, 1]) act_2.mdd_impact = (1, 2) act_2.paa_impact = (1, 2) act_2.hazard_inten_imp = (1, 2) meas = MeasureSet() meas.append(act_1) meas_add = MeasureSet() meas_add.append(act_11) meas_add.append(act_2) meas.extend(meas_add) meas.check() self.assertEqual(meas.size(), 2) self.assertEqual(meas.get_names(), {'TC': ['Mangrove', 'Anything']}) self.assertEqual( meas.get_measure(name=act_1.name)[0].paa_impact, act_11.paa_impact)
def test_extend_equal_same(self): """Extend the same MeasureSet. The inital MeasureSet is obtained.""" meas = MeasureSet() meas_add = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'TC' act_1.color_rgb = np.array([1, 1, 1]) act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2) act_1.hazard_inten_imp = (1, 2) meas.append(act_1) meas_add.append(act_1) meas.extend(meas_add) meas.check() self.assertEqual(meas.size(), 1) self.assertEqual(meas.get_names(), {'TC': ['Mangrove']})
def test_num_measures_pass(self): """Test num_measures function.""" meas = MeasureSet() self.assertEqual(0, meas.size()) act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'FL' meas.append(act_1) self.assertEqual(1, meas.size()) meas.append(act_1) self.assertEqual(1, meas.size()) act_2 = Measure() act_2.name = 'Seawall' act_2.haz_type = 'FL' meas.append(act_2) self.assertEqual(2, meas.size())
def test_get_names_pass(self): """Test get_names function.""" meas = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'FL' meas.append(act_1) self.assertEqual(1, len(meas.get_names())) self.assertEqual({'FL': ['Mangrove']}, meas.get_names()) act_2 = Measure() act_2.name = 'Seawall' act_2.haz_type = 'FL' meas.append(act_2) self.assertEqual(2, len(meas.get_names('FL'))) self.assertIn('Mangrove', meas.get_names('FL')) self.assertIn('Seawall', meas.get_names('FL'))
def test_extend_to_empty_same(self): """Extend MeasureSet to empty one.""" meas = MeasureSet() meas_add = MeasureSet() act_1 = Measure() act_1.name = 'Mangrove' act_1.haz_type = 'TC' act_1.color_rgb = np.array([1, 1, 1]) act_1.mdd_impact = (1, 2) act_1.paa_impact = (1, 2) act_1.hazard_inten_imp = (1, 2) meas_add.append(act_1) meas.extend(meas_add) meas.check() self.assertEqual(meas.size(), 1) self.assertEqual(meas.get_names(), {'TC': ['Mangrove']})