commit d93024a366f1e1220826c9dd93be3af367273963
parent 6d63fb4fb8e6febe8a0344507b82e91bd72889c9
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Fri, 15 May 2026 23:45:05 +0200
test(qgis): cover outside dem elevation samples
Diffstat:
| M | test/test_core.py | | | 62 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 62 insertions(+), 0 deletions(-)
diff --git a/test/test_core.py b/test/test_core.py
@@ -1268,6 +1268,68 @@ class PluginTests(unittest.TestCase):
"LINESTRING Z (1.0 2.0 123.0, 1.0 2.0 118.0)",
)
+ def test_adjust_rows_to_dem_warns_and_keeps_original_z_outside_dem(self):
+ module, _, _ = self._import_plugin_module()
+ raster_layer = module.FakeRasterLayer({(1.0, 2.0, 1): (math.nan, False)})
+ points = [
+ {
+ "X": 1.0,
+ "Y": 2.0,
+ "Z": 100.0,
+ "Geometry": "POINT Z (1.0 2.0 100.0)",
+ }
+ ]
+ doi_points = [
+ {
+ "X": 1.0,
+ "Y": 2.0,
+ "Z": 90.0,
+ "DOI": 10.0,
+ "ZDOI": 90.0,
+ "Geometry": "POINT Z (1.0 2.0 90.0)",
+ }
+ ]
+ layers = [
+ {
+ "X": 1.0,
+ "Y": 2.0,
+ "Z": 100.0,
+ "DepthTop": 0.0,
+ "DepthBottom": 5.0,
+ "ZTop": 100.0,
+ "ZMid": 97.5,
+ "ZBottom": 95.0,
+ "Geometry": "LINESTRING Z (1.0 2.0 100.0, 1.0 2.0 95.0)",
+ }
+ ]
+
+ with patch("builtins.print") as print_mock:
+ module._adjust_rows_to_dem(
+ points,
+ doi_points,
+ layers,
+ raster_layer,
+ module.QgsCoordinateReferenceSystem("EPSG:25832"),
+ module.QgsProject.instance(),
+ )
+
+ self.assertEqual(points[0]["Z"], 100.0)
+ self.assertEqual(points[0]["Geometry"], "POINT Z (1.0 2.0 100.0)")
+ self.assertEqual(doi_points[0]["Z"], 90.0)
+ self.assertEqual(doi_points[0]["ZDOI"], 90.0)
+ self.assertEqual(doi_points[0]["Geometry"], "POINT Z (1.0 2.0 90.0)")
+ self.assertEqual(layers[0]["Z"], 100.0)
+ self.assertEqual(layers[0]["ZTop"], 100.0)
+ self.assertEqual(layers[0]["ZMid"], 97.5)
+ self.assertEqual(layers[0]["ZBottom"], 95.0)
+ self.assertEqual(
+ layers[0]["Geometry"],
+ "LINESTRING Z (1.0 2.0 100.0, 1.0 2.0 95.0)",
+ )
+ print_mock.assert_called_once_with(
+ "TEM Loader warning: point (1.0, 2.0) is outside DEM raster DEM"
+ )
+
def test_exec_dialog_supports_exec_and_exec_apis(self):
module, _, _ = self._import_plugin_module()
exec_dialog = Mock()