K1 24V DC
"); QTest::newRow("line break") << QStringLiteral("Wiper to 6
contacts
relais voyant
preventa
"); QTest::newRow("empty") << QString(); } void unwrappedTextIsUnchanged() { QFETCH(QString, html); QTextDocument document; if (Qt::mightBeRichText(html)) document.setHtml(html); else document.setPlainText(html); QCOMPARE(TextLines::layoutLines(&document), document.toPlainText().split(QLatin1Char('\n'))); } // A text wrapped to its width gives one line per drawn line, without // the space the line was broken at. void wrappedTextGivesTheDrawnLines() { QTextDocument document(QStringLiteral("Motor protection switch Q12")); QTextOption option = document.defaultTextOption(); option.setWrapMode(QTextOption::WordWrap); document.setDefaultTextOption(option); document.setTextWidth(1); QCOMPARE(TextLines::layoutLines(&document), QStringList({QStringLiteral("Motor"), QStringLiteral("protection"), QStringLiteral("switch"), QStringLiteral("Q12")})); } // A wrapped paragraph has no trailing spaces left, even on its last // line: tabs and spaces that wrap to a line of their own (as in the // affuteuse_250h example) give an empty line, which is not written but // still keeps the line spacing. void wrappedTextHasNoTrailingSpaces() { QTextDocument document(QStringLiteral("\tMotor\t\t ")); QTextOption option = document.defaultTextOption(); option.setWrapMode(QTextOption::WordWrap); document.setDefaultTextOption(option); document.setTextWidth(80); const QStringList lines = TextLines::layoutLines(&document); QVERIFY(lines.size() > 1); QVERIFY(lines.contains(QStringLiteral("Motor"))); for (const QString &line : lines) QVERIFY2(line.isEmpty() || !line.back().isSpace(), qPrintable(line)); } // Non-breaking spaces also become plain spaces in a wrapped text. void wrappedTextHasPlainSpaces() { QTextDocument document; document.setHtml(QStringLiteral("K1 24V and more words
")); QTextOption option = document.defaultTextOption(); option.setWrapMode(QTextOption::WordWrap); document.setDefaultTextOption(option); document.setTextWidth(1); const QStringList lines = TextLines::layoutLines(&document); QCOMPARE(lines.first(), QStringLiteral("K1 24V")); for (const QString &line : lines) QVERIFY(!line.contains(QChar::Nbsp)); } }; QTEST_MAIN(tst_textlines) #include "tst_textlines.moc"