11from pathlib import Path
22
3- from qgis .core import Qgis , QgsVectorLayer
3+ from qgis .core import QgsVectorLayer
44from qgis .PyQt .QtCore import NULL , QDate , QDateTime , QVariant
55
66from .core .client import Client
@@ -36,24 +36,32 @@ def test_getfeature_gml(client: Client):
3636 assert "text/xml" in rv .headers .get ("Content-Type" , "" ), rv .headers
3737 layer = get_test_vector_layer (rv .file ("gml" ), "GML" )
3838 expected_fields = ["gml_id" ]
39- if Qgis .versionInt () >= 33400 :
40- expected_fields .extend (["lowerCorner" , "upperCorner" ])
39+ expected_fields .extend (["lowerCorner" , "upperCorner" ])
4140 expected_fields .extend (["id" , "trailing_zero" , "name" , "comment" , "date_time" , "date" ])
4241 assert layer .fields ().names () == expected_fields
4342
4443 index = layer .fields ().indexFromName ("gml_id" )
4544 assert layer .uniqueValues (index ) == {"lines.1" , "lines.2" , "lines.3" , "lines.4" }
4645
4746 index = layer .fields ().indexFromName ("id" )
47+ assert layer .fields ().at (index ).type () == QVariant .Int
4848 assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
4949
5050 index = layer .fields ().indexFromName ("name" )
51- # QGIS 3.24.1 and 3.22.6
5251 assert layer .uniqueValues (index ) == {"éù%@ > 1" , "(]~€ > 2" , "Line < 3" , "Line name" }
5352
53+
5454 index = layer .fields ().indexFromName ("trailing_zero" )
55- # field detected as integer, so losing the trailing zero
56- assert layer .uniqueValues (index ) == {5200 }
55+ match layer .fields ().at (index ).type ():
56+ case QVariant .Int :
57+ # field detected as integer, so losing the trailing zero
58+ assert layer .uniqueValues (index ) == {5200 }
59+ case QVariant .String :
60+ # In QGIS 4/Gdal 3.10 this is no more interpreted
61+ # as integer
62+ assert layer .uniqueValues (index ) == {"05200" }
63+ case unexpected :
64+ assert False , f"Unexpected field type: { unexpected } "
5765
5866 # Date time
5967 index = layer .fields ().indexFromName ("date_time" )
@@ -102,13 +110,19 @@ def test_getfeature_kml(client: Client):
102110
103111 # ID
104112 index = layer .fields ().indexFromName ("id" )
105- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
106- assert layer .fields ().at (index ).type () == QVariant .Int
113+ match layer .fields ().at (index ).type ():
114+ case QVariant .Int :
115+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
116+ case QVariant .String :
117+ # In QGIS 4/Gdal 3.10 the OGR (LIB)KML driver interpret this as string
118+ assert layer .uniqueValues (index ) == {"1" , "2" , "3" , "4" }
119+ case unexpected :
120+ assert False , f"Unexpected field type: { unexpected } "
107121
108122 # Trailing 0
109123 index = layer .fields ().indexFromName ("trailing_zero" )
110- assert "05200" in layer .uniqueValues (index )
111124 assert layer .fields ().at (index ).type () == QVariant .String
125+ assert "05200" in layer .uniqueValues (index )
112126
113127
114128def test_getfeature_gpkg (client : Client ):
@@ -127,13 +141,13 @@ def test_getfeature_gpkg(client: Client):
127141
128142 # ID
129143 index = layer .fields ().indexFromName ("id" )
130- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
131144 assert layer .fields ().at (index ).type () == QVariant .Int
145+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
132146
133147 # Trailing 0
134148 index = layer .fields ().indexFromName ("trailing_zero" )
135- assert "05200" in layer .uniqueValues (index )
136149 assert layer .fields ().at (index ).type () == QVariant .String
150+ assert "05200" in layer .uniqueValues (index )
137151
138152
139153def test_getfeature_gpx (client : Client ):
@@ -208,18 +222,18 @@ def test_getfeature_ods(client: Client):
208222
209223 # ID
210224 index = layer .fields ().indexFromName ("id" )
211- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
212225 assert layer .fields ().at (index ).type () == QVariant .Int
226+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
213227
214228 # Trailing 0
215229 index = layer .fields ().indexFromName ("trailing_zero" )
216- assert "05200" in layer .uniqueValues (index )
217230 assert layer .fields ().at (index ).type () == QVariant .String
231+ assert "05200" in layer .uniqueValues (index )
218232
219233 # Date time
220234 index = layer .fields ().indexFromName ("date_time" )
221- assert QDateTime (2023 , 8 , 1 , 12 , 0 ) in layer .uniqueValues (index )
222235 assert layer .fields ().at (index ).type () == QVariant .DateTime
236+ assert QDateTime (2023 , 8 , 1 , 12 , 0 ) in layer .uniqueValues (index )
223237
224238 # Date
225239 index = layer .fields ().indexFromName ("date" )
@@ -243,13 +257,13 @@ def test_getfeature_geojson(client: Client):
243257
244258 # ID
245259 index = layer .fields ().indexFromName ("id" )
246- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
247260 assert layer .fields ().at (index ).type () == QVariant .Int
261+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
248262
249263 # Trailing 0
250264 index = layer .fields ().indexFromName ("trailing_zero" )
251- assert "05200" in layer .uniqueValues (index )
252265 assert layer .fields ().at (index ).type () == QVariant .String
266+ assert "05200" in layer .uniqueValues (index )
253267
254268
255269def test_getfeature_excel (client : Client ):
@@ -269,13 +283,13 @@ def test_getfeature_excel(client: Client):
269283
270284 # ID
271285 index = layer .fields ().indexFromName ("id" )
272- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
273286 assert layer .fields ().at (index ).type () == QVariant .Int
287+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
274288
275289 # Trailing 0
276290 index = layer .fields ().indexFromName ("trailing_zero" )
277- assert "05200" in layer .uniqueValues (index )
278291 assert layer .fields ().at (index ).type () == QVariant .String
292+ assert "05200" in layer .uniqueValues (index )
279293
280294 # Date time
281295 index = layer .fields ().indexFromName ("date_time" )
@@ -305,18 +319,18 @@ def test_getfeature_csv(client: Client):
305319 # ID
306320 # All fields are loaded as string
307321 index = layer .fields ().indexFromName ("id" )
308- assert layer .uniqueValues (index ) == {"1" , "2" , "3" , "4" }
309322 assert layer .fields ().at (index ).type () == QVariant .String
323+ assert layer .uniqueValues (index ) == {"1" , "2" , "3" , "4" }
310324
311325 # Trailing 0
312326 index = layer .fields ().indexFromName ("trailing_zero" )
313- assert "05200" in layer .uniqueValues (index )
314327 assert layer .fields ().at (index ).type () == QVariant .String
328+ assert "05200" in layer .uniqueValues (index )
315329
316330 # Date time
317331 index = layer .fields ().indexFromName ("date_time" )
318- assert "2023/08/01 12:00:00" in layer .uniqueValues (index )
319332 assert layer .fields ().at (index ).type () == QVariant .String
333+ assert "2023/08/01 12:00:00" in layer .uniqueValues (index )
320334
321335 # Date
322336 index = layer .fields ().indexFromName ("date" )
@@ -340,13 +354,13 @@ def test_getfeature_shapefile(client: Client):
340354 )
341355 # ID
342356 index = layer .fields ().indexFromName ("id" )
343- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
344357 assert layer .fields ().at (index ).type () == QVariant .LongLong # Int to LongLong compare to others
358+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
345359
346360 # Trailing 0
347361 index = layer .fields ().indexFromName ("trailing_z" )
348- assert "05200" in layer .uniqueValues (index )
349362 assert layer .fields ().at (index ).type () == QVariant .String
363+ assert "05200" in layer .uniqueValues (index )
350364
351365
352366def test_getfeature_tab (client : Client ):
@@ -365,13 +379,13 @@ def test_getfeature_tab(client: Client):
365379
366380 # ID
367381 index = layer .fields ().indexFromName ("id" )
368- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
369382 assert layer .fields ().at (index ).type () == QVariant .Int
383+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
370384
371385 # Trailing 0
372386 index = layer .fields ().indexFromName ("trailing_zero" )
373- assert "05200" in layer .uniqueValues (index )
374387 assert layer .fields ().at (index ).type () == QVariant .String
388+ assert "05200" in layer .uniqueValues (index )
375389
376390
377391def test_getfeature_mif (client : Client ):
@@ -390,13 +404,13 @@ def test_getfeature_mif(client: Client):
390404
391405 # ID
392406 index = layer .fields ().indexFromName ("id" )
393- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
394407 assert layer .fields ().at (index ).type () == QVariant .Int
408+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
395409
396410 # Trailing 0
397411 index = layer .fields ().indexFromName ("trailing_zero" )
398- assert "05200" in layer .uniqueValues (index )
399412 assert layer .fields ().at (index ).type () == QVariant .String
413+ assert "05200" in layer .uniqueValues (index )
400414
401415
402416def test_getfeature_layer_name_with_accent (client : Client ):
@@ -433,13 +447,13 @@ def test_getfeature_geojson_with_selection(client: Client):
433447
434448 # ID
435449 index = layer .fields ().indexFromName ("id" )
436- assert layer .uniqueValues (index ) == {1 , 2 }
437450 assert layer .fields ().at (index ).type () == QVariant .Int
451+ assert layer .uniqueValues (index ) == {1 , 2 }
438452
439453 # Trailing 0
440454 index = layer .fields ().indexFromName ("trailing_zero" )
441- assert "05200" in layer .uniqueValues (index )
442455 assert layer .fields ().at (index ).type () == QVariant .String
456+ assert "05200" in layer .uniqueValues (index )
443457
444458
445459def test_getfeature_fgb (client : Client ):
@@ -458,20 +472,20 @@ def test_getfeature_fgb(client: Client):
458472
459473 # ID
460474 index = layer .fields ().indexFromName ("id" )
461- assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
462475 assert layer .fields ().at (index ).type () == QVariant .Int
476+ assert layer .uniqueValues (index ) == {1 , 2 , 3 , 4 }
463477
464478 # Trailing 0
465479 index = layer .fields ().indexFromName ("trailing_zero" )
466- assert "05200" in layer .uniqueValues (index )
467480 assert layer .fields ().at (index ).type () == QVariant .String
481+ assert "05200" in layer .uniqueValues (index )
468482
469483 # Date time
470484 index = layer .fields ().indexFromName ("date_time" )
471- assert QDateTime (2023 , 8 , 1 , 12 , 0 ) in layer .uniqueValues (index )
472485 assert layer .fields ().at (index ).type () == QVariant .DateTime
486+ assert QDateTime (2023 , 8 , 1 , 12 , 0 ) in layer .uniqueValues (index )
473487
474488 # Date
475489 index = layer .fields ().indexFromName ("date" )
476- assert QDateTime (2023 , 8 , 1 , 0 , 0 ) in layer .uniqueValues (index )
477490 assert layer .fields ().at (index ).type () == QVariant .DateTime
491+ assert QDateTime (2023 , 8 , 1 , 0 , 0 ) in layer .uniqueValues (index )
0 commit comments