17
17
import os
18
18
import tempfile
19
19
import shutil
20
- import glob
21
20
from osgeo import gdal , ogr
22
21
23
- from qgis .core import QgsVectorLayer , QgsFeature , QgsGeometry , QgsFeatureRequest
22
+ from qgis .core import QgsVectorLayer , QgsFeature , QgsGeometry
24
23
from qgis .testing import start_app , unittest
25
- from utilities import unitTestDataPath
26
24
27
25
start_app ()
28
26
@@ -57,14 +55,14 @@ def testSingleToMultiPolygonPromotion(self):
57
55
58
56
tmpfile = os .path .join (self .basetestpath , 'testSingleToMultiPolygonPromotion.gpkg' )
59
57
ds = ogr .GetDriverByName ('GPKG' ).CreateDataSource (tmpfile )
60
- lyr = ds .CreateLayer ('test' , geom_type = ogr .wkbMultiPolygon )
58
+ ds .CreateLayer ('test' , geom_type = ogr .wkbMultiPolygon )
61
59
ds = None
62
60
63
61
vl = QgsVectorLayer ('{}|layerid=0' .format (tmpfile ), 'test' , 'ogr' )
64
62
f = QgsFeature ()
65
63
f .setGeometry (QgsGeometry .fromWkt ('POLYGON ((0 0,0 1,1 1,0 0))' ))
66
64
vl .dataProvider ().addFeatures ([f ])
67
- got = [f for f in vl .getFeatures ()][0 ]
65
+ got = [feat for feat in vl .getFeatures ()][0 ]
68
66
got_geom = got .geometry ()
69
67
reference = QgsGeometry .fromWkt ('MultiPolygon (((0 0, 0 1, 1 1, 0 0)))' )
70
68
# The geometries must be binarily identical
@@ -75,15 +73,15 @@ def testCurveGeometryType(self):
75
73
76
74
tmpfile = os .path .join (self .basetestpath , 'testCurveGeometryType.gpkg' )
77
75
ds = ogr .GetDriverByName ('GPKG' ).CreateDataSource (tmpfile )
78
- lyr = ds .CreateLayer ('test' , geom_type = ogr .wkbCurvePolygon )
76
+ ds .CreateLayer ('test' , geom_type = ogr .wkbCurvePolygon )
79
77
ds = None
80
78
81
79
vl = QgsVectorLayer ('{}' .format (tmpfile ), 'test' , 'ogr' )
82
80
self .assertEqual (vl .dataProvider ().subLayers (), ['0:test:0:CurvePolygon' ])
83
81
f = QgsFeature ()
84
82
f .setGeometry (QgsGeometry .fromWkt ('POLYGON ((0 0,0 1,1 1,0 0))' ))
85
83
vl .dataProvider ().addFeatures ([f ])
86
- got = [f for f in vl .getFeatures ()][0 ]
84
+ got = [feat for feat in vl .getFeatures ()][0 ]
87
85
got_geom = got .geometry ()
88
86
reference = QgsGeometry .fromWkt ('CurvePolygon (((0 0, 0 1, 1 1, 0 0)))' )
89
87
# The geometries must be binarily identical
@@ -148,13 +146,34 @@ def testBug15351_closeIter_commit_closeProvider(self):
148
146
149
147
@unittest .expectedFailure (int (gdal .VersionInfo ('VERSION_NUM' )) < GDAL_COMPUTE_VERSION (2 , 0 , 0 ))
150
148
# We need GDAL 2.0 to issue PRAGMA journal_mode
151
- def testBug15351_closeIter_commit_closeProvider (self ):
152
- self .internalTestBug15351 ('closeIter_commit_closeProvider ' )
149
+ def testBug15351_commit_closeProvider_closeIter (self ):
150
+ self .internalTestBug15351 ('commit_closeProvider_closeIter ' )
153
151
154
152
@unittest .expectedFailure (int (gdal .VersionInfo ('VERSION_NUM' )) < GDAL_COMPUTE_VERSION (2 , 0 , 0 ))
155
153
# We need GDAL 2.0 to issue PRAGMA journal_mode
156
154
def testBug15351_commit_closeIter_closeProvider (self ):
157
155
self .internalTestBug15351 ('commit_closeIter_closeProvider' )
158
156
157
+ def testSelectSubsetString (self ):
158
+
159
+ tmpfile = os .path .join (self .basetestpath , 'testSelectSubsetString.gpkg' )
160
+ ds = ogr .GetDriverByName ('GPKG' ).CreateDataSource (tmpfile )
161
+ lyr = ds .CreateLayer ('test' , geom_type = ogr .wkbMultiPolygon )
162
+ lyr .CreateField (ogr .FieldDefn ('foo' , ogr .OFTString ))
163
+ f = ogr .Feature (lyr .GetLayerDefn ())
164
+ f ['foo' ] = 'bar'
165
+ lyr .CreateFeature (f )
166
+ f = None
167
+ f = ogr .Feature (lyr .GetLayerDefn ())
168
+ f ['foo' ] = 'baz'
169
+ lyr .CreateFeature (f )
170
+ f = None
171
+ ds = None
172
+
173
+ vl = QgsVectorLayer ('{}|layerid=0' .format (tmpfile ), 'test' , 'ogr' )
174
+ vl .setSubsetString ("SELECT fid, foo FROM test WHERE foo = 'baz'" )
175
+ got = [feat for feat in vl .getFeatures ()]
176
+ self .assertEqual ( len (got ), 1 )
177
+
159
178
if __name__ == '__main__' :
160
179
unittest .main ()
0 commit comments