Update TextEdit tests with changes from 4.8.
authorAndrew den Exter <andrew.den-exter@nokia.com>
Mon, 9 May 2011 03:57:34 +0000 (13:57 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 6 Sep 2011 00:58:57 +0000 (02:58 +0200)
Test are for changes cherry-picked to qtbase as:
8febd569408db19c8a83e16cc7a8574f9b00084b
bb2f045c10965542ae14275e8ce5a97e42931d8d

Change-Id: I186b80be1a706d8be442d4e6e5e2734ec677d235
Reviewed-on: http://codereview.qt.nokia.com/4172
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
tests/auto/declarative/qsgtextedit/data/mouseselection_false_words.qml
tests/auto/declarative/qsgtextedit/data/mouseselection_true_words.qml
tests/auto/declarative/qsgtextedit/tst_qsgtextedit.cpp
tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_false_words.qml
tests/auto/qtquick1/qdeclarativetextedit/data/mouseselection_true_words.qml
tests/auto/qtquick1/qdeclarativetextedit/tst_qdeclarativetextedit.cpp

index ac32f4c..86aea46 100644 (file)
@@ -2,6 +2,7 @@ import QtQuick 2.0
 
 TextEdit {
     focus: true
-    text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     selectByMouse: false
+    mouseSelectionMode: TextEdit.SelectWords
 }
index 7c7cb0b..c356999 100644 (file)
@@ -2,6 +2,7 @@ import QtQuick 2.0
 
 TextEdit {
     focus: true
-    text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     selectByMouse: true
+    mouseSelectionMode: TextEdit.SelectWords
 }
index 2a94e20..fdbedae 100644 (file)
@@ -1339,20 +1339,32 @@ void tst_qsgtextedit::moveCursorSelectionSequence()
 void tst_qsgtextedit::mouseSelection_data()
 {
     QTest::addColumn<QString>("qmlfile");
-    QTest::addColumn<bool>("expectSelection");
+    QTest::addColumn<int>("from");
+    QTest::addColumn<int>("to");
+    QTest::addColumn<QString>("selectedText");
 
     // import installed
-    QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << true;
-    QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << false;
-    QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << false;
-    QTest::newRow("on word selection") << SRCDIR "/data/mouseselection_true_words.qml" << true;
-    QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << false;
+    QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << 4 << 9 << "45678";
+    QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << 4 << 9 << QString();
+    QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << 4 << 9 << QString();
+    QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << 4 << 9 << QString();
+    QTest::newRow("on word selection (4,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 4 << 9 << "0123456789";
+    QTest::newRow("on word selection (2,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (2,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (9,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (9,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (13,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 13 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (20,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 20 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (12,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 12 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (30,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 30 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 }
 
 void tst_qsgtextedit::mouseSelection()
 {
     QFETCH(QString, qmlfile);
-    QFETCH(bool, expectSelection);
+    QFETCH(int, from);
+    QFETCH(int, to);
+    QFETCH(QString, selectedText);
 
     QSGView canvas(QUrl::fromLocalFile(qmlfile));
 
@@ -1366,19 +1378,20 @@ void tst_qsgtextedit::mouseSelection()
     QVERIFY(textEditObject != 0);
 
     // press-and-drag-and-release from x1 to x2
-    int x1 = 10;
-    int x2 = 70;
-    int y = textEditObject->height()/2;
-    QTest::mousePress(&canvas, Qt::LeftButton, 0, QPoint(x1,y));
-    //QTest::mouseMove(canvas, QPoint(x2,y)); // doesn't work
-    QMouseEvent mv(QEvent::MouseMove, QPoint(x2,y), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
+    QPoint p1 = textEditObject->positionToRectangle(from).center().toPoint();
+    QPoint p2 = textEditObject->positionToRectangle(to).center().toPoint();
+    QTest::mousePress(&canvas, Qt::LeftButton, 0, p1);
+    //QTest::mouseMove(canvas->viewport(), canvas->mapFromScene(QPoint(x2,y))); // doesn't work
+    QMouseEvent mv(QEvent::MouseMove, p2, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
     QApplication::sendEvent(&canvas, &mv);
-    QTest::mouseRelease(&canvas, Qt::LeftButton, 0, QPoint(x2,y));
-    QString str = textEditObject->selectedText();
-    if (expectSelection)
-        QVERIFY(str.length() > 3); // don't reallly care *what* was selected (and it's too sensitive to platform)
-    else
-        QVERIFY(str.isEmpty());
+    QTest::mouseRelease(&canvas, Qt::LeftButton, 0, p2);
+    QCOMPARE(textEditObject->selectedText(), selectedText);
+
+    // Clicking and shift to clicking between the same points should select the same text.
+    textEditObject->setCursorPosition(0);
+    QTest::mouseClick(&canvas, Qt::LeftButton, Qt::NoModifier, p1);
+    QTest::mouseClick(&canvas, Qt::LeftButton, Qt::ShiftModifier, p2);
+    QCOMPARE(textEditObject->selectedText(), selectedText);
 }
 
 void tst_qsgtextedit::dragMouseSelection()
@@ -1572,6 +1585,43 @@ void tst_qsgtextedit::cursorDelegate()
         QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
         QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
     }
+    // Clear preedit text;
+    QInputMethodEvent event;
+    QApplication::sendEvent(&view, &event);
+
+
+    // Test delegate gets moved on mouse press.
+    textEditObject->setSelectByMouse(true);
+    textEditObject->setCursorPosition(0);
+    const QPoint point1 = textEditObject->positionToRectangle(5).center().toPoint();
+    QTest::mouseClick(&view, Qt::LeftButton, 0, point1);
+    QVERIFY(textEditObject->cursorPosition() != 0);
+    QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
+    QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
+
+    // Test delegate gets moved on mouse drag
+    textEditObject->setCursorPosition(0);
+    const QPoint point2 = textEditObject->positionToRectangle(10).center().toPoint();
+    QTest::mousePress(&view, Qt::LeftButton, 0, point1);
+    QMouseEvent mv(QEvent::MouseMove, point2, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
+    QApplication::sendEvent(&view, &mv);
+    QTest::mouseRelease(&view, Qt::LeftButton, 0, point2);
+    QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
+    QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
+
+    textEditObject->setReadOnly(true);
+    textEditObject->setCursorPosition(0);
+    QTest::mouseClick(&view, Qt::LeftButton, 0, textEditObject->positionToRectangle(5).center().toPoint());
+    QVERIFY(textEditObject->cursorPosition() != 0);
+    QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
+    QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
+
+    textEditObject->setCursorPosition(0);
+    QTest::mouseClick(&view, Qt::LeftButton, 0, textEditObject->positionToRectangle(5).center().toPoint());
+    QVERIFY(textEditObject->cursorPosition() != 0);
+    QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
+    QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
+
     textEditObject->setCursorPosition(0);
     QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
     QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
index 22a9871..f8d2e4e 100644 (file)
@@ -1,7 +1,8 @@
-import QtQuick 1.0
+import QtQuick 1.1
 
 TextEdit {
     focus: true
-    text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     selectByMouse: false
+    mouseSelectionMode: TextEdit.SelectWords
 }
index d61da46..f58fd45 100644 (file)
@@ -1,7 +1,8 @@
-import QtQuick 1.0
+import QtQuick 1.1
 
 TextEdit {
     focus: true
-    text: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+    text: "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     selectByMouse: true
+    mouseSelectionMode: TextEdit.SelectWords
 }
index 76f4687..e74ad44 100644 (file)
@@ -1315,20 +1315,32 @@ void tst_qdeclarativetextedit::moveCursorSelectionSequence()
 void tst_qdeclarativetextedit::mouseSelection_data()
 {
     QTest::addColumn<QString>("qmlfile");
-    QTest::addColumn<bool>("expectSelection");
+    QTest::addColumn<int>("from");
+    QTest::addColumn<int>("to");
+    QTest::addColumn<QString>("selectedText");
 
     // import installed
-    QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << true;
-    QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << false;
-    QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << false;
-    QTest::newRow("on word selection") << SRCDIR "/data/mouseselection_true_words.qml" << true;
-    QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << false;
+    QTest::newRow("on") << SRCDIR "/data/mouseselection_true.qml" << 4 << 9 << "45678";
+    QTest::newRow("off") << SRCDIR "/data/mouseselection_false.qml" << 4 << 9 << QString();
+    QTest::newRow("default") << SRCDIR "/data/mouseselection_default.qml" << 4 << 9 << QString();
+    QTest::newRow("off word selection") << SRCDIR "/data/mouseselection_false_words.qml" << 4 << 9 << QString();
+    QTest::newRow("on word selection (4,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 4 << 9 << "0123456789";
+    QTest::newRow("on word selection (2,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (2,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 2 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (9,13)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 13 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (9,30)") << SRCDIR "/data/mouseselection_true_words.qml" << 9 << 30 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (13,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 13 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (20,2)") << SRCDIR "/data/mouseselection_true_words.qml" << 20 << 2 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (12,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 12 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    QTest::newRow("on word selection (30,9)") << SRCDIR "/data/mouseselection_true_words.qml" << 30 << 9 << "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 }
 
 void tst_qdeclarativetextedit::mouseSelection()
 {
     QFETCH(QString, qmlfile);
-    QFETCH(bool, expectSelection);
+    QFETCH(int, from);
+    QFETCH(int, to);
+    QFETCH(QString, selectedText);
 
     QDeclarativeView *canvas = createView(qmlfile);
 
@@ -1342,25 +1354,20 @@ void tst_qdeclarativetextedit::mouseSelection()
     QVERIFY(textEditObject != 0);
 
     // press-and-drag-and-release from x1 to x2
-    int x1 = 10;
-    int x2 = 70;
-    int y = textEditObject->height()/2;
-    QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(x1,y)));
+    QPoint p1 = canvas->mapFromScene(textEditObject->positionToRectangle(from).center());
+    QPoint p2 = canvas->mapFromScene(textEditObject->positionToRectangle(to).center());
+    QTest::mousePress(canvas->viewport(), Qt::LeftButton, 0, p1);
     //QTest::mouseMove(canvas->viewport(), canvas->mapFromScene(QPoint(x2,y))); // doesn't work
-    QMouseEvent mv(QEvent::MouseMove, canvas->mapFromScene(QPoint(x2,y)), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
+    QMouseEvent mv(QEvent::MouseMove, canvas->mapFromScene(p2), Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
     QApplication::sendEvent(canvas->viewport(), &mv);
-    QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, canvas->mapFromScene(QPoint(x2,y)));
-    QString str = textEditObject->selectedText();
-    if (expectSelection)
-        QVERIFY(str.length() > 3); // don't reallly care *what* was selected (and it's too sensitive to platform)
-    else
-        QVERIFY(str.isEmpty());
+    QTest::mouseRelease(canvas->viewport(), Qt::LeftButton, 0, p2);
+    QCOMPARE(textEditObject->selectedText(), selectedText);
 
     // Clicking and shift to clicking between the same points should select the same text.
     textEditObject->setCursorPosition(0);
-    QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::NoModifier, canvas->mapFromScene(QPoint(x1,y)));
-    QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::ShiftModifier, canvas->mapFromScene(QPoint(x2,y)));
-    QCOMPARE(textEditObject->selectedText(), str);
+    QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::NoModifier, p1);
+    QTest::mouseClick(canvas->viewport(), Qt::LeftButton, Qt::ShiftModifier, p2);
+    QCOMPARE(textEditObject->selectedText(), selectedText);
 
     delete canvas;
 }
@@ -1682,15 +1689,26 @@ void tst_qdeclarativetextedit::cursorDelegate()
     QInputMethodEvent event;
     QApplication::sendEvent(view, &event);
 
+
     // Test delegate gets moved on mouse press.
     textEditObject->setSelectByMouse(true);
     textEditObject->setCursorPosition(0);
-    qDebug() << textEditObject->boundingRect() << textEditObject->positionToRectangle(5).center() << view->mapFromScene(textEditObject->positionToRectangle(5).center());
-    QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(textEditObject->positionToRectangle(5).center()));
+    const QPoint point1 = view->mapFromScene(textEditObject->positionToRectangle(5).center());
+    QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, point1);
     QVERIFY(textEditObject->cursorPosition() != 0);
     QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
     QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
 
+    // Test delegate gets moved on mouse drag
+    textEditObject->setCursorPosition(0);
+    const QPoint point2 = view->mapFromScene(textEditObject->positionToRectangle(10).center());
+    QTest::mousePress(view->viewport(), Qt::LeftButton, 0, point1);
+    QMouseEvent mv(QEvent::MouseMove, point2, Qt::LeftButton, Qt::LeftButton,Qt::NoModifier);
+    QApplication::sendEvent(view->viewport(), &mv);
+    QTest::mouseRelease(view->viewport(), Qt::LeftButton, 0, point2);
+    QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
+    QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
+
     textEditObject->setReadOnly(true);
     textEditObject->setCursorPosition(0);
     QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(textEditObject->positionToRectangle(5).center()));
@@ -1699,6 +1717,12 @@ void tst_qdeclarativetextedit::cursorDelegate()
     QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
 
     textEditObject->setCursorPosition(0);
+    QTest::mouseClick(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(textEditObject->positionToRectangle(5).center()));
+    QVERIFY(textEditObject->cursorPosition() != 0);
+    QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
+    QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
+
+    textEditObject->setCursorPosition(0);
     QCOMPARE(textEditObject->cursorRectangle().x(), qRound(delegateObject->x()));
     QCOMPARE(textEditObject->cursorRectangle().y(), qRound(delegateObject->y()));
     QVERIFY(textEditObject->cursorRectangle().y() >= 0);