@@ -275,6 +275,21 @@ def testLengthPrecisionFromUri(self):
275
275
self .assertEqual (myMemoryLayer .fields ().field ('size' ).length (), 12 )
276
276
self .assertEqual (myMemoryLayer .fields ().field ('size' ).precision (), 9 )
277
277
278
+ myMemoryLayer = QgsVectorLayer (
279
+ ('Point?crs=epsg:4326&field=size:double(-1,-1)&index=yes' ),
280
+ 'test' ,
281
+ 'memory' )
282
+
283
+ self .assertEqual (myMemoryLayer .fields ().field ('size' ).length (), - 1 )
284
+ self .assertEqual (myMemoryLayer .fields ().field ('size' ).precision (), - 1 )
285
+
286
+ myMemoryLayer = QgsVectorLayer (
287
+ ('Point?crs=epsg:4326&field=size:string(-1)&index=yes' ),
288
+ 'test' ,
289
+ 'memory' )
290
+
291
+ self .assertEqual (myMemoryLayer .fields ().field ('size' ).length (), - 1 )
292
+
278
293
def testFromUriWithEncodedField (self ):
279
294
"""Test we can construct the mem provider from a uri when a field name is encoded"""
280
295
layer = QgsVectorLayer (
@@ -417,6 +432,8 @@ def testCreateMemoryLayer(self):
417
432
for i in range (len (fields )):
418
433
self .assertEqual (layer .fields ()[i ].name (), fields [i ].name ())
419
434
self .assertEqual (layer .fields ()[i ].type (), fields [i ].type ())
435
+ self .assertEqual (layer .fields ()[i ].length (), fields [i ].length ())
436
+ self .assertEqual (layer .fields ()[i ].precision (), fields [i ].precision (), fields [i ].name ())
420
437
421
438
# unsupported field type
422
439
fields = QgsFields ()
@@ -427,6 +444,22 @@ def testCreateMemoryLayer(self):
427
444
self .assertEqual (layer .fields ()[0 ].name (), 'rect' )
428
445
self .assertEqual (layer .fields ()[0 ].type (), QVariant .String ) # should be mapped to string
429
446
447
+ # field precision
448
+ fields = QgsFields ()
449
+ fields .append (QgsField ("string" , QVariant .String , len = 10 ))
450
+ fields .append (QgsField ("long" , QVariant .LongLong , len = 6 ))
451
+ fields .append (QgsField ("double" , QVariant .Double , len = 10 , prec = 7 ))
452
+ fields .append (QgsField ("double2" , QVariant .Double , len = - 1 , prec = - 1 ))
453
+ layer = QgsMemoryProviderUtils .createMemoryLayer ('my name' , fields )
454
+ self .assertTrue (layer .isValid ())
455
+ self .assertFalse (layer .fields ().isEmpty ())
456
+ self .assertEqual (len (layer .fields ()), len (fields ))
457
+ for i in range (len (fields )):
458
+ self .assertEqual (layer .fields ()[i ].name (), fields [i ].name ())
459
+ self .assertEqual (layer .fields ()[i ].type (), fields [i ].type ())
460
+ self .assertEqual (layer .fields ()[i ].length (), fields [i ].length ())
461
+ self .assertEqual (layer .fields ()[i ].precision (), fields [i ].precision ())
462
+
430
463
def testThreadSafetyWithIndex (self ):
431
464
layer = QgsVectorLayer ('Point?crs=epsg:4326&index=yes&field=pk:integer&field=cnt:int8&field=name:string(0)&field=name2:string(0)&field=num_char:string&key=pk' ,
432
465
'test' , 'memory' )
0 commit comments