From 12c56aa43a7c48f7f34e75c3a7fb1603102f1af5 Mon Sep 17 00:00:00 2001 From: Axel Spoerl Date: Thu, 6 Jan 2022 15:38:43 +0100 Subject: [PATCH] Turn QLabel wordWrap unit test into data driven test Add test to verify that allowing wordWrap actually breaks long lines. Pick-to: 6.3 Change-Id: I09bd2d754e86ebf35db551ee76f7f037371acec9 Reviewed-by: Volker Hilsheimer --- .../widgets/widgets/qlabel/tst_qlabel.cpp | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp index 7e5b5e7c58a..1af61e9ec69 100644 --- a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp +++ b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -75,6 +76,7 @@ private Q_SLOTS: #endif void setNum(); void clear(); + void wordWrap_data(); void wordWrap(); void eventPropagation_data(); void eventPropagation(); @@ -268,21 +270,36 @@ void tst_QLabel::clear() QVERIFY(testWidget->text().isEmpty()); } +void tst_QLabel::wordWrap_data() +{ + QTest::addColumn("text"); + + QTest::newRow("Plain text") << "Plain text1"; + QTest::newRow("Rich text") << "Rich text"; + QTest::newRow("Long text") + << "This is a very long text to check that QLabel " + "does not wrap, even if the text would require wrapping to be fully displayed"; +} + void tst_QLabel::wordWrap() { + QFETCH(QString, text); + QLabel label; - + label.setText(text); QVERIFY(!label.wordWrap()); + QVERIFY(!label.sizePolicy().hasHeightForWidth()); - label.setText("Plain Text"); - QVERIFY(!label.wordWrap()); + const QSize unWrappedSizeHint = label.sizeHint(); - label.setText("rich text"); - QVERIFY(!label.wordWrap()); + label.setWordWrap(true); + QVERIFY(label.sizePolicy().hasHeightForWidth()); + + if (text.size() > 1 && text.contains(" ")) { + const int wrappedHeight = label.heightForWidth(unWrappedSizeHint.width() / 2); + QVERIFY(wrappedHeight > unWrappedSizeHint.height()); + } - label.setWordWrap(false); - label.setText("rich text"); - QVERIFY(!label.wordWrap()); } void tst_QLabel::eventPropagation_data()