diff --git a/python/testing/__init__.py b/python/testing/__init__.py index 800a7fda454..f7608a27518 100644 --- a/python/testing/__init__.py +++ b/python/testing/__init__.py @@ -305,6 +305,19 @@ class QgisTestCase(unittest.TestCase): return result + @staticmethod + def get_test_data_path(file_path: str) -> Path: + """ + Returns the full path to a file contained within the test data + directory. + """ + from utilities import unitTestDataPath + + return ( + Path(unitTestDataPath()) / + (file_path[1:] if file_path.startswith('/') else file_path) + ) + def assertLayersEqual(self, layer_expected, layer_result, **kwargs): """ :param layer_expected: The first layer to compare diff --git a/tests/src/python/CMakeLists.txt b/tests/src/python/CMakeLists.txt index 51f359d9311..ad77a8f5c02 100644 --- a/tests/src/python/CMakeLists.txt +++ b/tests/src/python/CMakeLists.txt @@ -177,6 +177,7 @@ ADD_PYTHON_TEST(PyQgsMargins test_qgsmargins.py) ADD_PYTHON_TEST(PyQgsMarkerLineSymbolLayer test_qgsmarkerlinesymbollayer.py) ADD_PYTHON_TEST(PyQgsMatrix4x4 test_qgsmatrix4x4.py) ADD_PYTHON_TEST(PyQgsMergedFeatureRenderer test_qgsmergedfeaturerenderer.py) +ADD_PYTHON_TEST(PyQgsMeshLayer test_qgsmeshlayer.py) ADD_PYTHON_TEST(PyQgsMeshLayerElevationProperties test_qgsmeshlayerelevationproperties.py) ADD_PYTHON_TEST(PyQgsMeshLayerRenderer test_qgsmeshlayerrenderer.py) ADD_PYTHON_TEST(PyQgsMessageLog test_qgsmessagelog.py) diff --git a/tests/src/python/test_qgsmeshlayer.py b/tests/src/python/test_qgsmeshlayer.py new file mode 100644 index 00000000000..ac023360fdd --- /dev/null +++ b/tests/src/python/test_qgsmeshlayer.py @@ -0,0 +1,68 @@ +"""QGIS Unit tests for QgsMeshLayer + +.. note:: This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +""" + +from qgis.core import ( + QgsMeshLayer, + QgsMeshDatasetIndex +) +import unittest +from qgis.testing import start_app, QgisTestCase + +start_app() + + +class TestQgsMeshLayer(QgisTestCase): + + def test_dataset_group_metadata(self): + """ + Test datasetGroupMetadata + """ + layer = QgsMeshLayer( + self.get_test_data_path('mesh/netcdf_parent_quantity.nc').as_posix(), + 'mesh', + 'mdal' + ) + self.assertTrue(layer.isValid()) + + self.assertEqual( + layer.datasetGroupMetadata(QgsMeshDatasetIndex(0)).name(), + 'air_temperature_height:10') + self.assertEqual( + layer.datasetGroupMetadata( + QgsMeshDatasetIndex(0)).parentQuantityName(), + 'air_temperature_height') + self.assertEqual( + layer.datasetGroupMetadata(QgsMeshDatasetIndex(1)).name(), + 'air_temperature_height:20') + self.assertEqual( + layer.datasetGroupMetadata( + QgsMeshDatasetIndex(1)).parentQuantityName(), + 'air_temperature_height') + self.assertEqual( + layer.datasetGroupMetadata(QgsMeshDatasetIndex(2)).name(), + 'air_temperature_height:30') + self.assertEqual( + layer.datasetGroupMetadata( + QgsMeshDatasetIndex(2)).parentQuantityName(), + 'air_temperature_height') + self.assertEqual( + layer.datasetGroupMetadata(QgsMeshDatasetIndex(3)).name(), + 'air_temperature_height:5') + self.assertEqual( + layer.datasetGroupMetadata( + QgsMeshDatasetIndex(3)).parentQuantityName(), + 'air_temperature_height') + self.assertFalse( + layer.datasetGroupMetadata(QgsMeshDatasetIndex(4)).name()) + self.assertFalse( + layer.datasetGroupMetadata( + QgsMeshDatasetIndex(4)).parentQuantityName()) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/testdata/mesh/netcdf_parent_quantity.nc b/tests/testdata/mesh/netcdf_parent_quantity.nc new file mode 100644 index 00000000000..1d3a88195ea Binary files /dev/null and b/tests/testdata/mesh/netcdf_parent_quantity.nc differ