Skip to content

Commit bb90dc3

Browse files
committed
Add Z/M test case to the spatialite provider
1 parent d444536 commit bb90dc3

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

tests/src/python/test_provider_spatialite.py

+54-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
QgsFieldConstraints,
2929
QgsVectorLayerUtils,
3030
QgsSettings,
31-
QgsDefaultValue)
31+
QgsDefaultValue,
32+
QgsWkbTypes)
3233

3334
from qgis.testing import start_app, unittest
3435
from utilities import unitTestDataPath
@@ -91,6 +92,33 @@ def setUpClass(cls):
9192
sql += "VALUES (1, 'toto', GeomFromText('POLYGON((0 0,1 0,1 1,0 1,0 0))', 4326))"
9293
cur.execute(sql)
9394

95+
# table with Z dimension geometry
96+
sql = "CREATE TABLE test_z (id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL)"
97+
cur.execute(sql)
98+
sql = "SELECT AddGeometryColumn('test_z', 'geometry', 4326, 'POINT', 'XYZ')"
99+
cur.execute(sql)
100+
sql = "INSERT INTO test_z (id, name, geometry) "
101+
sql += "VALUES (1, 'toto', GeomFromText('POINT Z (0 0 1)', 4326))"
102+
cur.execute(sql)
103+
104+
# table with M value geometry
105+
sql = "CREATE TABLE test_m (id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL)"
106+
cur.execute(sql)
107+
sql = "SELECT AddGeometryColumn('test_m', 'geometry', 4326, 'POINT', 'XYM')"
108+
cur.execute(sql)
109+
sql = "INSERT INTO test_m (id, name, geometry) "
110+
sql += "VALUES (1, 'toto', GeomFromText('POINT M (0 0 1)', 4326))"
111+
cur.execute(sql)
112+
113+
# table with Z dimension and M value geometry
114+
sql = "CREATE TABLE test_zm (id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL)"
115+
cur.execute(sql)
116+
sql = "SELECT AddGeometryColumn('test_zm', 'geometry', 4326, 'POINT', 'XYZM')"
117+
cur.execute(sql)
118+
sql = "INSERT INTO test_zm (id, name, geometry) "
119+
sql += "VALUES (1, 'toto', GeomFromText('POINT ZM (0 0 1 1)', 4326))"
120+
cur.execute(sql)
121+
94122
# table with multiple column primary key
95123
sql = "CREATE TABLE test_pg_mk (id INTEGER NOT NULL, name TEXT NOT NULL, PRIMARY KEY(id,name))"
96124
cur.execute(sql)
@@ -308,6 +336,31 @@ def test_queries(self):
308336
self.assertEqual(sum_id1, 32)
309337
self.assertEqual(sum_id2, 32)
310338

339+
def test_zm(self):
340+
"""Test Z dimension and M value"""
341+
l = QgsVectorLayer("dbname=%s table='test_z' (geometry) key='id'" % self.dbname, "test_z", "spatialite")
342+
self.assertTrue(l.isValid())
343+
self.assertTrue(QgsWkbTypes.hasZ(l.wkbType()))
344+
feature = l.getFeature(1)
345+
geom = feature.geometry().constGet()
346+
self.assertEqual(geom.z(), 1.0)
347+
348+
l = QgsVectorLayer("dbname=%s table='test_m' (geometry) key='id'" % self.dbname, "test_m", "spatialite")
349+
self.assertTrue(l.isValid())
350+
self.assertTrue(QgsWkbTypes.hasM(l.wkbType()))
351+
feature = l.getFeature(1)
352+
geom = feature.geometry().constGet()
353+
self.assertEqual(geom.m(), 1.0)
354+
355+
l = QgsVectorLayer("dbname=%s table='test_zm' (geometry) key='id'" % self.dbname, "test_zm", "spatialite")
356+
self.assertTrue(l.isValid())
357+
self.assertTrue(QgsWkbTypes.hasZ(l.wkbType()))
358+
self.assertTrue(QgsWkbTypes.hasM(l.wkbType()))
359+
feature = l.getFeature(1)
360+
geom = feature.geometry().constGet()
361+
self.assertEqual(geom.z(), 1.0)
362+
self.assertEqual(geom.m(), 1.0)
363+
311364
def test_case(self):
312365
"""Test case sensitivity issues"""
313366
l = QgsVectorLayer("dbname=%s table='test_n' (geometry) key='id'" % self.dbname, "test_n1", "spatialite")

0 commit comments

Comments
 (0)