aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick1/qdeclarativetextinput
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2011-12-12 12:46:48 +1000
committerQt by Nokia <qt-info@nokia.com>2011-12-12 07:05:45 +0100
commit80614c8a26140bbb98533d72a7d1696c197c5de6 (patch)
tree44500349d47f11fa3102ce6b2e2101d6d5ec8b5d /tests/auto/qtquick1/qdeclarativetextinput
parenta1a4abe377045afee3b49639fd1e072a7cbd8e19 (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.cpp45
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);