Symbol renderer: special case for fixed interval single class

Fix #63277
This commit is contained in:
Alessandro Pasotti 2025-09-22 15:42:46 +02:00
parent 0b1ba631b3
commit 25444cca9f
2 changed files with 37 additions and 0 deletions

View File

@ -62,7 +62,15 @@ QList<double> QgsClassificationFixedInterval::calculateBreaks( double &minimum,
return breaks;
}
// Single class
if ( minimum == maximum )
{
breaks << maximum + interval;
return breaks;
}
double value = minimum;
while ( value < maximum )
{
value += interval;

View File

@ -770,6 +770,35 @@ class TestQgsGraduatedSymbolRenderer(QgisTestCase):
self.assertEqual(dom.toString(), expected)
def testFixedIntervalSingleClass(self):
"""Test single class with fixed interval, issue GH #63277"""
# Create a renderer
renderer = QgsGraduatedSymbolRenderer()
renderer.setClassificationMethod(QgsClassificationFixedInterval())
symbol = createMarkerSymbol()
renderer.setSourceSymbol(symbol.clone())
# Test retrieving data values from a layer
ml = createMemoryLayer((0, 0))
renderer.setClassAttribute("value")
# Equal interval calculations
renderer.updateClasses(ml, 5)
self.assertEqual(
dumpRangeBreaks(renderer.ranges()),
"(0.0000-1.0000,)",
"Equal interval classification not correct",
)
ml = createMemoryLayer((1, 1))
renderer.updateClasses(ml, 5)
self.assertEqual(
dumpRangeBreaks(renderer.ranges()),
"(1.0000-2.0000,)",
"Equal interval classification not correct",
)
if __name__ == "__main__":
unittest.main()