Skip to content

Commit

Permalink
Add tests for basic cesium tiles provider properties
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jul 10, 2023
1 parent e4bebe4 commit 10cdd43
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/core/tiledmesh/qgscesiumtilesdataprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,7 @@ bool QgsCesiumTilesDataProvider::isValid() const
{
QGIS_PROTECT_QOBJECT_THREAD_ACCESS

// TODO
return true;
return mIsValid;
}

QString QgsCesiumTilesDataProvider::name() const
Expand Down
1 change: 1 addition & 0 deletions tests/src/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ ADD_PYTHON_TEST(PyQgsBookmarkManager test_qgsbookmarkmanager.py)
ADD_PYTHON_TEST(PyQgsBookmarkModel test_qgsbookmarkmodel.py)
ADD_PYTHON_TEST(PyQgsBox3d test_qgsbox3d.py)
ADD_PYTHON_TEST(PyQgsCategorizedSymbolRenderer test_qgscategorizedsymbolrenderer.py)
ADD_PYTHON_TEST(PyQgsCesiumTiledMeshLayer test_qgscesiumtiledmeshlayer.py)
ADD_PYTHON_TEST(PyQgsCesiumUtils test_qgscesiumutils.py)
ADD_PYTHON_TEST(PyQgsCheckableComboBox test_qgscheckablecombobox.py)
ADD_PYTHON_TEST(PyQgsClassificationMethod test_qgsclassificationmethod.py)
Expand Down
84 changes: 84 additions & 0 deletions tests/src/python/test_qgscesiumtiledmeshlayer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
"""QGIS Unit tests for QgsCesiumTiledMeshLayer
.. 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.
"""
__author__ = 'Nyall Dawson'
__date__ = '27/06/2023'
__copyright__ = 'Copyright 2023, The QGIS Project'

import os
import tempfile

import qgis # NOQA
from qgis.core import (
QgsTiledMeshLayer,
QgsCoordinateReferenceSystem
)
from qgis.testing import start_app, unittest
from utilities import unitTestDataPath

start_app()


class TestQgsCesiumTiledMeshLayer(unittest.TestCase):

def test_invalid_source(self):
layer = QgsTiledMeshLayer('/nope/tileset.json', 'my layer',
'cesiumtiles')
self.assertFalse(layer.dataProvider().isValid())

def test_valid_source(self):
with tempfile.TemporaryDirectory() as temp_dir:
tmp_file = os.path.join(temp_dir, 'tileset.json')
with open(tmp_file, 'wt', encoding='utf-8') as f:
f.write("""
{
"asset": {
"version": "1.1",
"tilesetVersion": "e575c6f1"
},
"geometricError": 100,
"root": {
"boundingVolume": {
"region": [
-1.3197209591796106,
0.6988424218,
-1.3196390408203893,
0.6989055782,
1.2,
67.00999999999999
]
},
"geometricError": 100,
"refine": "ADD",
"children": []
}
}""")

layer = QgsTiledMeshLayer(tmp_file, 'my layer',
'cesiumtiles')
self.assertTrue(layer.dataProvider().isValid())

self.assertEqual(layer.dataProvider().crs(),
QgsCoordinateReferenceSystem('EPSG:4979'))

self.assertAlmostEqual(layer.dataProvider().extent().xMinimum(),
-75.61444109, 3)
self.assertAlmostEqual(layer.dataProvider().extent().xMaximum(),
-75.60974751, 3)
self.assertAlmostEqual(layer.dataProvider().extent().yMinimum(),
40.04072131, 3)
self.assertAlmostEqual(layer.dataProvider().extent().yMaximum(),
40.044339909, 3)

# check that version, tileset version, and z range are in html metadata
self.assertIn('1.1', layer.dataProvider().htmlMetadata())
self.assertIn('e575c6f1', layer.dataProvider().htmlMetadata())
self.assertIn('1.2 - 67.01', layer.dataProvider().htmlMetadata())


if __name__ == '__main__':
unittest.main()

0 comments on commit 10cdd43

Please sign in to comment.