1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the test suite of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
40 ****************************************************************************/
42 #include <QtTest/QtTest>
43 #include <QtGui/QApplication>
44 #include <QtGui/QPainter>
45 #include <QtGui/QImage>
47 #include <qstatictext.h>
48 #include <qpaintengine.h>
50 #include <private/qstatictext_p.h>
51 #include <private/qapplication_p.h>
53 // #define DEBUG_SAVE_IMAGE
55 class tst_QStaticText: public QObject
60 bool supportsTransformations() const;
66 void constructionAndDestruction();
67 void drawToPoint_data();
69 void drawToRect_data();
73 void prepareToCorrectData();
74 void prepareToWrongData();
76 void copyConstructor();
78 void translatedPainter();
79 void rotatedPainter();
81 void projectedPainter();
83 void rotatedScaledAndTranslatedPainter_data();
84 void rotatedScaledAndTranslatedPainter();
86 void transformationChanged();
88 void plainTextVsRichText();
90 void setPenPlainText();
91 void setPenRichText();
92 void richTextOverridesPen();
94 void drawStruckOutText();
95 void drawOverlinedText();
96 void drawUnderlinedText();
98 void unprintableCharacter_qtbug12614();
100 void underlinedColor_qtbug20159();
101 void textDocumentColor();
104 void tst_QStaticText::init()
108 void tst_QStaticText::cleanup()
112 void tst_QStaticText::constructionAndDestruction()
114 QStaticText text("My text");
117 void tst_QStaticText::copyConstructor()
119 QStaticText text(QLatin1String("My text"));
121 QTextOption textOption(Qt::AlignRight);
122 text.setTextOption(textOption);
124 text.setPerformanceHint(QStaticText::AggressiveCaching);
125 text.setTextWidth(123.456);
126 text.setTextFormat(Qt::PlainText);
128 QStaticText copiedText(text);
129 copiedText.setText(QLatin1String("Other text"));
131 QCOMPARE(copiedText.textOption().alignment(), Qt::AlignRight);
132 QCOMPARE(copiedText.performanceHint(), QStaticText::AggressiveCaching);
133 QCOMPARE(copiedText.textWidth(), 123.456);
134 QCOMPARE(copiedText.textFormat(), Qt::PlainText);
136 QStaticText otherCopiedText(copiedText);
137 otherCopiedText.setTextWidth(789);
139 QCOMPARE(otherCopiedText.text(), QString::fromLatin1("Other text"));
142 Q_DECLARE_METATYPE(QStaticText::PerformanceHint)
143 void tst_QStaticText::drawToPoint_data()
145 QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
147 QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
148 QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
151 void tst_QStaticText::drawToPoint()
153 QFETCH(QStaticText::PerformanceHint, performanceHint);
155 QPixmap imageDrawText(1000, 1000);
156 imageDrawText.fill(Qt::white);
158 QPainter p(&imageDrawText);
159 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
162 QPixmap imageDrawStaticText(1000, 1000);
163 imageDrawStaticText.fill(Qt::white);
165 QPainter p(&imageDrawStaticText);
166 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
167 text.setTextFormat(Qt::PlainText);
168 text.setPerformanceHint(performanceHint);
169 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
172 QCOMPARE(imageDrawStaticText, imageDrawText);
175 void tst_QStaticText::drawToRect_data()
177 QTest::addColumn<QStaticText::PerformanceHint>("performanceHint");
179 QTest::newRow("Moderate caching") << QStaticText::ModerateCaching;
180 QTest::newRow("Aggressive caching") << QStaticText::AggressiveCaching;
183 void tst_QStaticText::drawToRect()
185 QFETCH(QStaticText::PerformanceHint, performanceHint);
187 QPixmap imageDrawText(1000, 1000);
188 imageDrawText.fill(Qt::white);
190 QPainter p(&imageDrawText);
191 p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
194 QPixmap imageDrawStaticText(1000, 1000);
195 imageDrawStaticText.fill(Qt::white);
197 QPainter p(&imageDrawStaticText);
198 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
199 text.setTextWidth(10),
200 p.setClipRect(QRectF(11, 12, 10, 500));
201 text.setPerformanceHint(performanceHint);
202 text.setTextFormat(Qt::PlainText);
203 p.drawStaticText(QPointF(11, 12), text);
206 #if defined(DEBUG_SAVE_IMAGE)
207 imageDrawText.save("drawToRect_imageDrawText.png");
208 imageDrawStaticText.save("drawToRect_imageDrawStaticText.png");
211 QCOMPARE(imageDrawStaticText, imageDrawText);
214 void tst_QStaticText::prepareToCorrectData()
216 QTransform transform;
217 transform.scale(2.0, 2.0);
218 transform.rotate(90, Qt::ZAxis);
220 QPixmap imageDrawText(1000, 1000);
221 imageDrawText.fill(Qt::white);
223 QPainter p(&imageDrawText);
224 p.setTransform(transform);
225 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
228 QPixmap imageDrawStaticText(1000, 1000);
229 imageDrawStaticText.fill(Qt::white);
231 QPainter p(&imageDrawStaticText);
232 p.setTransform(transform);
233 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
234 text.prepare(transform, p.font());
235 text.setTextFormat(Qt::PlainText);
236 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
239 if (!supportsTransformations())
240 QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
241 QCOMPARE(imageDrawStaticText, imageDrawText);
244 void tst_QStaticText::prepareToWrongData()
246 QTransform transform;
247 transform.scale(2.0, 2.0);
248 transform.rotate(90, Qt::ZAxis);
250 QPixmap imageDrawText(1000, 1000);
251 imageDrawText.fill(Qt::white);
253 QPainter p(&imageDrawText);
254 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
257 QPixmap imageDrawStaticText(1000, 1000);
258 imageDrawStaticText.fill(Qt::white);
260 QPainter p(&imageDrawStaticText);
261 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
262 text.prepare(transform, p.font());
263 text.setTextFormat(Qt::PlainText);
264 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
267 QCOMPARE(imageDrawStaticText, imageDrawText);
271 void tst_QStaticText::setFont()
273 QFont font = QApplication::font();
275 font.setPointSize(28);
277 QPixmap imageDrawText(1000, 1000);
278 imageDrawText.fill(Qt::white);
280 QPainter p(&imageDrawText);
281 p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
284 p.drawText(QRectF(11, 120, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
287 QPixmap imageDrawStaticText(1000, 1000);
288 imageDrawStaticText.fill(Qt::white);
290 QPainter p(&imageDrawStaticText);
293 text.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
294 text.setTextFormat(Qt::PlainText);
296 p.drawStaticText(0, 0, text);
299 p.drawStaticText(11, 120, text);
302 #if defined(DEBUG_SAVE_IMAGE)
303 imageDrawText.save("setFont_imageDrawText.png");
304 imageDrawStaticText.save("setFont_imageDrawStaticText.png");
307 QCOMPARE(imageDrawStaticText, imageDrawText);
310 void tst_QStaticText::setTextWidth()
312 QPixmap imageDrawText(1000, 1000);
313 imageDrawText.fill(Qt::white);
315 QPainter p(&imageDrawText);
316 p.drawText(QRectF(11, 12, 10, 500), "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
319 QPixmap imageDrawStaticText(1000, 1000);
320 imageDrawStaticText.fill(Qt::white);
322 QPainter p(&imageDrawStaticText);
323 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
324 text.setTextWidth(10);
325 p.setClipRect(QRectF(11, 12, 10, 500));
326 p.drawStaticText(QPointF(11, 12), text);
329 QCOMPARE(imageDrawStaticText, imageDrawText);
332 void tst_QStaticText::translatedPainter()
334 QPixmap imageDrawText(1000, 1000);
335 imageDrawText.fill(Qt::white);
337 QPainter p(&imageDrawText);
338 p.translate(100, 200);
340 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
343 QPixmap imageDrawStaticText(1000, 1000);
344 imageDrawStaticText.fill(Qt::white);
346 QPainter p(&imageDrawStaticText);
347 p.translate(100, 200);
349 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
350 text.setTextFormat(Qt::PlainText);
352 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
355 QCOMPARE(imageDrawStaticText, imageDrawText);
358 bool tst_QStaticText::supportsTransformations() const
362 QPaintEngine *engine = p.paintEngine();
364 QPaintEngine::Type type = engine->type();
366 if (type == QPaintEngine::OpenGL
367 #if !defined(Q_WS_WIN) && !defined(Q_WS_X11) && !defined(Q_WS_MAC)
368 || type == QPaintEngine::Raster
376 void tst_QStaticText::rotatedPainter()
378 QPixmap imageDrawText(1000, 1000);
379 imageDrawText.fill(Qt::white);
381 QPainter p(&imageDrawText);
383 p.drawText(QRectF(0, 0, 1000, 100), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
386 QPixmap imageDrawStaticText(1000, 1000);
387 imageDrawStaticText.fill(Qt::white);
389 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
390 text.setTextFormat(Qt::PlainText);
392 QPainter p(&imageDrawStaticText);
394 p.drawStaticText(QPoint(0, 0), text);
397 #if defined(DEBUG_SAVE_IMAGE)
398 imageDrawText.save("rotatedPainter_imageDrawText.png");
399 imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png");
402 if (!supportsTransformations())
403 QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
404 QCOMPARE(imageDrawStaticText, imageDrawText);
407 void tst_QStaticText::scaledPainter()
409 QPixmap imageDrawText(1000, 1000);
410 imageDrawText.fill(Qt::white);
412 QPainter p(&imageDrawText);
415 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
418 QPixmap imageDrawStaticText(1000, 1000);
419 imageDrawStaticText.fill(Qt::white);
421 QPainter p(&imageDrawStaticText);
424 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
425 text.setTextFormat(Qt::PlainText);
427 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
430 if (!supportsTransformations())
431 QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
432 QCOMPARE(imageDrawStaticText, imageDrawText);
435 void tst_QStaticText::projectedPainter()
437 QTransform transform;
438 transform.rotate(90, Qt::XAxis);
440 QPixmap imageDrawText(1000, 1000);
441 imageDrawText.fill(Qt::white);
443 QPainter p(&imageDrawText);
444 p.setTransform(transform);
446 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
449 QPixmap imageDrawStaticText(1000, 1000);
450 imageDrawStaticText.fill(Qt::white);
452 QPainter p(&imageDrawStaticText);
453 p.setTransform(transform);
455 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
456 text.setTextFormat(Qt::PlainText);
458 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
461 QCOMPARE(imageDrawStaticText, imageDrawText);
465 void tst_QStaticText::rotatedScaledAndTranslatedPainter_data()
467 QTest::addColumn<qreal>("offset");
469 for (int i=0; i<100; ++i) {
470 qreal offset = 300 + i / 100.;
471 QTest::newRow(QByteArray::number(offset).constData()) << offset;
475 void tst_QStaticText::rotatedScaledAndTranslatedPainter()
477 QFETCH(qreal, offset);
479 QPixmap imageDrawText(1000, 1000);
480 imageDrawText.fill(Qt::white);
482 QPainter p(&imageDrawText);
483 p.translate(offset, 0);
486 p.translate(100, 200);
488 p.drawText(11, 12, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
491 QPixmap imageDrawStaticText(1000, 1000);
492 imageDrawStaticText.fill(Qt::white);
494 QPainter p(&imageDrawStaticText);
495 p.translate(offset, 0);
498 p.translate(100, 200);
500 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
501 text.setTextFormat(Qt::PlainText);
503 p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
506 #if defined(DEBUG_SAVE_IMAGE)
507 imageDrawText.save("rotatedScaledAndPainter_imageDrawText.png");
508 imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png");
511 if (!supportsTransformations())
512 QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
513 QCOMPARE(imageDrawStaticText, imageDrawText);
517 void tst_QStaticText::transformationChanged()
519 QPixmap imageDrawText(1000, 1000);
520 imageDrawText.fill(Qt::white);
522 QPainter p(&imageDrawText);
526 p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
529 p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
532 QPixmap imageDrawStaticText(1000, 1000);
533 imageDrawStaticText.fill(Qt::white);
535 QPainter p(&imageDrawStaticText);
539 QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
540 text.setTextFormat(Qt::PlainText);
542 p.drawStaticText(QPointF(0, 0), text);
545 p.drawStaticText(QPointF(0, 0), text);
548 #if defined(DEBUG_SAVE_IMAGE)
549 imageDrawText.save("transformationChanged_imageDrawText.png");
550 imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png");
553 if (!supportsTransformations())
554 QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
555 QCOMPARE(imageDrawStaticText, imageDrawText);
558 void tst_QStaticText::plainTextVsRichText()
560 QPixmap imagePlainText(1000, 1000);
561 imagePlainText.fill(Qt::white);
563 QPainter p(&imagePlainText);
565 QStaticText staticText;
566 staticText.setText("FOObar");
567 staticText.setTextFormat(Qt::PlainText);
569 p.drawStaticText(10, 10, staticText);
572 QPixmap imageRichText(1000, 1000);
573 imageRichText.fill(Qt::white);
575 QPainter p(&imageRichText);
577 QStaticText staticText;
578 staticText.setText("<html><body>FOObar</body></html>");
579 staticText.setTextFormat(Qt::RichText);
581 p.drawStaticText(10, 10, staticText);
584 #if defined(DEBUG_SAVE_IMAGE)
585 imagePlainText.save("plainTextVsRichText_imagePlainText.png");
586 imageRichText.save("plainTextVsRichText_imageRichText.png");
589 QCOMPARE(imagePlainText, imageRichText);
592 void tst_QStaticText::setPenPlainText()
594 QFont font = QApplication::font();
595 font.setStyleStrategy(QFont::NoAntialias);
597 QFontMetricsF fm(font);
598 QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
599 image.fill(Qt::white);
605 QStaticText staticText("XXXXX");
606 staticText.setTextFormat(Qt::PlainText);
607 p.drawStaticText(0, 0, staticText);
610 QImage img = image.toImage();
611 for (int x=0; x<img.width(); ++x) {
612 for (int y=0; y<img.height(); ++y) {
613 QRgb pixel = img.pixel(x, y);
614 QVERIFY(pixel == QColor(Qt::white).rgba()
615 || pixel == QColor(Qt::green).rgba());
620 void tst_QStaticText::setPenRichText()
622 QFont font = QApplication::font();
623 font.setStyleStrategy(QFont::NoAntialias);
625 QFontMetricsF fm(font);
626 QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
627 image.fill(Qt::white);
633 QStaticText staticText;
634 staticText.setText("<html><body>XXXXX</body></html>");
635 staticText.setTextFormat(Qt::RichText);
636 p.drawStaticText(0, 0, staticText);
639 QImage img = image.toImage();
640 for (int x=0; x<img.width(); ++x) {
641 for (int y=0; y<img.height(); ++y) {
642 QRgb pixel = img.pixel(x, y);
643 QVERIFY(pixel == QColor(Qt::white).rgba()
644 || pixel == QColor(Qt::green).rgba());
649 void tst_QStaticText::richTextOverridesPen()
651 QFont font = QApplication::font();
652 font.setStyleStrategy(QFont::NoAntialias);
654 QFontMetricsF fm(font);
655 QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
656 image.fill(Qt::white);
662 QStaticText staticText;
663 staticText.setText("<html><body><font color=\"#ff0000\">XXXXX</font></body></html>");
664 staticText.setTextFormat(Qt::RichText);
665 p.drawStaticText(0, 0, staticText);
668 QImage img = image.toImage();
669 for (int x=0; x<img.width(); ++x) {
670 for (int y=0; y<img.height(); ++y) {
671 QRgb pixel = img.pixel(x, y);
672 QVERIFY(pixel == QColor(Qt::white).rgba()
673 || pixel == QColor(Qt::red).rgba());
678 void tst_QStaticText::drawStruckOutText()
680 QPixmap imageDrawText(1000, 1000);
681 QPixmap imageDrawStaticText(1000, 1000);
683 imageDrawText.fill(Qt::white);
684 imageDrawStaticText.fill(Qt::white);
686 QString s = QString::fromLatin1("Foobar");
689 font.setStrikeOut(true);
692 QPainter p(&imageDrawText);
694 p.drawText(QPointF(50, 50), s);
698 QPainter p(&imageDrawStaticText);
699 QStaticText text = QStaticText(s);
701 p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
704 #if defined(DEBUG_SAVE_IMAGE)
705 imageDrawText.save("drawStruckOutText_imageDrawText.png");
706 imageDrawStaticText.save("drawStruckOutText_imageDrawStaticText.png");
709 QCOMPARE(imageDrawText, imageDrawStaticText);
712 void tst_QStaticText::drawOverlinedText()
714 QPixmap imageDrawText(1000, 1000);
715 QPixmap imageDrawStaticText(1000, 1000);
717 imageDrawText.fill(Qt::white);
718 imageDrawStaticText.fill(Qt::white);
720 QString s = QString::fromLatin1("Foobar");
723 font.setOverline(true);
726 QPainter p(&imageDrawText);
728 p.drawText(QPointF(50, 50), s);
732 QPainter p(&imageDrawStaticText);
733 QStaticText text = QStaticText(s);
735 p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
738 #if defined(DEBUG_SAVE_IMAGE)
739 imageDrawText.save("drawOverlinedText_imageDrawText.png");
740 imageDrawStaticText.save("drawOverlinedText_imageDrawStaticText.png");
743 QCOMPARE(imageDrawText, imageDrawStaticText);
746 void tst_QStaticText::drawUnderlinedText()
748 QPixmap imageDrawText(1000, 1000);
749 QPixmap imageDrawStaticText(1000, 1000);
751 imageDrawText.fill(Qt::white);
752 imageDrawStaticText.fill(Qt::white);
754 QString s = QString::fromLatin1("Foobar");
757 font.setUnderline(true);
760 QPainter p(&imageDrawText);
762 p.drawText(QPointF(50, 50), s);
766 QPainter p(&imageDrawStaticText);
767 QStaticText text = QStaticText(s);
769 p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
772 #if defined(DEBUG_SAVE_IMAGE)
773 imageDrawText.save("drawUnderlinedText_imageDrawText.png");
774 imageDrawStaticText.save("drawUnderlinedText_imageDrawStaticText.png");
777 QCOMPARE(imageDrawText, imageDrawStaticText);
780 void tst_QStaticText::unprintableCharacter_qtbug12614()
782 QString s(QChar(0x200B)); // U+200B, ZERO WIDTH SPACE
784 QStaticText staticText(s);
786 QVERIFY(staticText.size().isValid()); // Force layout. Should not crash.
789 void tst_QStaticText::underlinedColor_qtbug20159()
791 QString multiScriptText;
792 multiScriptText += QChar(0x0410); // Cyrillic 'A'
793 multiScriptText += QLatin1Char('A');
795 QStaticText staticText(multiScriptText);
798 font.setUnderline(true);
800 staticText.prepare(QTransform(), font);
802 QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
803 QCOMPARE(d->itemCount, 2);
805 // The pen should not be marked as dirty when drawing the underline
806 QVERIFY(!d->items[0].color.isValid());
807 QVERIFY(!d->items[1].color.isValid());
810 void tst_QStaticText::textDocumentColor()
812 QStaticText staticText("A<font color=\"red\">B</font>");
813 staticText.setTextFormat(Qt::RichText);
814 staticText.prepare();
816 QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
817 QCOMPARE(d->itemCount, 2);
819 // The pen should not be marked as dirty when drawing the underline
820 QVERIFY(!d->items[0].color.isValid());
821 QVERIFY(d->items[1].color.isValid());
823 QCOMPARE(d->items[1].color, QColor(Qt::red));
826 QTEST_MAIN(tst_QStaticText)
827 #include "tst_qstatictext.moc"