From 1099b26535fedbaaa134ccb63310362951fce847 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 22 Jul 2013 15:52:54 +0200 Subject: Stabilize text tests that grab windows. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add window flags to make sure window stays on top to tst_qquicktext::hAlignImplicitWidth() and tst_qquicktextedit::hAlignVisual(). Add diagnostic output. Determine the section size by checking the font size. Add more characters to line 2 to make it more discriminative. Task-number: QTBUG-32540 Change-Id: I19a74a775bf2663027ec211784870fd9f6547b48 Reviewed-by: Simo Fält Reviewed-by: Alan Alpert --- .../quick/qquicktext/data/hAlignImplicitWidth.qml | 2 +- tests/auto/quick/qquicktext/tst_qquicktext.cpp | 52 +++++++++++++++------- 2 files changed, 38 insertions(+), 16 deletions(-) (limited to 'tests/auto/quick/qquicktext') diff --git a/tests/auto/quick/qquicktext/data/hAlignImplicitWidth.qml b/tests/auto/quick/qquicktext/data/hAlignImplicitWidth.qml index 136e5d21a2..9c9318d3cc 100644 --- a/tests/auto/quick/qquicktext/data/hAlignImplicitWidth.qml +++ b/tests/auto/quick/qquicktext/data/hAlignImplicitWidth.qml @@ -6,7 +6,7 @@ Rectangle { Text { objectName: "textItem" - text: "AA\nBBBBB\nCCCCCCCCCCCCCCCC" + text: "AA\nBBBBBBB\nCCCCCCCCCCCCCCCC" anchors.centerIn: parent horizontalAlignment: Text.AlignLeft } diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp index 6637d36318..51a5b2547f 100644 --- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp +++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp @@ -854,9 +854,20 @@ int tst_qquicktext::numberOfNonWhitePixels(int fromX, int toX, const QImage &ima return pixels; } +static inline QByteArray msgNotGreaterThan(int n1, int n2) +{ + return QByteArray::number(n1) + QByteArrayLiteral(" is not greater than ") + QByteArray::number(n2); +} + +static inline QByteArray msgNotLessThan(int n1, int n2) +{ + return QByteArray::number(n1) + QByteArrayLiteral(" is not less than ") + QByteArray::number(n2); +} + void tst_qquicktext::hAlignImplicitWidth() { QQuickView view(testFileUrl("hAlignImplicitWidth.qml")); + view.setFlags(view.flags() | Qt::WindowStaysOnTopHint); // Prevent being obscured by other windows. view.show(); view.requestActivate(); QVERIFY(QTest::qWaitForWindowActive(&view)); @@ -864,34 +875,45 @@ void tst_qquicktext::hAlignImplicitWidth() QQuickText *text = view.rootObject()->findChild("textItem"); QVERIFY(text != 0); + // Try to check whether alignment works by checking the number of black + // pixels in the thirds of the grabbed image. + const int windowWidth = 200; + const int textWidth = qCeil(text->implicitWidth()); + QVERIFY2(textWidth < windowWidth, "System font too large."); + const int sectionWidth = textWidth / 3; + const int centeredSection1 = (windowWidth - textWidth) / 2; + const int centeredSection2 = centeredSection1 + sectionWidth; + const int centeredSection3 = centeredSection2 + sectionWidth; + const int centeredSection3End = centeredSection3 + sectionWidth; + { // Left Align QImage image = view.grabWindow(); - int left = numberOfNonWhitePixels(0, image.width() / 3, image); - int mid = numberOfNonWhitePixels(image.width() / 3, 2 * image.width() / 3, image); - int right = numberOfNonWhitePixels( 2 * image.width() / 3, image.width(), image); - QVERIFY(left > mid); - QVERIFY(mid > right); + const int left = numberOfNonWhitePixels(centeredSection1, centeredSection2, image); + const int mid = numberOfNonWhitePixels(centeredSection2, centeredSection3, image); + const int right = numberOfNonWhitePixels(centeredSection3, centeredSection3End, image); + QVERIFY2(left > mid, msgNotGreaterThan(left, mid).constData()); + QVERIFY2(mid > right, msgNotGreaterThan(mid, right).constData()); } { // HCenter Align text->setHAlign(QQuickText::AlignHCenter); QImage image = view.grabWindow(); - int left = numberOfNonWhitePixels(0, image.width() / 3, image); - int mid = numberOfNonWhitePixels(image.width() / 3, 2 * image.width() / 3, image); - int right = numberOfNonWhitePixels( 2 * image.width() / 3, image.width(), image); - QVERIFY(left < mid); - QVERIFY(mid > right); + const int left = numberOfNonWhitePixels(centeredSection1, centeredSection2, image); + const int mid = numberOfNonWhitePixels(centeredSection2, centeredSection3, image); + const int right = numberOfNonWhitePixels(centeredSection3, centeredSection3End, image); + QVERIFY2(left < mid, msgNotLessThan(left, mid).constData()); + QVERIFY2(mid > right, msgNotGreaterThan(mid, right).constData()); } { // Right Align text->setHAlign(QQuickText::AlignRight); QImage image = view.grabWindow(); - int left = numberOfNonWhitePixels(0, image.width() / 3, image); - int mid = numberOfNonWhitePixels(image.width() / 3, 2 * image.width() / 3, image); - int right = numberOfNonWhitePixels( 2 * image.width() / 3, image.width(), image); - QVERIFY(left < mid); - QVERIFY(mid < right); + const int left = numberOfNonWhitePixels(centeredSection1, centeredSection2, image); + const int mid = numberOfNonWhitePixels(centeredSection2, centeredSection3, image); + const int right = numberOfNonWhitePixels(centeredSection3, centeredSection3End, image); + QVERIFY2(left < mid, msgNotLessThan(left, mid).constData()); + QVERIFY2(mid < right, msgNotLessThan(mid, right).constData()); } } -- cgit v1.2.3