@@ -450,11 +450,30 @@ def testQgsGraduatedSymbolRenderer_3(self):
450
450
'(0.5000-1.0000,1.0000-1.1000,1.1000-1.2000,1.2000-5.0000,)' ,
451
451
'Quantile classification not correct' )
452
452
453
- # Tests still needed
453
+ def testUsedAttributes (self ):
454
+ renderer = QgsGraduatedSymbolRenderer ()
455
+ ctx = QgsRenderContext ()
456
+
457
+ # attribute can contain either attribute name or an expression.
458
+ # Sometimes it is not possible to distinguish between those two,
459
+ # e.g. "a - b" can be both a valid attribute name or expression.
460
+ # Since we do not have access to fields here, the method should return both options.
461
+ renderer .setClassAttribute ("value" )
462
+ self .assertEqual (renderer .usedAttributes (ctx ), {"value" })
463
+ renderer .setClassAttribute ("value - 1" )
464
+ self .assertEqual (renderer .usedAttributes (ctx ), {"value" , "value - 1" })
465
+ renderer .setClassAttribute ("valuea - valueb" )
466
+ self .assertEqual (renderer .usedAttributes (ctx ), {"valuea" , "valuea - valueb" , "valueb" })
454
467
455
- # Other calculation method tests
456
- # createRenderer function
457
- # symbolForFeature correctly selects range
468
+ def testFilterNeedsGeometry (self ):
469
+ renderer = QgsGraduatedSymbolRenderer ()
470
+
471
+ renderer .setClassAttribute ("value" )
472
+ self .assertFalse (renderer .filterNeedsGeometry ())
473
+ renderer .setClassAttribute ("$area" )
474
+ self .assertTrue (renderer .filterNeedsGeometry ())
475
+ renderer .setClassAttribute ("value - $area" )
476
+ self .assertTrue (renderer .filterNeedsGeometry ())
458
477
459
478
460
479
if __name__ == "__main__" :
0 commit comments