aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicktext
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-07-22 15:52:54 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-25 20:45:19 +0200
commit1099b26535fedbaaa134ccb63310362951fce847 (patch)
tree9858873668de63bfd2143025cf1db6ac9d95e1bb /tests/auto/quick/qquicktext
parenteda210242f2143271515b691b6b21d7ae734f3f0 (diff)
Stabilize text tests that grab windows.
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 <simo.falt@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'tests/auto/quick/qquicktext')
-rw-r--r--tests/auto/quick/qquicktext/data/hAlignImplicitWidth.qml2
-rw-r--r--tests/auto/quick/qquicktext/tst_qquicktext.cpp52
2 files changed, 38 insertions, 16 deletions
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<QQuickText*>("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());
}
}