@@ -222,8 +222,47 @@ def runGetFeatureTests(self, provider):
222
222
# against numeric literals
223
223
self .assert_query (provider , 'num_char IN (2, 4, 5)' , [2 , 4 , 5 ])
224
224
225
+ #function
226
+ self .assert_query (provider , 'sqrt(pk) >= 2' , [4 , 5 ])
227
+ self .assert_query (provider , 'radians(cnt) < 2' , [1 , 5 ])
228
+ self .assert_query (provider , 'degrees(pk) <= 200' , [1 , 2 , 3 ])
229
+ self .assert_query (provider , 'abs(cnt) <= 200' , [1 , 2 , 5 ])
230
+ self .assert_query (provider , 'cos(pk) < 0' , [2 , 3 , 4 ])
231
+ self .assert_query (provider , 'sin(pk) < 0' , [4 , 5 ])
232
+ self .assert_query (provider , 'tan(pk) < 0' , [2 , 3 , 5 ])
233
+ self .assert_query (provider , 'acos(-1) < pk' , [4 , 5 ])
234
+ self .assert_query (provider , 'asin(1) < pk' , [2 , 3 , 4 , 5 ])
235
+ self .assert_query (provider , 'atan(3.14) < pk' , [2 , 3 , 4 , 5 ])
236
+ self .assert_query (provider , 'atan2(3.14, pk) < 1' , [3 , 4 , 5 ])
237
+ self .assert_query (provider , 'exp(pk) < 10' , [1 , 2 ])
238
+ self .assert_query (provider , 'ln(pk) <= 1' , [1 , 2 ])
239
+ self .assert_query (provider , 'log(3, pk) <= 1' , [1 , 2 , 3 ])
240
+ self .assert_query (provider , 'log10(pk) < 0.5' , [1 , 2 , 3 ])
241
+ self .assert_query (provider , 'round(3.14) <= pk' , [3 , 4 , 5 ])
242
+ self .assert_query (provider , 'floor(3.14) <= pk' , [3 , 4 , 5 ])
243
+ self .assert_query (provider , 'ceil(3.14) <= pk' , [4 , 5 ])
244
+ self .assert_query (provider , 'pk < pi()' , [1 , 2 , 3 ])
245
+
246
+ self .assert_query (provider , 'round(cnt / 66.67) <= 2' , [1 , 5 ])
247
+ self .assert_query (provider , 'floor(cnt / 66.67) <= 2' , [1 , 2 , 5 ])
248
+ self .assert_query (provider , 'ceil(cnt / 66.67) <= 2' , [1 , 5 ])
249
+ self .assert_query (provider , 'pk < pi() / 2' , [1 ])
250
+
225
251
# geometry
252
+ # azimuth and touches tests are deactivated because they do not pass for WFS provider
253
+ #self.assert_query(provider, 'azimuth($geometry,geom_from_wkt( \'Point (-70 70)\')) < pi()', [1, 5])
254
+ self .assert_query (provider , 'x($geometry) < -70' , [1 , 5 ])
255
+ self .assert_query (provider , 'y($geometry) > 70' , [2 , 4 , 5 ])
256
+ self .assert_query (provider , 'xmin($geometry) < -70' , [1 , 5 ])
257
+ self .assert_query (provider , 'ymin($geometry) > 70' , [2 , 4 , 5 ])
258
+ self .assert_query (provider , 'xmax($geometry) < -70' , [1 , 5 ])
259
+ self .assert_query (provider , 'ymax($geometry) > 70' , [2 , 4 , 5 ])
260
+ self .assert_query (provider , 'disjoint($geometry,geom_from_wkt( \' Polygon ((-72.2 66.1, -65.2 66.1, -65.2 72.0, -72.2 72.0, -72.2 66.1))\' ))' , [4 , 5 ])
226
261
self .assert_query (provider , 'intersects($geometry,geom_from_wkt( \' Polygon ((-72.2 66.1, -65.2 66.1, -65.2 72.0, -72.2 72.0, -72.2 66.1))\' ))' , [1 , 2 ])
262
+ #self.assert_query(provider, 'touches($geometry,geom_from_wkt( \'Polygon ((-70.332 66.33, -65.32 66.33, -65.32 78.3, -70.332 78.3, -70.332 66.33))\'))', [1, 4])
263
+ self .assert_query (provider , 'contains(geom_from_wkt( \' Polygon ((-72.2 66.1, -65.2 66.1, -65.2 72.0, -72.2 72.0, -72.2 66.1))\' ),$geometry)' , [1 , 2 ])
264
+ self .assert_query (provider , 'distance($geometry,geom_from_wkt( \' Point (-70 70)\' )) > 7' , [4 , 5 ])
265
+ self .assert_query (provider , 'intersects($geometry,geom_from_gml( \' <gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-72.2,66.1 -65.2,66.1 -65.2,72.0 -72.2,72.0 -72.2,66.1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon>\' ))' , [1 , 2 ])
227
266
228
267
# combination of an uncompilable expression and limit
229
268
feature = next (self .vl .getFeatures ('pk=4' ))
@@ -240,19 +279,46 @@ def runGetFeatureTests(self, provider):
240
279
values = [f ['pk' ] for f in self .vl .getFeatures (request )]
241
280
self .assertEqual (values , [4 ])
242
281
282
+ def runPolyGetFeatureTests (self , provider ):
283
+ assert len ([f for f in provider .getFeatures ()]) == 4
284
+
285
+ # geometry
286
+ self .assert_query (provider , 'x($geometry) < -70' , [1 ])
287
+ self .assert_query (provider , 'y($geometry) > 79' , [1 , 2 ])
288
+ self .assert_query (provider , 'xmin($geometry) < -70' , [1 , 3 ])
289
+ self .assert_query (provider , 'ymin($geometry) < 76' , [3 ])
290
+ self .assert_query (provider , 'xmax($geometry) > -68' , [2 , 3 ])
291
+ self .assert_query (provider , 'ymax($geometry) > 80' , [1 , 2 ])
292
+ self .assert_query (provider , 'area($geometry) > 10' , [1 ])
293
+ self .assert_query (provider , 'perimeter($geometry) < 12' , [2 , 3 ])
294
+ self .assert_query (provider , 'relate($geometry,geom_from_wkt( \' Polygon ((-68.2 82.1, -66.95 82.1, -66.95 79.05, -68.2 79.05, -68.2 82.1))\' )) = \' FF2FF1212\' ' , [1 , 3 ])
295
+ self .assert_query (provider , 'relate($geometry,geom_from_wkt( \' Polygon ((-68.2 82.1, -66.95 82.1, -66.95 79.05, -68.2 79.05, -68.2 82.1))\' ), \' ****F****\' )' , [1 , 3 ])
296
+ self .assert_query (provider , 'crosses($geometry,geom_from_wkt( \' Linestring (-68.2 82.1, -66.95 82.1, -66.95 79.05)\' ))' , [2 ])
297
+ self .assert_query (provider , 'overlaps($geometry,geom_from_wkt( \' Polygon ((-68.2 82.1, -66.95 82.1, -66.95 79.05, -68.2 79.05, -68.2 82.1))\' ))' , [2 ])
298
+ self .assert_query (provider , 'within($geometry,geom_from_wkt( \' Polygon ((-75.1 76.1, -75.1 81.6, -68.8 81.6, -68.8 76.1, -75.1 76.1))\' ))' , [1 ])
299
+ self .assert_query (provider , 'overlaps(translate($geometry,-1,-1),geom_from_wkt( \' Polygon ((-75.1 76.1, -75.1 81.6, -68.8 81.6, -68.8 76.1, -75.1 76.1))\' ))' , [1 ])
300
+ self .assert_query (provider , 'overlaps(buffer($geometry,1),geom_from_wkt( \' Polygon ((-75.1 76.1, -75.1 81.6, -68.8 81.6, -68.8 76.1, -75.1 76.1))\' ))' , [1 , 3 ])
301
+ self .assert_query (provider , 'intersects(centroid($geometry),geom_from_wkt( \' Polygon ((-74.4 78.2, -74.4 79.1, -66.8 79.1, -66.8 78.2, -74.4 78.2))\' ))' , [2 ])
302
+ self .assert_query (provider , 'intersects(point_on_surface($geometry),geom_from_wkt( \' Polygon ((-74.4 78.2, -74.4 79.1, -66.8 79.1, -66.8 78.2, -74.4 78.2))\' ))' , [1 , 2 ])
303
+ self .assert_query (provider , 'distance($geometry,geom_from_wkt( \' Point (-70 70)\' )) > 7' , [1 , 2 ])
304
+
243
305
def testGetFeaturesUncompiled (self ):
244
306
self .compiled = False
245
307
try :
246
308
self .disableCompiler ()
247
309
except AttributeError :
248
310
pass
249
311
self .runGetFeatureTests (self .provider )
312
+ if hasattr (self , 'poly_provider' ):
313
+ self .runPolyGetFeatureTests (self .poly_provider )
250
314
251
- def testGetFeaturesCompiled (self ):
315
+ def testPolyGetFeaturesCompiled (self ):
252
316
try :
253
317
self .enableCompiler ()
254
318
self .compiled = True
255
319
self .runGetFeatureTests (self .provider )
320
+ if hasattr (self , 'poly_provider' ):
321
+ self .runPolyGetFeatureTests (self .poly_provider )
256
322
except AttributeError :
257
323
print ('Provider does not support compiling' )
258
324
0 commit comments