commit a6ac690fe36b841cd72f4890cf9438a7dec8920e
parent 3628eeb35b61c226acab8c11e98f730378bf3c30
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Fri, 15 May 2026 23:39:59 +0200
test(qgis): add fake raster layer harness
Diffstat:
1 file changed, 46 insertions(+), 0 deletions(-)
diff --git a/test/test_core.py b/test/test_core.py
@@ -752,6 +752,30 @@ class PluginTests(unittest.TestCase):
self.x = x
self.y = y
+ class FakeRasterDataProvider:
+ def __init__(self, samples=None):
+ self.samples = dict(samples or {})
+ self.calls = []
+
+ def sample(self, point, band):
+ self.calls.append((point, band))
+ return self.samples.get((point.x, point.y, band), (math.nan, False))
+
+ class FakeRasterLayer:
+ def __init__(self, samples=None, name="DEM", crs=None):
+ self._provider = FakeRasterDataProvider(samples)
+ self._name = name
+ self._crs = crs or FakeCoordinateReferenceSystem("EPSG:3857")
+
+ def crs(self):
+ return self._crs
+
+ def dataProvider(self):
+ return self._provider
+
+ def name(self):
+ return self._name
+
class FakeLayerGroup:
def __init__(self, name):
self.name = name
@@ -827,6 +851,7 @@ class PluginTests(unittest.TestCase):
qgis_core.QgsFields = FakeFields
qgis_core.QgsGeometry = FakeGeometry
qgis_core.QgsVectorFileWriter = FakeVectorFileWriter
+ qgis_core.QgsRasterLayer = FakeRasterLayer
qgis_gui = types.ModuleType("qgis.gui")
qgis_gui.QgsMapLayerComboBox = FakeMapLayerComboBox
@@ -844,6 +869,9 @@ class PluginTests(unittest.TestCase):
sys.modules.pop("tem_loader.tem_loader", None)
module = importlib.import_module("tem_loader.tem_loader")
+ module.FakeRasterLayer = FakeRasterLayer
+ module.FakeRasterDataProvider = FakeRasterDataProvider
+
return module, FakeFileDialog, FakeMessageBox
def test_run_continues_after_failed_file_and_shows_filename(self):
@@ -1088,6 +1116,24 @@ class PluginTests(unittest.TestCase):
raster_layer.crs.assert_called_once_with()
raster_layer.dataProvider.assert_called_once_with()
+ def test_sample_dem_elevation_works_with_fake_raster_layer(self):
+ module, _, _ = self._import_plugin_module()
+ raster_layer = module.FakeRasterLayer({(1.5, 2.5, 1): (123.5, True)})
+
+ elevation = module._sample_dem_elevation(
+ raster_layer,
+ module.QgsCoordinateReferenceSystem("EPSG:25832"),
+ module.QgsProject.instance(),
+ 1.5,
+ 2.5,
+ )
+
+ self.assertEqual(elevation, 123.5)
+ self.assertEqual(len(raster_layer.dataProvider().calls), 1)
+ point, band = raster_layer.dataProvider().calls[0]
+ self.assertEqual((point.x, point.y), (1.5, 2.5))
+ self.assertEqual(band, 1)
+
def test_sample_dem_elevation_warns_for_invalid_sample(self):
module, _, _ = self._import_plugin_module()
provider = Mock()