tests/auto/qstatictext/tst_qstatictext.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- a/tests/auto/qstatictext/tst_qstatictext.cpp	Fri Sep 17 08:34:18 2010 +0300
+++ b/tests/auto/qstatictext/tst_qstatictext.cpp	Mon Oct 04 01:19:32 2010 +0300
@@ -73,6 +73,8 @@
     void prepareToCorrectData();
     void prepareToWrongData();
 
+    void copyConstructor();
+
     void translatedPainter();
     void rotatedPainter();
     void scaledPainter();
@@ -85,6 +87,10 @@
     void setPenPlainText();
     void setPenRichText();
     void richTextOverridesPen();
+
+    void drawStruckOutText();
+    void drawOverlinedText();
+    void drawUnderlinedText();
 };
 
 void tst_QStaticText::init()
@@ -100,6 +106,31 @@
     QStaticText text("My text");
 }
 
+void tst_QStaticText::copyConstructor()
+{
+    QStaticText text(QLatin1String("My text"));
+
+    QTextOption textOption(Qt::AlignRight);
+    text.setTextOption(textOption);
+
+    text.setPerformanceHint(QStaticText::AggressiveCaching);
+    text.setTextWidth(123.456);
+    text.setTextFormat(Qt::PlainText);
+
+    QStaticText copiedText(text);
+    copiedText.setText(QLatin1String("Other text"));
+
+    QCOMPARE(copiedText.textOption().alignment(), Qt::AlignRight);
+    QCOMPARE(copiedText.performanceHint(), QStaticText::AggressiveCaching);
+    QCOMPARE(copiedText.textWidth(), 123.456);
+    QCOMPARE(copiedText.textFormat(), Qt::PlainText);
+
+    QStaticText otherCopiedText(copiedText);
+    otherCopiedText.setTextWidth(789);
+
+    QCOMPARE(otherCopiedText.text(), QString::fromLatin1("Other text"));
+}
+
 Q_DECLARE_METATYPE(QStaticText::PerformanceHint)
 void tst_QStaticText::drawToPoint_data()
 {
@@ -620,5 +651,107 @@
     }
 }
 
+void tst_QStaticText::drawStruckOutText()
+{
+    QPixmap imageDrawText(1000, 1000);
+    QPixmap imageDrawStaticText(1000, 1000);
+
+    imageDrawText.fill(Qt::white);
+    imageDrawStaticText.fill(Qt::white);
+
+    QString s = QString::fromLatin1("Foobar");
+
+    QFont font;
+    font.setStrikeOut(true);
+
+    {
+        QPainter p(&imageDrawText);
+        p.setFont(font);
+        p.drawText(QPointF(50, 50), s);
+    }
+
+    {
+        QPainter p(&imageDrawStaticText);
+        QStaticText text = QStaticText(s);
+        p.setFont(font);
+        p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
+    }
+
+#if defined(DEBUG_SAVE_IMAGE)
+    imageDrawText.save("drawStruckOutText_imageDrawText.png");
+    imageDrawStaticText.save("drawStruckOutText_imageDrawStaticText.png");
+#endif
+
+    QCOMPARE(imageDrawText, imageDrawStaticText);
+}
+
+void tst_QStaticText::drawOverlinedText()
+{
+    QPixmap imageDrawText(1000, 1000);
+    QPixmap imageDrawStaticText(1000, 1000);
+
+    imageDrawText.fill(Qt::white);
+    imageDrawStaticText.fill(Qt::white);
+
+    QString s = QString::fromLatin1("Foobar");
+
+    QFont font;
+    font.setOverline(true);
+
+    {
+        QPainter p(&imageDrawText);
+        p.setFont(font);
+        p.drawText(QPointF(50, 50), s);
+    }
+
+    {
+        QPainter p(&imageDrawStaticText);
+        QStaticText text = QStaticText(s);
+        p.setFont(font);
+        p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
+    }
+
+#if defined(DEBUG_SAVE_IMAGE)
+    imageDrawText.save("drawOverlinedText_imageDrawText.png");
+    imageDrawStaticText.save("drawOverlinedText_imageDrawStaticText.png");
+#endif
+
+    QCOMPARE(imageDrawText, imageDrawStaticText);
+}
+
+void tst_QStaticText::drawUnderlinedText()
+{
+    QPixmap imageDrawText(1000, 1000);
+    QPixmap imageDrawStaticText(1000, 1000);
+
+    imageDrawText.fill(Qt::white);
+    imageDrawStaticText.fill(Qt::white);
+
+    QString s = QString::fromLatin1("Foobar");
+
+    QFont font;
+    font.setUnderline(true);
+
+    {
+        QPainter p(&imageDrawText);
+        p.setFont(font);
+        p.drawText(QPointF(50, 50), s);
+    }
+
+    {
+        QPainter p(&imageDrawStaticText);
+        QStaticText text = QStaticText(s);
+        p.setFont(font);
+        p.drawStaticText(QPointF(50, 50 - QFontMetricsF(p.font()).ascent()), text);
+    }
+
+#if defined(DEBUG_SAVE_IMAGE)
+    imageDrawText.save("drawUnderlinedText_imageDrawText.png");
+    imageDrawStaticText.save("drawUnderlinedText_imageDrawStaticText.png");
+#endif
+
+    QCOMPARE(imageDrawText, imageDrawStaticText);
+}
+
 QTEST_MAIN(tst_QStaticText)
 #include "tst_qstatictext.moc"