cstester - a tool for testing loading and painting of documents

Boudewijn Rempt boud at valdyas.org
Tue Jan 18 13:55:18 GMT 2011


On Tuesday 18 January 2011, Cyrille Berger Skott wrote:
> Hi,
> 
> I had a similar idea. But instead of testing the exact rendering, which is 
> rather fragile, my idea was to implement a special QPaintEngine (and 
> associated QPaintDevice), that would record as text the drawing commands.

Doesn't QPicture do something like that already? Or else we might compare the svg.

> 
> The idea is that the actual drawing on screen is not up to our responsability, 
> it would be a Qt matter, what is important from a calligra point of view is 
> that the call to QPainter's API is correct.
> 
> The way I see it would be outputing text that would look like this:
> "LINE 12.0 -12.1 34.3 2.3 QPEN(255,0,0)"
> 
> Which means that a red line has been drawn from (12.0,-12.1) to (34.3, 2.3).
> 
> And in the QPaintEngine it would be implemented as:
> 
> void QPaintEngine::drawLines ( const QLineF * lines, int lineCount )
> {
>    for(int i = 0; i < lineCount; ++i)
>    {
>       addText( QString("LINE %1 %2 %3 %4 %5")
> 				.arg(lines[i]->x1())
> 				.arg(lines[i]->y1())
> 				.arg(lines[i]->x2())
> 				.arg(lines[i]->y2())
> 				.arg(currentPenText()) );
>    }
> }
> 
> And then you could use this QPaintEngine/QPaintDevice with QPainter, and 
> basically test anything that need to be drawn. That could range from unit 
> testing KoShape::paint, to testing the rendering of document.
> 
> This approach also has the advantage that it should be platform independent, 
> meaning that anyone could run the test suite, and it would not break on update 
> of the testing platform.
> 
> (on a side note, my intention was to have Hanna works on this when she is more 
> at ease with Calligra code, but if you want to take that idea, I would not 
> mind, and will find her something else to do :) )
> 
> 


-- 
Boudewijn Rempt | http://www.valdyas.org, http://www.krita.org



More information about the calligra-devel mailing list