diff options
Diffstat (limited to 'tests/auto/quick/qquicktextedit')
-rw-r--r-- | tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp | 51 |
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() { |