aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicktextedit
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquicktextedit')
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index e6a83b3338..83fa496edd 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -108,6 +108,8 @@ private slots:
void width();
void wrap();
void textFormat();
+ void lineCount_data();
+ void lineCount();
// ### these tests may be trivial
void hAlign();
@@ -613,6 +615,55 @@ void tst_qquicktextedit::textFormat()
}
}
+static int calcLineCount(QTextDocument* doc)
+{
+ int subLines = 0;
+ for (QTextBlock it = doc->begin(); it != doc->end(); it = it.next()) {
+ QTextLayout *layout = it.layout();
+ if (!layout)
+ continue;
+ subLines += layout->lineCount()-1;
+ }
+ return doc->lineCount() + subLines;
+}
+
+void tst_qquicktextedit::lineCount_data()
+{
+ QTest::addColumn<QStringList>("texts");
+ QTest::newRow("plaintext") << standard;
+ QTest::newRow("richtext") << richText;
+}
+
+void tst_qquicktextedit::lineCount()
+{
+ QFETCH(QStringList, texts);
+
+ foreach (const QString& text, texts) {
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0\nTextEdit { }", QUrl());
+
+ QQuickTextEdit *textedit = qobject_cast<QQuickTextEdit*>(component.create());
+ QVERIFY(textedit);
+
+ QTextDocument *doc = QQuickTextEditPrivate::get(textedit)->document;
+ QVERIFY(doc);
+
+ textedit->setText(text);
+
+ textedit->setWidth(100.0);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+
+ textedit->setWrapMode(QQuickTextEdit::Wrap);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+
+ textedit->setWidth(50.0);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+
+ textedit->setWrapMode(QQuickTextEdit::NoWrap);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+ }
+}
+
//the alignment tests may be trivial o.oa
void tst_qquicktextedit::hAlign()
{