@@ -275,6 +275,16 @@ def testLengthPrecisionFromUri(self):
275275 self .assertEqual (myMemoryLayer .fields ().field ('size' ).length (), 12 )
276276 self .assertEqual (myMemoryLayer .fields ().field ('size' ).precision (), 9 )
277277
278+ def testFromUriWithEncodedField (self ):
279+ """Test we can construct the mem provider from a uri when a field name is encoded"""
280+ layer = QgsVectorLayer (
281+ ('Point?crs=epsg:4326&field=name:string(20)&'
282+ 'field=test%2Ffield:integer' ),
283+ 'test' ,
284+ 'memory' )
285+ self .assertTrue (layer .isValid ())
286+ self .assertEqual ([f .name () for f in layer .fields ()], ['name' , 'test/field' ])
287+
278288 def testSaveFields (self ):
279289 # Create a new memory layer with no fields
280290 myMemoryLayer = QgsVectorLayer (
@@ -398,6 +408,8 @@ def testCreateMemoryLayer(self):
398408 fields .append (QgsField ("date" , QVariant .Date ))
399409 fields .append (QgsField ("datetime" , QVariant .DateTime ))
400410 fields .append (QgsField ("time" , QVariant .Time ))
411+ fields .append (QgsField ("#complex_name" , QVariant .String ))
412+ fields .append (QgsField ("complex/name" , QVariant .String ))
401413 layer = QgsMemoryProviderUtils .createMemoryLayer ('my name' , fields )
402414 self .assertTrue (layer .isValid ())
403415 self .assertFalse (layer .fields ().isEmpty ())
0 commit comments