diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-12-12 12:46:48 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-12 07:05:45 +0100 |
commit | 80614c8a26140bbb98533d72a7d1696c197c5de6 (patch) | |
tree | 44500349d47f11fa3102ce6b2e2101d6d5ec8b5d /tests/auto/qtquick1/qdeclarativetextinput | |
parent | a1a4abe377045afee3b49639fd1e072a7cbd8e19 (diff) |
Fix test failures in QtQuick 1 TextEdit and TextInput.
Port various fixes for incompatibilites from the QtQuick 2 item tests.
Task-number: QTBUG-21017
Change-Id: I0234fa2623c57138a132558ff4f48602675c3784
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'tests/auto/qtquick1/qdeclarativetextinput')
-rw-r--r-- | tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 0409bd81ba..a7c1616dd0 100644 --- a/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/qtquick1/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -49,6 +49,7 @@ #include <QDir> #include <QStyle> #include <QInputContext> +#include <QtCore/qmath.h> #include <private/qapplication_p.h> #include <private/qinputpanel_p.h> @@ -1318,6 +1319,10 @@ void tst_qdeclarativetextinput::horizontalAlignment_RightToLeft() { QInputMethodEvent ev("Hello world!", QList<QInputMethodEvent::Attribute>()); QApplication::sendEvent(canvas, &ev); } QCOMPARE(textInput->hAlign(), QDeclarative1TextInput::AlignLeft); + // Clear pre-edit text. TextInput should maybe do this itself on setText, but that may be + // redundant as an actual input method may take care of it. + { QInputMethodEvent ev; QApplication::sendEvent(canvas, &ev); } + #ifndef Q_OS_MAC // QTBUG-18040 // empty text with implicit alignment follows the system locale-based // keyboard input direction from QApplication::keyboardInputDirection @@ -1360,17 +1365,21 @@ void tst_qdeclarativetextinput::positionAt() QVERIFY(textinputObject != 0); // Check autoscrolled... - QFontMetrics fm(textinputObject->font()); int pos = textinputObject->positionAt(textinputObject->width()/2); - int diff = abs(int(fm.width(textinputObject->text()) - (fm.width(textinputObject->text().left(pos))+textinputObject->width()/2))); - // some tollerance for different fonts. -#ifdef Q_OS_LINUX - QVERIFY(diff < 2); -#else - QVERIFY(diff < 5); -#endif + QTextLayout layout(textinputObject->text()); + layout.setFont(textinputObject->font()); + layout.beginLayout(); + QTextLine line = layout.createLine(); + layout.endLayout(); + + int textLeftWidthBegin = qFloor(line.cursorToX(pos - 1)); + int textLeftWidthEnd = qCeil(line.cursorToX(pos + 1)); + int textWidth = floor(line.horizontalAdvance()); + + QVERIFY(textLeftWidthBegin <= textWidth - textinputObject->width() / 2); + QVERIFY(textLeftWidthEnd >= textWidth - textinputObject->width() / 2); int x = textinputObject->positionToRectangle(pos + 1).x() - 1; QCOMPARE(textinputObject->positionAt(x, QDeclarative1TextInput::CursorBetweenCharacters), pos + 1); @@ -1379,15 +1388,12 @@ void tst_qdeclarativetextinput::positionAt() // Check without autoscroll... textinputObject->setAutoScroll(false); pos = textinputObject->positionAt(textinputObject->width()/2); - diff = abs(int(fm.width(textinputObject->text().left(pos))-textinputObject->width()/2)); - QEXPECT_FAIL("", "QTBUG-21017 fails", Continue); - // some tolerance for different fonts. -#ifdef Q_OS_LINUX - QVERIFY(diff < 2); -#else - QVERIFY(diff < 5); -#endif + textLeftWidthBegin = qFloor(line.cursorToX(pos - 1)); + textLeftWidthEnd = qCeil(line.cursorToX(pos + 1)); + + QVERIFY(textLeftWidthBegin <= textinputObject->width() / 2); + QVERIFY(textLeftWidthEnd >= textinputObject->width() / 2); x = textinputObject->positionToRectangle(pos + 1).x() - 1; QCOMPARE(textinputObject->positionAt(x, QDeclarative1TextInput::CursorBetweenCharacters), pos + 1); @@ -2472,12 +2478,12 @@ void tst_qdeclarativetextinput::setHAlignClearCache() view.show(); QApplication::setActiveWindow(&view); QTest::qWaitForWindowShown(&view); - QEXPECT_FAIL("", "QTBUG-21017 fails", Abort); - QTRY_COMPARE(input.nbPaint, 1); + QTRY_VERIFY(input.nbPaint >= 1); + input.nbPaint = 0; input.setHAlign(QDeclarative1TextInput::AlignRight); QApplication::processEvents(); //Changing the alignment should trigger a repaint - QCOMPARE(input.nbPaint, 2); + QTRY_VERIFY(input.nbPaint >= 1); } void tst_qdeclarativetextinput::focusOutClearSelection() @@ -2581,7 +2587,6 @@ void tst_qdeclarativetextinput::preeditAutoScroll() // test the text is scrolled so the preedit is visible. ic->sendPreeditText(preeditText.mid(0, 3), 1); - QEXPECT_FAIL("", "QTBUG-21017 fails", Abort); QVERIFY(input.positionAt(0) != 0); QVERIFY(input.cursorRectangle().left() < input.boundingRect().width()); QCOMPARE(cursorRectangleSpy.count(), ++cursorRectangleChanges); |