def test_check_wrongMDD_fail(self): """Wrong MDD definition""" imp_fun = ImpactFuncSet() vulner = ImpactFunc() vulner.id = 1 vulner.haz_type = 'TC' vulner.intensity = np.array([1, 2, 3]) vulner.mdd = np.array([1, 2]) vulner.paa = np.array([1, 2, 3]) imp_fun.append(vulner) with self.assertRaises(ValueError) as cm: imp_fun.check() self.assertIn('Invalid ImpactFunc.mdd size: 3 != 2.', str(cm.exception))
def test_check_wrongMDD_fail(self): """Wrong MDD definition""" imp_fun = ImpactFuncSet() vulner = ImpactFunc() vulner.id = 1 vulner.haz_type = 'TC' vulner.intensity = np.array([1, 2, 3]) vulner.mdd = np.array([1, 2]) vulner.paa = np.array([1, 2, 3]) imp_fun.append(vulner) with self.assertLogs('climada.util.checker', level='ERROR') as cm: with self.assertRaises(ValueError): imp_fun.check() self.assertIn('Invalid ImpactFunc.mdd size: 3 != 2.', cm.output[0])
def test_write_read_pass(self): """Write + read excel file""" imp_funcs = ImpactFuncSet() imp_funcs.tag.file_name = 'No file name' imp_funcs.tag.description = 'test writer' imp1 = ImpactFunc() imp1.id = 1 imp1.name = 'code 1' imp1.intensity_unit = 'm/s' imp1.haz_type = 'TC' imp1.intensity = np.arange(100) imp1.mdd = np.arange(100) * 0.5 imp1.paa = np.ones(100) imp_funcs.append(imp1) imp2 = ImpactFunc() imp2.id = 2 imp2.name = 'code 2' imp2.intensity_unit = 'm/s' imp2.haz_type = 'TC' imp2.intensity = np.arange(102) imp2.mdd = np.arange(102) * 0.25 imp2.paa = np.ones(102) imp_funcs.append(imp2) imp3 = ImpactFunc() imp3.id = 1 imp3.name = 'code 1' imp3.intensity_unit = 'm' imp3.haz_type = 'FL' imp3.intensity = np.arange(86) imp3.mdd = np.arange(86) * 0.15 imp3.paa = np.ones(86) imp_funcs.append(imp3) imp4 = ImpactFunc() imp4.id = 15 imp4.name = 'code 15' imp4.intensity_unit = 'K' imp4.haz_type = 'DR' imp4.intensity = np.arange(5) imp4.mdd = np.arange(5) imp4.paa = np.ones(5) imp_funcs.append(imp4) file_name = CONFIG.impact_funcs.test_data.dir().joinpath( 'test_write.xlsx') imp_funcs.write_excel(file_name) imp_res = ImpactFuncSet.from_excel(file_name) self.assertEqual(imp_res.tag.file_name, str(file_name)) self.assertEqual(imp_res.tag.description, '') # first function for fun_haz, fun_dict in imp_res.get_func().items(): for fun_id, fun in fun_dict.items(): if fun_haz == 'TC' and fun_id == 1: ref_fun = imp1 elif fun_haz == 'TC' and fun_id == 2: ref_fun = imp2 elif fun_haz == 'FL' and fun_id == 1: ref_fun = imp3 elif fun_haz == 'DR' and fun_id == 15: ref_fun = imp4 else: self.assertEqual(1, 0) self.assertEqual(ref_fun.haz_type, fun.haz_type) self.assertEqual(ref_fun.id, fun.id) self.assertEqual(ref_fun.name, fun.name) self.assertEqual(ref_fun.intensity_unit, fun.intensity_unit) self.assertTrue(np.allclose(ref_fun.intensity, fun.intensity)) self.assertTrue(np.allclose(ref_fun.mdd, fun.mdd)) self.assertTrue(np.allclose(ref_fun.paa, fun.paa))