def test_missing_keys(self): """SWY Validate: assert missing required keys.""" from natcap.invest.seasonal_water_yield import seasonal_water_yield from natcap.invest import validation validation_errors = seasonal_water_yield.validate( {}) # empty args dict. invalid_keys = validation.get_invalid_keys(validation_errors) expected_missing_keys = set(self.base_required_keys) self.assertEqual(invalid_keys, expected_missing_keys)
def test_missing_keys_monthly_alpha_table(self): """SWY Validate: assert missing required keys given monthly alpha.""" from natcap.invest.seasonal_water_yield import seasonal_water_yield from natcap.invest import validation validation_errors = seasonal_water_yield.validate( {'monthly_alpha': True}) invalid_keys = validation.get_invalid_keys(validation_errors) expected_missing_keys = set(self.base_required_keys + ['monthly_alpha_path']) expected_missing_keys.difference_update({'monthly_alpha', 'alpha_m'}) self.assertEqual(invalid_keys, expected_missing_keys)
def test_missing_keys_local_recharge(self): """SWY Validate: assert missing required keys given local recharge.""" from natcap.invest.seasonal_water_yield import seasonal_water_yield from natcap.invest import validation validation_errors = seasonal_water_yield.validate( {'user_defined_local_recharge': True}) invalid_keys = validation.get_invalid_keys(validation_errors) expected_missing_keys = set(self.base_required_keys + ['l_path']) expected_missing_keys.difference_update({ 'user_defined_local_recharge', 'et0_dir', 'precip_dir', 'rain_events_table_path', 'soil_group_path' }) self.assertEqual(invalid_keys, expected_missing_keys)
def test_missing_keys_climate_zones(self): """SWY Validate: assert missing required keys given climate zones.""" from natcap.invest.seasonal_water_yield import seasonal_water_yield from natcap.invest import validation validation_errors = seasonal_water_yield.validate( {'user_defined_climate_zones': True}) invalid_keys = validation.get_invalid_keys(validation_errors) expected_missing_keys = set( self.base_required_keys + ['climate_zone_table_path', 'climate_zone_raster_path']) expected_missing_keys.difference_update( {'user_defined_climate_zones', 'rain_events_table_path'}) self.assertEqual(invalid_keys, expected_missing_keys)
def test_all_inputs_valid(self): """SWY Validate: assert valid inputs have no validation errors.""" from natcap.invest.seasonal_water_yield import seasonal_water_yield args = SeasonalWaterYieldRegressionTests.generate_base_args( self.workspace_dir) args.update({ 'user_defined_climate_zones': False, 'user_defined_local_recharge': False, 'monthly_alpha': False }) # first test with none of the optional params validation_errors = seasonal_water_yield.validate(args) self.assertEqual(validation_errors, []) cz_csv_path = os.path.join(self.workspace_dir, 'cz.csv') make_climate_zone_csv(cz_csv_path) cz_ras_path = os.path.join(args['workspace_dir'], 'dem.tif') make_gradient_raster(cz_ras_path) args['climate_zone_raster_path'] = cz_ras_path args['climate_zone_table_path'] = cz_csv_path args['user_defined_climate_zones'] = True recharge_ras_path = os.path.join(self.workspace_dir, 'L.tif') make_recharge_raster(recharge_ras_path) args['l_path'] = recharge_ras_path args['user_defined_local_recharge'] = True alpha_csv_path = os.path.join(self.workspace_dir, 'monthly_alpha.csv') make_alpha_csv(alpha_csv_path) args['monthly_alpha_path'] = alpha_csv_path args['monthly_alpha'] = True # test with all of the optional params validation_errors = seasonal_water_yield.validate(args) self.assertEqual(validation_errors, [])