diff --git a/tests/test_csm.py b/tests/test_csm.py index c66d961613da0c386651a65e4a269c98d50a00e2..94fb524ec5daeb83b5b779625c31e40932892f3a 100644 --- a/tests/test_csm.py +++ b/tests/test_csm.py @@ -6,6 +6,14 @@ from plio.io.io_gdal import GeoDataset import csmapi from knoten import csm +@pytest.fixture +def mock_dem(): + mock_dem = mock.MagicMock(spec_set=GeoDataset) + mock_dem.no_data_value = 10 + mock_dem.read_array.return_value = [[100]] + mock_dem.latlon_to_pixel.return_value = (0.5,0.5) + return mock_dem + @pytest.fixture def mock_sensor(): mock_sensor = mock.MagicMock(spec=csmapi.RasterGM) @@ -28,16 +36,12 @@ def test_generate_ground_point_with_imagecoord(mock_sensor, pt): mock_sensor.imageToGround.assert_called_once_with(pt, height) @mock.patch.object(csm, 'get_radii', return_value=(10,10)) -@mock.patch('pyproj.transformer.Transformer.transform', return_value=(0,0,0)) @mock.patch.object(csm, '_compute_intersection_distance', return_value=0) -def test_generate_ground_point_with_dtm(mock_sensor, pt, _): - # Passing the mock_dem fixture fails for some reason. The - # isinstance(obj, GeoDataset) check fails, causing the singldispath - # to never dispatch to the func under test. - mock_dem = mock.MagicMock(spec_set=GeoDataset) - mock_dem.no_data_value = 10 - mock_dem.read_array.return_value = [[100]] - mock_dem.latlon_to_pixel.return_value = (0.5,0.5) +@mock.patch('pyproj.transformer.Transformer.transform', return_value=(0,0,0)) +def test_generate_ground_point_with_dtm(mock_get_radii, + mock_compute_intsesection, + mock_pyproj_transformer, + mock_sensor, pt, mock_dem): csm.generate_ground_point(mock_dem, pt, mock_sensor) # This call is mocked so that the intitial intersection and # one iteration should occur. Therefore, the call count @@ -48,16 +52,10 @@ from collections import namedtuple @mock.patch.object(csm, 'get_radii', return_value=(10,10)) @mock.patch('pyproj.transformer.Transformer.transform', return_value=(0,0,0)) -def test_generate_ground_point_with_dtm_ndv(mock_sensor, pt): - # Passing the mock_dem fixture fails for some reason. The - # isinstance(obj, GeoDataset) check fails, causing the singldispath - # to never dispatch to the func under test. - mock_dem = mock.MagicMock(spec_set=GeoDataset) - - # If the no data value equals the height, this should raise a value error +def test_generate_ground_point_with_dtm_ndv(mock_get_radii, + mock_pyproj_transformer, + mock_sensor, pt, mock_dem): mock_dem.no_data_value = 100 - mock_dem.read_array.return_value = [[100]] - mock_dem.latlon_to_pixel.return_value = (0.5,0.5) with pytest.raises(ValueError): csm.generate_ground_point(mock_dem, pt, mock_sensor)