def test_write_map_data_to_db_with_loss_map(self): """ Writing hazard loss data works. """ expected_loss_data = [ ([-118.229726, 34.050622], 16.04934554846202), ([-118.241243, 34.061557], 629.323267954), ([-118.245388, 34.055984], 245.9928520658)] def coords(idx): """Access the point coordinates.""" return tuple(expected_loss_data[idx][0]) def value(idx): """Access the loss value.""" return view_utils.round_float(expected_loss_data[idx][1]) loss_map = self.setup_output(output_type="loss_map") self.job_to_tear_down = loss_map.oq_job config = { "key": "%s" % loss_map.id, "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss"} write_map_data_to_db(config) self.assertEqual(0, len(loss_map.hazardmapdata_set.all())) self.assertEqual(3, len(loss_map.lossmapdata_set.all())) for idx, loss in enumerate(loss_map.lossmapdata_set.all()): self.assertEqual(coords(idx), loss.location.coords) self.assertEqual(value(idx), view_utils.round_float(loss.value))
def test_write_map_data_to_db_with_hazard_map(self): """ Writing hazard map data works. """ expected_hazard_data = [([-122.1, 38.0], 1.1905288226), ([-122.0, 37.5], 1.19244541041), ([-121.8, 37.9], 1.23518683436)] def coords(idx): """Access the point coordinates.""" return tuple(expected_hazard_data[idx][0]) def value(idx): """Access the hazard value.""" return view_utils.round_float(expected_hazard_data[idx][1]) hazard_map = self.setup_output(output_type="hazard_map") self.job_to_tear_down = hazard_map.oq_job config = { "key": "%s" % hazard_map.id, "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard" } write_map_data_to_db(config) self.assertEqual(0, len(hazard_map.lossmapdata_set.all())) self.assertEqual(3, len(hazard_map.hazardmapdata_set.all())) # don't depend on sort order all_hazard = sorted([(h.location.coords, h.value) for h in hazard_map.hazardmapdata_set.all()]) for idx, hazard in enumerate(all_hazard): self.assertEqual(coords(idx), hazard[0]) self.assertEqual(value(idx), view_utils.round_float(hazard[1]))
def test_write_map_data_to_db_with_hazard_map(self): """ Writing hazard map data works. """ expected_hazard_data = [ ([-121.8, 37.9], 1.23518683436), ([-122.0, 37.5], 1.19244541041), ([-122.1, 38.0], 1.1905288226)] def coords(idx): """Access the point coordinates.""" return tuple(expected_hazard_data[idx][0]) def value(idx): """Access the hazard value.""" return view_utils.round_float(expected_hazard_data[idx][1]) hazard_map = self.setup_output(output_type="hazard_map") self.job_to_tear_down = hazard_map.oq_job config = { "key": "%s" % hazard_map.id, "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard"} write_map_data_to_db(config) self.assertEqual(0, len(hazard_map.lossmapdata_set.all())) self.assertEqual(3, len(hazard_map.hazardmapdata_set.all())) for idx, hazard in enumerate(hazard_map.hazardmapdata_set.all()): self.assertEqual(coords(idx), hazard.location.coords) self.assertEqual(value(idx), view_utils.round_float(hazard.value))
def test_write_map_data_to_db_with_loss_map(self): """ Writing hazard loss data works. """ expected_loss_data = [([-118.229726, 34.050622], 16.04934554846202), ([-118.241243, 34.061557], 629.323267954), ([-118.245388, 34.055984], 245.9928520658)] def coords(idx): """Access the point coordinates.""" return tuple(expected_loss_data[idx][0]) def value(idx): """Access the loss value.""" return view_utils.round_float(expected_loss_data[idx][1]) loss_map = self.setup_output(output_type="loss_map") self.job_to_tear_down = loss_map.oq_job config = { "key": "%s" % loss_map.id, "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss" } write_map_data_to_db(config) self.assertEqual(0, len(loss_map.hazardmapdata_set.all())) self.assertEqual(3, len(loss_map.lossmapdata_set.all())) for idx, loss in enumerate(loss_map.lossmapdata_set.all()): self.assertEqual(coords(idx), loss.location.coords) self.assertEqual(value(idx), view_utils.round_float(loss.value))
def test_write_map_data_to_db_with_invalid_output_key(self): """ Not being able to find the output record results in an ObjectDoesNotExist error. """ config = { "key": "-111", "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss"} try: write_map_data_to_db(config) except ObjectDoesNotExist, e: self.assertEqual( "Output matching query does not exist.", e.args[0])
def test_write_map_data_to_db_with_hazard_data(self): """ extract_hazardmap_data() is called for hazard maps. """ config = { "key": "78", "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard"} with mock.patch("bin.map_transformer.extract_hazardmap_data") as mf: mf.return_value = [] write_map_data_to_db(config) self.assertEqual(1, mf.call_count) args, _ = mf.call_args self.assertEqual((config,), args)
def test_write_map_data_to_db_results_with_hazard_map(self): """ The write_map_data_to_db() return values are correct for hazard maps. """ expected_hazard_data = [ ([-121.8, 37.9], 1.23518683436), ([-122.0, 37.5], 1.19244541041), ([-122.1, 38.0], 1.1905288226)] def coords(idx): """Access the point coordinates.""" return tuple(expected_hazard_data[idx][0]) def value(idx): """Access the hazard value.""" return view_utils.round_float(expected_hazard_data[idx][1]) hazard_map = self.setup_output(output_type="hazard_map") self.job_to_tear_down = hazard_map.oq_job config = { "key": "%s" % hazard_map.id, "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard"} db_key, minimum, maximum = write_map_data_to_db(config) self.assertEqual(config["key"], db_key) self.assertEqual( min(value(idx) for idx in range(len(expected_hazard_data))), view_utils.round_float(minimum)) self.assertEqual( max(value(idx) for idx in range(len(expected_hazard_data))), view_utils.round_float(maximum))
def test_write_map_data_to_db_results_with_hazard_map(self): """ The write_map_data_to_db() return values are correct for hazard maps. """ expected_hazard_data = [([-121.8, 37.9], 1.23518683436), ([-122.0, 37.5], 1.19244541041), ([-122.1, 38.0], 1.1905288226)] def coords(idx): """Access the point coordinates.""" return tuple(expected_hazard_data[idx][0]) def value(idx): """Access the hazard value.""" return view_utils.round_float(expected_hazard_data[idx][1]) hazard_map = self.setup_output(output_type="hazard_map") self.job_to_tear_down = hazard_map.oq_job config = { "key": "%s" % hazard_map.id, "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard" } db_key, minimum, maximum = write_map_data_to_db(config) self.assertEqual(config["key"], db_key) self.assertEqual( min(value(idx) for idx in range(len(expected_hazard_data))), view_utils.round_float(minimum)) self.assertEqual( max(value(idx) for idx in range(len(expected_hazard_data))), view_utils.round_float(maximum))
def test_write_map_data_to_db_with_loss_hazard_mismatch(self): """ Writing loss data for a hazard map results in an AssertionError. """ hazard_map = self.setup_output() self.job_to_tear_down = hazard_map.oq_job config = { "key": "%s" % hazard_map.id, "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss"} try: write_map_data_to_db(config) except AssertionError, e: self.assertEqual( "Invalid map type ('hazard_map') for the given data ('loss')", e.args[0])
def test_write_map_data_to_db_results_with_loss_map(self): """ The write_map_data_to_db() return values are correct for loss maps. """ expected_loss_data = [ ([-118.229726, 34.050622], 16.04934554846202), ([-118.241243, 34.061557], 629.323267954), ([-118.245388, 34.055984], 245.9928520658)] def coords(idx): """Access the point coordinates.""" return tuple(expected_loss_data[idx][0]) def value(idx): """Access the loss value.""" return view_utils.round_float(expected_loss_data[idx][1]) loss_map = self.setup_output(output_type="loss_map") self.job_to_tear_down = loss_map.oq_job config = { "key": "%s" % loss_map.id, "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss"} db_key, minimum, maximum = write_map_data_to_db(config) self.assertEqual(config["key"], db_key) self.assertEqual( min(value(idx) for idx in range(len(expected_loss_data))), view_utils.round_float(minimum)) self.assertEqual( max(value(idx) for idx in range(len(expected_loss_data))), view_utils.round_float(maximum))
def test_write_map_data_to_db_results_with_loss_map(self): """ The write_map_data_to_db() return values are correct for loss maps. """ expected_loss_data = [([-118.229726, 34.050622], 16.04934554846202), ([-118.241243, 34.061557], 629.323267954), ([-118.245388, 34.055984], 245.9928520658)] def coords(idx): """Access the point coordinates.""" return tuple(expected_loss_data[idx][0]) def value(idx): """Access the loss value.""" return view_utils.round_float(expected_loss_data[idx][1]) loss_map = self.setup_output(output_type="loss_map") self.job_to_tear_down = loss_map.oq_job config = { "key": "%s" % loss_map.id, "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss" } db_key, minimum, maximum = write_map_data_to_db(config) self.assertEqual(config["key"], db_key) self.assertEqual( min(value(idx) for idx in range(len(expected_loss_data))), view_utils.round_float(minimum)) self.assertEqual( max(value(idx) for idx in range(len(expected_loss_data))), view_utils.round_float(maximum))
def test_write_map_data_to_db_with_invalid_output_key(self): """ Not being able to find the output record results in an ObjectDoesNotExist error. """ config = { "key": "-111", "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss" } try: write_map_data_to_db(config) except ObjectDoesNotExist, e: self.assertEqual("Output matching query does not exist.", e.args[0])
def test_write_map_data_to_db_with_hazard_loss_mismatch(self): """ Writing hazard data for a loss map results in an AssertionError. """ loss_map = self.setup_output(output_type="loss_map") self.job_to_tear_down = loss_map.oq_job config = { "key": "%s" % loss_map.id, "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard"} try: write_map_data_to_db(config) except AssertionError, e: self.assertEqual( "Invalid map type ('loss_map') for the given data ('hazard')", e.args[0])
def test_write_map_data_to_db_with_loss_data(self): """ extract_lossmap_data() and calculate_loss_data() are called for loss maps. """ config = { "key": "77", "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss"} with mock.patch("bin.map_transformer.extract_lossmap_data") as eld: with mock.patch("bin.map_transformer.calculate_loss_data") as cld: cld.return_value = eld.return_value = [] write_map_data_to_db(config) self.assertEqual(1, eld.call_count) args, _ = eld.call_args self.assertEqual((config,), args) self.assertEqual(1, cld.call_count) args, _ = cld.call_args self.assertEqual(([],), args)
def test_write_map_data_to_db_with_loss_hazard_mismatch(self): """ Writing loss data for a hazard map results in an AssertionError. """ hazard_map = self.setup_output() self.job_to_tear_down = hazard_map.oq_job config = { "key": "%s" % hazard_map.id, "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss" } try: write_map_data_to_db(config) except AssertionError, e: self.assertEqual( "Invalid map type ('hazard_map') for the given data ('loss')", e.args[0])
def test_write_map_data_to_db_with_hazard_loss_mismatch(self): """ Writing hazard data for a loss map results in an AssertionError. """ loss_map = self.setup_output(output_type="loss_map") self.job_to_tear_down = loss_map.oq_job config = { "key": "%s" % loss_map.id, "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard" } try: write_map_data_to_db(config) except AssertionError, e: self.assertEqual( "Invalid map type ('loss_map') for the given data ('hazard')", e.args[0])
def test_write_map_data_to_db_with_no_loss_data(self): """ In case that no loss map data is found, a (map_db_key, 0.0, 0.0) triple will be returned. """ config = { "key": "77", "layer": "77-lossmap-0.01-quantile-0.25", "output": "tests/77", "path": "tests/data/loss-map-0fcfdbc7.xml", "type": "loss"} with mock.patch("bin.map_transformer.extract_lossmap_data") as eld: with mock.patch("bin.map_transformer.calculate_loss_data") as cld: cld.return_value = eld.return_value = [] results = write_map_data_to_db(config) self.assertEqual((config["key"], 0.0, 0.0), results)
def test_write_map_data_to_db_with_no_hazard_data(self): """ In case that no hazard map data is found, a (map_db_key, 0.0, 0.0) triple will be returned. """ config = { "key": "78", "layer": "78-hazardmap-0.01-quantile-0.25", "output": "tests/78", "path": "tests/data/hazardmap-0.1-quantile-0.25.xml", "type": "hazard"} with mock.patch("bin.map_transformer.extract_hazardmap_data") as mf: mf.return_value = [] results = write_map_data_to_db(config) self.assertEqual((config["key"], 0.0, 0.0), results)