diff options
Diffstat (limited to 'tests/auto/qtquick1/qdeclarativetext')
23 files changed, 0 insertions, 1608 deletions
diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments.qml b/tests/auto/qtquick1/qdeclarativetext/data/alignments.qml deleted file mode 100644 index 25105f6789..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments.qml +++ /dev/null @@ -1,41 +0,0 @@ -import QtQuick 1.0 - -Rectangle { - id: top - width: 70; height: 70; - - property alias horizontalAlignment: t.horizontalAlignment - property alias verticalAlignment: t.verticalAlignment - property alias wrapMode: t.wrapMode - property alias running: timer.running - property string txt: "Test" - - Rectangle { - anchors.centerIn: parent - width: 40 - height: 40 - color: "green" - - Text { - id: t - - anchors.fill: parent - horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignBottom - wrapMode: Text.WordWrap - text: top.txt - } - Timer { - id: timer - - interval: 1 - running: true - repeat: true - onTriggered: { - top.txt = top.txt + "<br>more " + top.txt.length; - if (top.txt.length > 50) - running = false - } - } - } -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_cb.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_cb.png Binary files differdeleted file mode 100644 index cf6199a418..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_cb.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_cc.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_cc.png Binary files differdeleted file mode 100644 index f81ccb4238..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_cc.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_ct.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_ct.png Binary files differdeleted file mode 100644 index 9ba64125d5..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_ct.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_lb.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_lb.png Binary files differdeleted file mode 100644 index 1b50a81f3d..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_lb.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_lc.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_lc.png Binary files differdeleted file mode 100644 index f041b868f8..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_lc.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_lt.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_lt.png Binary files differdeleted file mode 100644 index c75e0d158e..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_lt.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_rb.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_rb.png Binary files differdeleted file mode 100644 index b06a5da715..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_rb.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_rc.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_rc.png Binary files differdeleted file mode 100644 index e468857cd0..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_rc.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/alignments_rt.png b/tests/auto/qtquick1/qdeclarativetext/data/alignments_rt.png Binary files differdeleted file mode 100644 index 576715ffce..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/alignments_rt.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/elideimplicitwidth.qml b/tests/auto/qtquick1/qdeclarativetext/data/elideimplicitwidth.qml deleted file mode 100644 index 60ae15c4e1..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/elideimplicitwidth.qml +++ /dev/null @@ -1,7 +0,0 @@ -import QtQuick 1.1 - -Text { - text: "Hello World" - elide: Text.ElideRight - width: 30 -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesLocal.qml b/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesLocal.qml deleted file mode 100644 index ee9b95a2a7..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesLocal.qml +++ /dev/null @@ -1,5 +0,0 @@ -import QtQuick 1.0 - -Text { - text: "<img src='http/exists.png'>" -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesLocalError.qml b/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesLocalError.qml deleted file mode 100644 index 4dc0d3e16f..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesLocalError.qml +++ /dev/null @@ -1,5 +0,0 @@ -import QtQuick 1.0 - -Text { - text: "<img src='http/notexists.png'>" -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesRemote.qml b/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesRemote.qml deleted file mode 100644 index 438f4a06d3..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesRemote.qml +++ /dev/null @@ -1,5 +0,0 @@ -import QtQuick 1.0 - -Text { - text: "<img src='http://127.0.0.1:14453/exists.png'>" -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesRemoteError.qml b/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesRemoteError.qml deleted file mode 100644 index c24bf24f9c..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/embeddedImagesRemoteError.qml +++ /dev/null @@ -1,5 +0,0 @@ -import QtQuick 1.0 - -Text { - text: "<img src='http://127.0.0.1:14453/notexists.png'>" -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/horizontalAlignment_RightToLeft.qml b/tests/auto/qtquick1/qdeclarativetext/data/horizontalAlignment_RightToLeft.qml deleted file mode 100644 index 4f58944672..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/horizontalAlignment_RightToLeft.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick 1.0 - -Rectangle { - id: top - width: 200; height: 70; - - property alias horizontalAlignment: text.horizontalAlignment - property string text: "اختبا" - - Rectangle { - anchors.centerIn: parent - width: 180 - height: 20 - color: "green" - - Text { - id: text - objectName: "text" - anchors.fill: parent - text: top.text - } - } -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/http/exists.png b/tests/auto/qtquick1/qdeclarativetext/data/http/exists.png Binary files differdeleted file mode 100644 index 399bd0b1d9..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/http/exists.png +++ /dev/null diff --git a/tests/auto/qtquick1/qdeclarativetext/data/lineCount.qml b/tests/auto/qtquick1/qdeclarativetext/data/lineCount.qml deleted file mode 100644 index 63817f6f2a..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/lineCount.qml +++ /dev/null @@ -1,15 +0,0 @@ -import QtQuick 1.1 - -Item { - width: 200 - height: 200 - - Text { - id: myText - objectName: "myText" - width: 200 - wrapMode: Text.WordWrap - maximumLineCount: undefined - text: "Testing that maximumLines, visibleLines, and totalLines works properly in the autotests. The quick brown fox jumped over the lazy anything with the letter 'g'." - } -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/lineHeight.qml b/tests/auto/qtquick1/qdeclarativetext/data/lineHeight.qml deleted file mode 100644 index 851d871192..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/lineHeight.qml +++ /dev/null @@ -1,15 +0,0 @@ -import QtQuick 1.1 - -Item { - width: 200 - height: 200 - - Text { - id: myText - objectName: "myText" - width: 200 - wrapMode: Text.WordWrap - font.pixelSize: 13 - text: "Lorem ipsum sit amet, consectetur adipiscing elit. Integer felis nisl, varius in pretium nec, venenatis non erat. Proin lobortis interdum dictum." - } -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/qtbug_14734.qml b/tests/auto/qtquick1/qdeclarativetext/data/qtbug_14734.qml deleted file mode 100644 index bd07d66727..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/qtbug_14734.qml +++ /dev/null @@ -1,10 +0,0 @@ -import QtQuick 1.0 - -Rectangle { - width: 640 - height: 480 - - Text { - text: "Ã " - } -} diff --git a/tests/auto/qtquick1/qdeclarativetext/data/rotated.qml b/tests/auto/qtquick1/qdeclarativetext/data/rotated.qml deleted file mode 100644 index 1e893b93fc..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/data/rotated.qml +++ /dev/null @@ -1,18 +0,0 @@ -import QtQuick 1.0 - -Rectangle { - width : 200 - height : 100 - - Text { - objectName: "text" - x: 20 - y: 20 - height : 20 - width : 80 - text : "Something" - rotation : 30 - transformOrigin : Item.TopLeft - } -} - diff --git a/tests/auto/qtquick1/qdeclarativetext/qdeclarativetext.pro b/tests/auto/qtquick1/qdeclarativetext/qdeclarativetext.pro deleted file mode 100644 index 1957bdd9fd..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/qdeclarativetext.pro +++ /dev/null @@ -1,15 +0,0 @@ -CONFIG += testcase -TARGET = tst_qdeclarativetext -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativetext.cpp - -INCLUDEPATH += ../../shared/ -HEADERS += ../../shared/testhttpserver.h -SOURCES += ../../shared/testhttpserver.cpp - -DEFINES += SRCDIR=\\\"$$PWD\\\" - -CONFIG += parallel_test - -QT += core-private gui-private widgets-private v8-private declarative-private qtquick1-private network testlib diff --git a/tests/auto/qtquick1/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/qtquick1/qdeclarativetext/tst_qdeclarativetext.cpp deleted file mode 100644 index 2145d77d6e..0000000000 --- a/tests/auto/qtquick1/qdeclarativetext/tst_qdeclarativetext.cpp +++ /dev/null @@ -1,1444 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include <QTextDocument> -#include <QtDeclarative/qdeclarativeengine.h> -#include <QtDeclarative/qdeclarativecomponent.h> -#include <QtQuick1/private/qdeclarativetext_p.h> -#include <QtQuick1/private/qdeclarativetext_p_p.h> -#include <private/qdeclarativevaluetype_p.h> -#include <QFontMetrics> -#include <QGraphicsSceneMouseEvent> -#include <qmath.h> -#include <QtQuick1/QDeclarativeView> -#include <private/qapplication_p.h> -#include <limits.h> - -#include "testhttpserver.h" - -class tst_qdeclarativetext : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativetext(); - -private slots: - void text(); - void width(); - void wrap(); - void elide(); - void textFormat(); - - void alignments_data(); - void alignments(); - - void embeddedImages_data(); - void embeddedImages(); - - void lineCount(); - void lineHeight(); - - // ### these tests may be trivial - void horizontalAlignment(); - void horizontalAlignment_RightToLeft(); - void verticalAlignment(); - void font(); - void style(); - void color(); - void smooth(); - - // QDeclarativeFontValueType - void weight(); - void underline(); - void overline(); - void strikeout(); - void capitalization(); - void letterSpacing(); - void wordSpacing(); - - void clickLink(); - - void QTBUG_12291(); - void implicitSize_data(); - void implicitSize(); - void testQtQuick11Attributes(); - void testQtQuick11Attributes_data(); - - void qtbug_14734(); -private: - QStringList standard; - QStringList richText; - - QStringList horizontalAlignmentmentStrings; - QStringList verticalAlignmentmentStrings; - - QList<Qt::Alignment> verticalAlignmentments; - QList<Qt::Alignment> horizontalAlignmentments; - - QStringList styleStrings; - QList<QDeclarative1Text::TextStyle> styles; - - QStringList colorStrings; - - QDeclarativeEngine engine; - - QDeclarativeView *createView(const QString &filename); -}; - -tst_qdeclarativetext::tst_qdeclarativetext() -{ - standard << "the quick brown fox jumped over the lazy dog" - << "the quick brown fox\n jumped over the lazy dog"; - - richText << "<i>the <b>quick</b> brown <a href=\\\"http://www.google.com\\\">fox</a> jumped over the <b>lazy</b> dog</i>" - << "<i>the <b>quick</b> brown <a href=\\\"http://www.google.com\\\">fox</a><br>jumped over the <b>lazy</b> dog</i>"; - - horizontalAlignmentmentStrings << "AlignLeft" - << "AlignRight" - << "AlignHCenter"; - - verticalAlignmentmentStrings << "AlignTop" - << "AlignBottom" - << "AlignVCenter"; - - horizontalAlignmentments << Qt::AlignLeft - << Qt::AlignRight - << Qt::AlignHCenter; - - verticalAlignmentments << Qt::AlignTop - << Qt::AlignBottom - << Qt::AlignVCenter; - - styleStrings << "Normal" - << "Outline" - << "Raised" - << "Sunken"; - - styles << QDeclarative1Text::Normal - << QDeclarative1Text::Outline - << QDeclarative1Text::Raised - << QDeclarative1Text::Sunken; - - colorStrings << "aliceblue" - << "antiquewhite" - << "aqua" - << "darkkhaki" - << "darkolivegreen" - << "dimgray" - << "palevioletred" - << "lightsteelblue" - << "#000000" - << "#AAAAAA" - << "#FFFFFF" - << "#2AC05F"; - // - // need a different test to do alpha channel test - // << "#AA0011DD" - // << "#00F16B11"; - // -} - -QDeclarativeView *tst_qdeclarativetext::createView(const QString &filename) -{ - QDeclarativeView *canvas = new QDeclarativeView(0); - - canvas->setSource(QUrl::fromLocalFile(filename)); - return canvas; -} - -void tst_qdeclarativetext::text() -{ - { - QDeclarativeComponent textComponent(&engine); - textComponent.setData("import QtQuick 1.0\nText { text: \"\" }", QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->text(), QString("")); - QVERIFY(textObject->width() == 0); - - delete textObject; - } - - for (int i = 0; i < standard.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->text(), standard.at(i)); - QVERIFY(textObject->width() > 0); - - delete textObject; - } - - for (int i = 0; i < richText.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QString expected = richText.at(i); - QCOMPARE(textObject->text(), expected.replace("\\\"", "\"")); - QVERIFY(textObject->width() > 0); - - delete textObject; - } -} - -void tst_qdeclarativetext::width() -{ - // uses Font metrics to find the width for standard and document to find the width for rich - { - QDeclarativeComponent textComponent(&engine); - textComponent.setData("import QtQuick 1.0\nText { text: \"\" }", QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->width(), 0.); - - delete textObject; - } - - for (int i = 0; i < standard.size(); i++) - { - QVERIFY(!Qt::mightBeRichText(standard.at(i))); // self-test - - QFont f; - QFontMetricsF fm(f); - qreal metricWidth = fm.size(Qt::TextExpandTabs && Qt::TextShowMnemonic, standard.at(i)).width(); - metricWidth = qCeil(metricWidth); - - QString componentStr = "import QtQuick 1.0\nText { text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QVERIFY(textObject->boundingRect().width() > 0); - QCOMPARE(textObject->width(), qreal(metricWidth)); - QVERIFY(textObject->textFormat() == QDeclarative1Text::AutoText); // setting text doesn't change format - - delete textObject; - } - - for (int i = 0; i < richText.size(); i++) - { - QVERIFY(Qt::mightBeRichText(richText.at(i))); // self-test - - QTextDocument document; - document.setHtml(richText.at(i)); - document.setDocumentMargin(0); - - int documentWidth = document.idealWidth(); - - QString componentStr = "import QtQuick 1.0\nText { text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->width(), qreal(documentWidth)); - QVERIFY(textObject->textFormat() == QDeclarative1Text::AutoText); // setting text doesn't change format - - delete textObject; - } -} - -void tst_qdeclarativetext::wrap() -{ - int textHeight = 0; - // for specified width and wrap set true - { - QDeclarativeComponent textComponent(&engine); - textComponent.setData("import QtQuick 1.0\nText { text: \"Hello\"; wrapMode: Text.WordWrap; width: 300 }", QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - textHeight = textObject->height(); - - QVERIFY(textObject != 0); - QVERIFY(textObject->wrapMode() == QDeclarative1Text::WordWrap); - QCOMPARE(textObject->width(), 300.); - - delete textObject; - } - - for (int i = 0; i < standard.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { wrapMode: Text.WordWrap; width: 30; text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->width(), 30.); - QVERIFY(textObject->height() > textHeight); - - int oldHeight = textObject->height(); - textObject->setWidth(100); - QVERIFY(textObject->height() < oldHeight); - - delete textObject; - } - - for (int i = 0; i < richText.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { wrapMode: Text.WordWrap; width: 30; text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->width(), 30.); - QVERIFY(textObject->height() > textHeight); - - qreal oldHeight = textObject->height(); - textObject->setWidth(100); - QVERIFY(textObject->height() < oldHeight); - - delete textObject; - } - - // richtext again with a fixed height - for (int i = 0; i < richText.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { wrapMode: Text.WordWrap; width: 30; height: 50; text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->width(), 30.); - QVERIFY(textObject->implicitHeight() > textHeight); - - qreal oldHeight = textObject->implicitHeight(); - textObject->setWidth(100); - QVERIFY(textObject->implicitHeight() < oldHeight); - - delete textObject; - } -} - -void tst_qdeclarativetext::elide() -{ - for (QDeclarative1Text::TextElideMode m = QDeclarative1Text::ElideLeft; m<=QDeclarative1Text::ElideNone; m=QDeclarative1Text::TextElideMode(int(m)+1)) { - const char* elidename[]={"ElideLeft", "ElideRight", "ElideMiddle", "ElideNone"}; - QString elide = "elide: Text." + QString(elidename[int(m)]) + ";"; - - // XXX Poor coverage. - - { - QDeclarativeComponent textComponent(&engine); - textComponent.setData(("import QtQuick 1.0\nText { text: \"\"; "+elide+" width: 100 }").toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->elideMode(), m); - QCOMPARE(textObject->width(), 100.); - - delete textObject; - } - - for (int i = 0; i < standard.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { "+elide+" width: 100; text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->elideMode(), m); - QCOMPARE(textObject->width(), 100.); - - delete textObject; - } - - // richtext - does nothing - for (int i = 0; i < richText.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { "+elide+" width: 100; text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->elideMode(), m); - QCOMPARE(textObject->width(), 100.); - - delete textObject; - } - } - - // QTBUG-18627 - QUrl qmlfile = QUrl::fromLocalFile(SRCDIR "/data/elideimplicitwidth.qml"); - QDeclarativeComponent textComponent(&engine, qmlfile); - QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(textComponent.create()); - QVERIFY(item != 0); - QVERIFY(item->implicitWidth() > item->width()); -} - -void tst_qdeclarativetext::textFormat() -{ - { - QDeclarativeComponent textComponent(&engine); - textComponent.setData("import QtQuick 1.0\nText { text: \"Hello\"; textFormat: Text.RichText }", QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QVERIFY(textObject->textFormat() == QDeclarative1Text::RichText); - - delete textObject; - } - { - QDeclarativeComponent textComponent(&engine); - textComponent.setData("import QtQuick 1.0\nText { text: \"<b>Hello</b>\"; textFormat: Text.PlainText }", QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QVERIFY(textObject->textFormat() == QDeclarative1Text::PlainText); - - delete textObject; - } -} - - -void tst_qdeclarativetext::alignments_data() -{ - QTest::addColumn<int>("hAlign"); - QTest::addColumn<int>("vAlign"); - QTest::addColumn<QString>("expectfile"); - - QTest::newRow("LT") << int(Qt::AlignLeft) << int(Qt::AlignTop) << SRCDIR "/data/alignments_lt.png"; - QTest::newRow("RT") << int(Qt::AlignRight) << int(Qt::AlignTop) << SRCDIR "/data/alignments_rt.png"; - QTest::newRow("CT") << int(Qt::AlignHCenter) << int(Qt::AlignTop) << SRCDIR "/data/alignments_ct.png"; - - QTest::newRow("LB") << int(Qt::AlignLeft) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_lb.png"; - QTest::newRow("RB") << int(Qt::AlignRight) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_rb.png"; - QTest::newRow("CB") << int(Qt::AlignHCenter) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_cb.png"; - - QTest::newRow("LC") << int(Qt::AlignLeft) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_lc.png"; - QTest::newRow("RC") << int(Qt::AlignRight) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_rc.png"; - QTest::newRow("CC") << int(Qt::AlignHCenter) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_cc.png"; -} - - -void tst_qdeclarativetext::alignments() -{ - QFETCH(int, hAlign); - QFETCH(int, vAlign); - QFETCH(QString, expectfile); - -#ifdef Q_WS_X11 - // Font-specific, but not likely platform-specific, so only test on one platform - QFont fn; - fn.setRawName("-misc-fixed-medium-r-*-*-8-*-*-*-*-*-*-*"); - QApplication::setFont(fn); -#endif - - QDeclarativeView *canvas = createView(SRCDIR "/data/alignments.qml"); - - canvas->show(); - QApplication::setActiveWindow(canvas); - QTest::qWaitForWindowShown(canvas); - QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(canvas)); - - QObject *ob = canvas->rootObject(); - QVERIFY(ob != 0); - ob->setProperty("horizontalAlignment",hAlign); - ob->setProperty("verticalAlignment",vAlign); - QTRY_COMPARE(ob->property("running").toBool(),false); - QImage actual(canvas->width(), canvas->height(), QImage::Format_RGB32); - actual.fill(qRgb(255,255,255)); - QPainter p(&actual); - canvas->render(&p); - - QImage expect(expectfile); - -#ifdef Q_WS_X11 - // Font-specific, but not likely platform-specific, so only test on one platform - if (QApplicationPrivate::graphics_system_name == "raster" || QApplicationPrivate::graphics_system_name == "") { - QCOMPARE(actual,expect); - } -#endif - - delete canvas; -} - -//the alignment tests may be trivial o.oa -void tst_qdeclarativetext::horizontalAlignment() -{ - //test one align each, and then test if two align fails. - - for (int i = 0; i < standard.size(); i++) - { - for (int j=0; j < horizontalAlignmentmentStrings.size(); j++) - { - QString componentStr = "import QtQuick 1.0\nText { horizontalAlignment: \"" + horizontalAlignmentmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE((int)textObject->hAlign(), (int)horizontalAlignmentments.at(j)); - - delete textObject; - } - } - - for (int i = 0; i < richText.size(); i++) - { - for (int j=0; j < horizontalAlignmentmentStrings.size(); j++) - { - QString componentStr = "import QtQuick 1.0\nText { horizontalAlignment: \"" + horizontalAlignmentmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE((int)textObject->hAlign(), (int)horizontalAlignmentments.at(j)); - - delete textObject; - } - } - -} - -void tst_qdeclarativetext::horizontalAlignment_RightToLeft() -{ - QDeclarativeView *canvas = createView(SRCDIR "/data/horizontalAlignment_RightToLeft.qml"); - QDeclarative1Text *text = canvas->rootObject()->findChild<QDeclarative1Text*>("text"); - QVERIFY(text != 0); - canvas->show(); - - QDeclarative1TextPrivate *textPrivate = QDeclarative1TextPrivate::get(text); - QVERIFY(textPrivate != 0); - - // implicit alignment should follow the reading direction of RTL text - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() > canvas->width()/2); - - // explicitly left aligned text - text->setHAlign(QDeclarative1Text::AlignLeft); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignLeft); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() < canvas->width()/2); - - // explicitly right aligned text - text->setHAlign(QDeclarative1Text::AlignRight); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() > canvas->width()/2); - - // change to rich text - QString textString = text->text(); - text->setText(QString("<i>") + textString + QString("</i>")); - text->setTextFormat(QDeclarative1Text::RichText); - text->resetHAlign(); - - // implicitly aligned rich text should follow the reading direction of text - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->textDocument()->defaultTextOption().alignment() & Qt::AlignLeft); - - // explicitly left aligned rich text - text->setHAlign(QDeclarative1Text::AlignLeft); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignLeft); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->textDocument()->defaultTextOption().alignment() & Qt::AlignRight); - - // explicitly right aligned rich text - text->setHAlign(QDeclarative1Text::AlignRight); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->textDocument()->defaultTextOption().alignment() & Qt::AlignLeft); - - text->setText(textString); - text->setTextFormat(QDeclarative1Text::PlainText); - - // explicitly center aligned - text->setHAlign(QDeclarative1Text::AlignHCenter); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignHCenter); - QCOMPARE(text->effectiveHAlign(), text->hAlign()); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() < canvas->width()/2); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().right() > canvas->width()/2); - - // reseted alignment should go back to following the text reading direction - text->resetHAlign(); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() > canvas->width()/2); - - // mirror the text item - QDeclarativeItemPrivate::get(text)->setLayoutMirror(true); - - // mirrored implicit alignment should continue to follow the reading direction of the text - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QCOMPARE(text->effectiveHAlign(), QDeclarative1Text::AlignRight); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() > canvas->width()/2); - - // mirrored explicitly right aligned behaves as left aligned - text->setHAlign(QDeclarative1Text::AlignRight); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); - QCOMPARE(text->effectiveHAlign(), QDeclarative1Text::AlignLeft); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() < canvas->width()/2); - - // mirrored explicitly left aligned behaves as right aligned - text->setHAlign(QDeclarative1Text::AlignLeft); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignLeft); - QCOMPARE(text->effectiveHAlign(), QDeclarative1Text::AlignRight); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() > canvas->width()/2); - - // disable mirroring - QDeclarativeItemPrivate::get(text)->setLayoutMirror(false); - text->resetHAlign(); - - // English text should be implicitly left aligned - text->setText("Hello world!"); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignLeft); - QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().left() < canvas->width()/2); - -#ifndef Q_OS_MAC // QTBUG-18040 - // empty text with implicit alignment follows the system locale-based - // keyboard input direction from QInputpanel::inputDirection - text->setText(""); - QCOMPARE(text->hAlign(), qApp->inputPanel()->inputDirection() == Qt::LeftToRight ? - QDeclarative1Text::AlignLeft : QDeclarative1Text::AlignRight); - text->setHAlign(QDeclarative1Text::AlignRight); - QCOMPARE(text->hAlign(), QDeclarative1Text::AlignRight); -#endif - - delete canvas; - -#ifndef Q_OS_MAC // QTBUG-18040 - // alignment of Text with no text set to it - QString componentStr = "import QtQuick 1.0\nText {}"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - QCOMPARE(textObject->hAlign(), qApp->inputPanel()->inputDirection() == Qt::LeftToRight ? - QDeclarative1Text::AlignLeft : QDeclarative1Text::AlignRight); - delete textObject; -#endif -} - -void tst_qdeclarativetext::verticalAlignment() -{ - //test one align each, and then test if two align fails. - - for (int i = 0; i < standard.size(); i++) - { - for (int j=0; j < verticalAlignmentmentStrings.size(); j++) - { - QString componentStr = "import QtQuick 1.0\nText { verticalAlignment: \"" + verticalAlignmentmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->vAlign(), (int)verticalAlignmentments.at(j)); - - delete textObject; - } - } - - for (int i = 0; i < richText.size(); i++) - { - for (int j=0; j < verticalAlignmentmentStrings.size(); j++) - { - QString componentStr = "import QtQuick 1.0\nText { verticalAlignment: \"" + verticalAlignmentmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->vAlign(), (int)verticalAlignmentments.at(j)); - - delete textObject; - } - } - - //confirm that bounding rect is correctly positioned. - QString componentStr = "import QtQuick 1.0\nText { height: 80; text: \"Hello\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - QVERIFY(textObject != 0); - QRectF br = textObject->boundingRect(); - QVERIFY(br.y() == 0); - - textObject->setVAlign(QDeclarative1Text::AlignVCenter); - br = textObject->boundingRect(); - QCOMPARE(qFloor(br.y()), qFloor((80.0 - br.height())/2)); - - textObject->setVAlign(QDeclarative1Text::AlignBottom); - br = textObject->boundingRect(); - QCOMPARE(qFloor(br.y()), qFloor(80.0 - br.height())); - - delete textObject; -} - -void tst_qdeclarativetext::font() -{ - //test size, then bold, then italic, then family - { - QString componentStr = "import QtQuick 1.0\nText { font.pointSize: 40; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->font().pointSize(), 40); - QCOMPARE(textObject->font().bold(), false); - QCOMPARE(textObject->font().italic(), false); - - delete textObject; - } - - { - QString componentStr = "import QtQuick 1.0\nText { font.pixelSize: 40; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->font().pixelSize(), 40); - QCOMPARE(textObject->font().bold(), false); - QCOMPARE(textObject->font().italic(), false); - - delete textObject; - } - - { - QString componentStr = "import QtQuick 1.0\nText { font.bold: true; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->font().bold(), true); - QCOMPARE(textObject->font().italic(), false); - - delete textObject; - } - - { - QString componentStr = "import QtQuick 1.0\nText { font.italic: true; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->font().italic(), true); - QCOMPARE(textObject->font().bold(), false); - - delete textObject; - } - - { - QString componentStr = "import QtQuick 1.0\nText { font.family: \"Helvetica\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->font().family(), QString("Helvetica")); - QCOMPARE(textObject->font().bold(), false); - QCOMPARE(textObject->font().italic(), false); - - delete textObject; - } - - { - QString componentStr = "import QtQuick 1.0\nText { font.family: \"\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->font().family(), QString("")); - - delete textObject; - } -} - -void tst_qdeclarativetext::style() -{ - //test style - for (int i = 0; i < styles.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { style: \"" + styleStrings.at(i) + "\"; styleColor: \"white\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE((int)textObject->style(), (int)styles.at(i)); - QCOMPARE(textObject->styleColor(), QColor("white")); - - delete textObject; - } - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QRectF brPre = textObject->boundingRect(); - textObject->setStyle(QDeclarative1Text::Outline); - QRectF brPost = textObject->boundingRect(); - - QVERIFY(brPre.width() < brPost.width()); - QVERIFY(brPre.height() < brPost.height()); - - delete textObject; -} - -void tst_qdeclarativetext::color() -{ - //test style - for (int i = 0; i < colorStrings.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->color(), QColor(colorStrings.at(i))); - QCOMPARE(textObject->styleColor(), QColor()); - - delete textObject; - } - - for (int i = 0; i < colorStrings.size(); i++) - { - QString componentStr = "import QtQuick 1.0\nText { styleColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->styleColor(), QColor(colorStrings.at(i))); - // default color to black? - QCOMPARE(textObject->color(), QColor("black")); - - delete textObject; - } - - for (int i = 0; i < colorStrings.size(); i++) - { - for (int j = 0; j < colorStrings.size(); j++) - { - QString componentStr = "import QtQuick 1.0\nText { color: \"" + colorStrings.at(i) + "\"; styleColor: \"" + colorStrings.at(j) + "\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->color(), QColor(colorStrings.at(i))); - QCOMPARE(textObject->styleColor(), QColor(colorStrings.at(j))); - - delete textObject; - } - } - { - QString colorStr = "#AA001234"; - QColor testColor("#001234"); - testColor.setAlpha(170); - - QString componentStr = "import QtQuick 1.0\nText { color: \"" + colorStr + "\"; text: \"Hello World\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QCOMPARE(textObject->color(), testColor); - - delete textObject; - } -} - -void tst_qdeclarativetext::smooth() -{ - for (int i = 0; i < standard.size(); i++) - { - { - QString componentStr = "import QtQuick 1.0\nText { smooth: true; text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - QCOMPARE(textObject->smooth(), true); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"" + standard.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - QCOMPARE(textObject->smooth(), false); - - delete textObject; - } - } - for (int i = 0; i < richText.size(); i++) - { - { - QString componentStr = "import QtQuick 1.0\nText { smooth: true; text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - QCOMPARE(textObject->smooth(), true); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"" + richText.at(i) + "\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - QCOMPARE(textObject->smooth(), false); - - delete textObject; - } - } -} - -void tst_qdeclarativetext::weight() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().weight(), (int)QDeclarativeFontValueType::Normal); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { font.weight: \"Bold\"; text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().weight(), (int)QDeclarativeFontValueType::Bold); - - delete textObject; - } -} - -void tst_qdeclarativetext::underline() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().underline(), false); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { font.underline: true; text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().underline(), true); - - delete textObject; - } -} - -void tst_qdeclarativetext::overline() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().overline(), false); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { font.overline: true; text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().overline(), true); - - delete textObject; - } -} - -void tst_qdeclarativetext::strikeout() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().strikeOut(), false); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { font.strikeout: true; text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().strikeOut(), true); - - delete textObject; - } -} - -void tst_qdeclarativetext::capitalization() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::MixedCase); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.capitalization: \"AllUppercase\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::AllUppercase); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.capitalization: \"AllLowercase\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::AllLowercase); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.capitalization: \"SmallCaps\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::SmallCaps); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.capitalization: \"Capitalize\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::Capitalize); - - delete textObject; - } -} - -void tst_qdeclarativetext::letterSpacing() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().letterSpacing(), 0.0); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.letterSpacing: -2 }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().letterSpacing(), -2.); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.letterSpacing: 3 }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().letterSpacing(), 3.); - - delete textObject; - } -} - -void tst_qdeclarativetext::wordSpacing() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().wordSpacing(), 0.0); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.wordSpacing: -50 }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().wordSpacing(), -50.); - - delete textObject; - } - { - QString componentStr = "import QtQuick 1.0\nText { text: \"Hello world!\"; font.wordSpacing: 200 }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - QCOMPARE(textObject->font().wordSpacing(), 200.); - - delete textObject; - } -} - -void tst_qdeclarativetext::QTBUG_12291() -{ - QDeclarativeView *canvas = createView(SRCDIR "/data/rotated.qml"); - - canvas->show(); - QApplication::setActiveWindow(canvas); - QTest::qWaitForWindowShown(canvas); - QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(canvas)); - - QObject *ob = canvas->rootObject(); - QVERIFY(ob != 0); - - QDeclarative1Text *text = ob->findChild<QDeclarative1Text*>("text"); - QVERIFY(text); - QVERIFY(text->boundingRect().isValid()); - - delete canvas; -} - -class EventSender : public QGraphicsItem -{ -public: - void sendEvent(QEvent *event) { sceneEvent(event); } -}; - -class LinkTest : public QObject -{ - Q_OBJECT -public: - LinkTest() {} - - QString link; - -public slots: - void linkClicked(QString l) { link = l; } -}; - -void tst_qdeclarativetext::clickLink() -{ - { - QString componentStr = "import QtQuick 1.0\nText { text: \"<a href=\\\"http://qt.nokia.com\\\">Hello world!</a>\" }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - - LinkTest test; - QObject::connect(textObject, SIGNAL(linkActivated(QString)), &test, SLOT(linkClicked(QString))); - - { - QGraphicsSceneMouseEvent me(QEvent::GraphicsSceneMousePress); - me.setPos(QPointF(textObject->x()/2, textObject->y()/2)); - me.setButton(Qt::LeftButton); - static_cast<EventSender*>(static_cast<QGraphicsItem*>(textObject))->sendEvent(&me); - } - - { - QGraphicsSceneMouseEvent me(QEvent::GraphicsSceneMouseRelease); - me.setPos(QPointF(textObject->x()/2, textObject->y()/2)); - me.setButton(Qt::LeftButton); - static_cast<EventSender*>(static_cast<QGraphicsItem*>(textObject))->sendEvent(&me); - } - - QCOMPARE(test.link, QLatin1String("http://qt.nokia.com")); - - delete textObject; - } -} - -void tst_qdeclarativetext::embeddedImages_data() -{ - QTest::addColumn<QUrl>("qmlfile"); - QTest::addColumn<QString>("error"); - QTest::newRow("local") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocal.qml") << ""; - QTest::newRow("local-error") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocalError.qml") - << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocalError.qml").toString()+":3:1: QML Text: Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/http/notexists.png").toString(); - QTest::newRow("remote") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemote.qml") << ""; - QTest::newRow("remote-error") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemoteError.qml") - << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemoteError.qml").toString()+":3:1: QML Text: Error downloading http://127.0.0.1:14453/notexists.png - server replied: Not found"; -} - -void tst_qdeclarativetext::embeddedImages() -{ - // Tests QTBUG-9900 - - QFETCH(QUrl, qmlfile); - QFETCH(QString, error); - - TestHTTPServer server(14453); - server.serveDirectory(SRCDIR "/data/http"); - - if (!error.isEmpty()) - QTest::ignoreMessage(QtWarningMsg, error.toLatin1()); - - QDeclarativeComponent textComponent(&engine, qmlfile); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject != 0); - - QTRY_COMPARE(textObject->resourcesLoading(), 0); - - QPixmap pm(SRCDIR "/data/http/exists.png"); - if (error.isEmpty()) { - QCOMPARE(textObject->width(), double(pm.width())); - QCOMPARE(textObject->height(), double(pm.height())); - } else { - QVERIFY(16 != pm.width()); // check test is effective - QCOMPARE(textObject->width(), 16.0); // default size of QTextDocument broken image icon - QCOMPARE(textObject->height(), 16.0); - } - - delete textObject; -} - -void tst_qdeclarativetext::lineCount() -{ - QDeclarativeView *canvas = createView(SRCDIR "/data/lineCount.qml"); - - QDeclarative1Text *myText = canvas->rootObject()->findChild<QDeclarative1Text*>("myText"); - QVERIFY(myText != 0); - - QVERIFY(myText->lineCount() > 1); - QVERIFY(!myText->truncated()); - QCOMPARE(myText->maximumLineCount(), INT_MAX); - - myText->setMaximumLineCount(2); - QCOMPARE(myText->lineCount(), 2); - QCOMPARE(myText->truncated(), true); - QCOMPARE(myText->maximumLineCount(), 2); - - myText->resetMaximumLineCount(); - QCOMPARE(myText->maximumLineCount(), INT_MAX); - QCOMPARE(myText->truncated(), false); - - myText->setElideMode(QDeclarative1Text::ElideRight); - myText->setMaximumLineCount(2); - QCOMPARE(myText->lineCount(), 2); - QCOMPARE(myText->truncated(), true); - QCOMPARE(myText->maximumLineCount(), 2); - - delete canvas; -} - -void tst_qdeclarativetext::lineHeight() -{ - QDeclarativeView *canvas = createView(SRCDIR "/data/lineHeight.qml"); - - QDeclarative1Text *myText = canvas->rootObject()->findChild<QDeclarative1Text*>("myText"); - QVERIFY(myText != 0); - - QVERIFY(myText->lineHeight() == 1); - QVERIFY(myText->lineHeightMode() == QDeclarative1Text::ProportionalHeight); - - qreal h = myText->height(); - myText->setLineHeight(1.5); - QEXPECT_FAIL("", "QTBUG-21015 fails", Continue); - QVERIFY(myText->height() == h * 1.5); - - myText->setLineHeightMode(QDeclarative1Text::FixedHeight); - myText->setLineHeight(20); - QCOMPARE(myText->height(), myText->lineCount() * 20.0); - - myText->setText("Lorem ipsum sit <b>amet</b>, consectetur adipiscing elit. Integer felis nisl, varius in pretium nec, venenatis non erat. Proin lobortis interdum dictum."); - myText->setLineHeightMode(QDeclarative1Text::ProportionalHeight); - myText->setLineHeight(1.0); - - qreal h2 = myText->height(); - myText->setLineHeight(2.0); - QEXPECT_FAIL("", "QTBUG-17325", Continue); - QVERIFY(myText->height() == h2 * 2.0); - - myText->setLineHeightMode(QDeclarative1Text::FixedHeight); - myText->setLineHeight(10); - QEXPECT_FAIL("", "QTBUG-17325", Continue); - QCOMPARE(myText->height(), myText->lineCount() * 10.0); - - delete canvas; -} - -void tst_qdeclarativetext::implicitSize_data() -{ - QTest::addColumn<QString>("text"); - QTest::addColumn<QString>("wrap"); - QTest::newRow("plain") << "The quick red fox jumped over the lazy brown dog" << "Text.NoWrap"; - QTest::newRow("richtext") << "<b>The quick red fox jumped over the lazy brown dog</b>" << "Text.NoWrap"; - QTest::newRow("plain_wrap") << "The quick red fox jumped over the lazy brown dog" << "Text.Wrap"; - QTest::newRow("richtext_wrap") << "<b>The quick red fox jumped over the lazy brown dog</b>" << "Text.Wrap"; -} - -void tst_qdeclarativetext::implicitSize() -{ - QFETCH(QString, text); - QFETCH(QString, wrap); - QString componentStr = "import QtQuick 1.1\nText { text: \"" + text + "\"; width: 50; wrapMode: " + wrap + " }"; - QDeclarativeComponent textComponent(&engine); - textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - QDeclarative1Text *textObject = qobject_cast<QDeclarative1Text*>(textComponent.create()); - - QVERIFY(textObject->width() < textObject->implicitWidth()); - QVERIFY(textObject->height() == textObject->implicitHeight()); - - textObject->resetWidth(); - QVERIFY(textObject->width() == textObject->implicitWidth()); - QVERIFY(textObject->height() == textObject->implicitHeight()); - - delete textObject; -} - -void tst_qdeclarativetext::testQtQuick11Attributes() -{ - QFETCH(QString, code); - QFETCH(QString, warning); - QFETCH(QString, error); - - QDeclarativeEngine engine; - QObject *obj; - - QDeclarativeComponent valid(&engine); - valid.setData("import QtQuick 1.1; Text { " + code.toUtf8() + " }", QUrl("")); - obj = valid.create(); - QVERIFY(obj); - QVERIFY(valid.errorString().isEmpty()); - delete obj; - - QDeclarativeComponent invalid(&engine); - invalid.setData("import QtQuick 1.0; Text { " + code.toUtf8() + " }", QUrl("")); - QTest::ignoreMessage(QtWarningMsg, warning.toUtf8()); - obj = invalid.create(); - QCOMPARE(invalid.errorString(), error); - delete obj; -} - -void tst_qdeclarativetext::testQtQuick11Attributes_data() -{ - QTest::addColumn<QString>("code"); - QTest::addColumn<QString>("warning"); - QTest::addColumn<QString>("error"); - - QTest::newRow("maximumLineCount") << "maximumLineCount: 4" - << "QDeclarativeComponent: Component is not ready" - << ":1 \"Text.maximumLineCount\" is not available in QtQuick 1.0.\n"; - - QTest::newRow("lineHeight") << "lineHeight: 2" - << "QDeclarativeComponent: Component is not ready" - << ":1 \"Text.lineHeight\" is not available in QtQuick 1.0.\n"; - - QTest::newRow("lineHeightMode") << "lineHeightMode: Text.ProportionalHeight" - << "QDeclarativeComponent: Component is not ready" - << ":1 \"Text.lineHeightMode\" is not available in QtQuick 1.0.\n"; - - QTest::newRow("lineCount") << "property int foo: lineCount" - << "<Unknown File>:1: ReferenceError: Can't find variable: lineCount" - << ""; - - QTest::newRow("truncated") << "property bool foo: truncated" - << "<Unknown File>:1: ReferenceError: Can't find variable: truncated" - << ""; -} - -void tst_qdeclarativetext::qtbug_14734() -{ - QDeclarativeView *canvas = createView(SRCDIR "/data/qtbug_14734.qml"); - QVERIFY(canvas); - - canvas->show(); - QApplication::setActiveWindow(canvas); - QTest::qWaitForWindowShown(canvas); - QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(canvas)); - - delete canvas; -} - -QTEST_MAIN(tst_qdeclarativetext) - -#include "tst_qdeclarativetext.moc" |