diff options
Diffstat (limited to 'tests/auto')
27 files changed, 412 insertions, 107 deletions
diff --git a/tests/auto/q3popupmenu/tst_q3popupmenu.cpp b/tests/auto/q3popupmenu/tst_q3popupmenu.cpp index 5585c3a..df8573d 100644 --- a/tests/auto/q3popupmenu/tst_q3popupmenu.cpp +++ b/tests/auto/q3popupmenu/tst_q3popupmenu.cpp @@ -135,11 +135,11 @@ void tst_Q3PopupMenu::task177490_highlighted() QTest::mouseMove(&menu1, QPoint(x, y1)); QTest::mouseMove(&menu1, QPoint(x, y1 + 1)); - QTest::qWait(100); + QTest::qWait(1000); QTest::mouseMove(&menu1, QPoint(x, y2)); QTest::mouseMove(&menu1, QPoint(x, y2 + 1)); - QTest::qWait(100); + QTest::qWait(1000); QCOMPARE(spy.count(), 2); // one per menu item } diff --git a/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp b/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp index cbbab41..6b580df 100644 --- a/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp +++ b/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp @@ -646,7 +646,7 @@ void tst_Q3SqlCursor::select() } #ifdef QT_DEBUG - // for people too stupid to read docs we had to insert this debugging message. + // Ignore debugging message advising users of a potential pitfall. QTest::ignoreMessage(QtDebugMsg, "Q3SqlCursor::setValue(): This will not affect actual database values. Use primeInsert(), primeUpdate() or primeDelete()."); #endif cur4.setValue( "id", 1 ); diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp index be1cb98..6984a88 100644 --- a/tests/auto/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/qcombobox/tst_qcombobox.cpp @@ -2120,20 +2120,22 @@ void tst_QComboBox::task248169_popupWithMinimalSize() comboBox.addItems(initialContent); QDesktopWidget desktop; QRect desktopSize = desktop.availableGeometry(); - comboBox.view()->setMinimumWidth(desktopSize.width() - 1); + comboBox.view()->setMinimumWidth(desktopSize.width() / 2); comboBox.setGeometry(desktopSize.width() - (desktopSize.width() / 4), (desktopSize.width() / 4), (desktopSize.width() / 2), (desktopSize.width() / 4)); comboBox.show(); + QTest::qWaitForWindowShown(&comboBox); QTRY_VERIFY(comboBox.isVisible()); comboBox.showPopup(); QTRY_VERIFY(comboBox.view()); + QTest::qWaitForWindowShown(comboBox.view()); QTRY_VERIFY(comboBox.view()->isVisible()); #ifdef QT_BUILD_INTERNAL QFrame *container = qFindChild<QComboBoxPrivateContainer *>(&comboBox); QVERIFY(container); - QVERIFY(desktop.screenGeometry(container).contains(container->geometry())); + QTRY_VERIFY(desktop.screenGeometry(container).contains(container->geometry())); #endif } diff --git a/tests/auto/qdom/tst_qdom.cpp b/tests/auto/qdom/tst_qdom.cpp index 79c0cef..6637202 100644 --- a/tests/auto/qdom/tst_qdom.cpp +++ b/tests/auto/qdom/tst_qdom.cpp @@ -130,6 +130,8 @@ private slots: void setContentWhitespace() const; void setContentWhitespace_data() const; + void taskQTBUG4595_dontAssertWhenDocumentSpecifiesUnknownEncoding() const; + void cleanupTestCase() const; private: @@ -1897,5 +1899,18 @@ void tst_QDom::setContentWhitespace_data() const QTest::newRow("") << QString::fromLatin1("\t\t\t\t<?xml version='1.0' ?><e/>") << false; } +void tst_QDom::taskQTBUG4595_dontAssertWhenDocumentSpecifiesUnknownEncoding() const +{ + QString xmlWithUnknownEncoding("<?xml version='1.0' encoding='unknown-encoding'?>" + "<foo>" + " <bar>How will this sentence be handled?</bar>" + "</foo>"); + QDomDocument d; + QVERIFY(d.setContent(xmlWithUnknownEncoding)); + + QString dontAssert = d.toString(); // this should not assert + QVERIFY(true); +} + QTEST_MAIN(tst_QDom) #include "tst_qdom.moc" diff --git a/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp b/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp index 502e983..f4ea985 100644 --- a/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp +++ b/tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp @@ -145,6 +145,7 @@ private slots: void task224497_fltMax(); void task221221(); + void task255471_decimalsValidation(); public slots: void valueChangedHelper(const QString &); @@ -668,7 +669,7 @@ void tst_QDoubleSpinBox::valueFromTextAndValidate_data() QTest::addColumn<int>("language"); QTest::addColumn<QString>("expectedText"); // if empty we don't check - QTest::newRow("data0") << QString("2.2") << Invalid << 3.0 << 5.0 << (int)QLocale::C << QString(); + QTest::newRow("data0") << QString("2.2") << Intermediate << 3.0 << 5.0 << (int)QLocale::C << QString(); QTest::newRow("data1") << QString() << Intermediate << 0.0 << 100.0 << (int)QLocale::C << QString(); QTest::newRow("data2") << QString("asd") << Invalid << 0.0 << 100.0 << (int)QLocale::C << QString(); QTest::newRow("data3") << QString("2.2") << Acceptable << 0.0 << 100.0 << (int)QLocale::C << QString(); @@ -685,20 +686,20 @@ void tst_QDoubleSpinBox::valueFromTextAndValidate_data() QTest::newRow("data14") << QString("1, ") << Acceptable << 0.0 << 100.0 << (int)QLocale::Norwegian << QString("1,"); QTest::newRow("data15") << QString("1, ") << Invalid << 0.0 << 100.0 << (int)QLocale::C << QString(); QTest::newRow("data16") << QString("2") << Intermediate << 100.0 << 102.0 << (int)QLocale::C << QString(); - QTest::newRow("data17") << QString("22.0") << Invalid << 100.0 << 102.0 << (int)QLocale::C << QString(); + QTest::newRow("data17") << QString("22.0") << Intermediate << 100.0 << 102.0 << (int)QLocale::C << QString(); QTest::newRow("data18") << QString("12.0") << Intermediate << 100.0 << 102.0 << (int)QLocale::C << QString(); - QTest::newRow("data19") << QString("12.2") << Invalid << 100. << 102.0 << (int)QLocale::C << QString(); - QTest::newRow("data20") << QString("21.") << Invalid << 100.0 << 102.0 << (int)QLocale::C << QString(); - QTest::newRow("data21") << QString("-21.") << Invalid << -102.0 << -100.0 << (int)QLocale::C << QString(); + QTest::newRow("data19") << QString("12.2") << Intermediate << 100. << 102.0 << (int)QLocale::C << QString(); + QTest::newRow("data20") << QString("21.") << Intermediate << 100.0 << 102.0 << (int)QLocale::C << QString(); + QTest::newRow("data21") << QString("-21.") << Intermediate << -102.0 << -100.0 << (int)QLocale::C << QString(); QTest::newRow("data22") << QString("-12.") << Intermediate << -102.0 << -100.0 << (int)QLocale::C << QString(); - QTest::newRow("data23") << QString("-11.11") << Invalid << -102.0 << -101.2 << (int)QLocale::C << QString(); + QTest::newRow("data23") << QString("-11.11") << Intermediate << -102.0 << -101.2 << (int)QLocale::C << QString(); QTest::newRow("data24") << QString("-11.4") << Intermediate << -102.0 << -101.3 << (int)QLocale::C << QString(); QTest::newRow("data25") << QString("11.400") << Invalid << 0.0 << 100.0 << (int)QLocale::C << QString(); QTest::newRow("data26") << QString(".4") << Intermediate << 0.45 << 0.5 << (int)QLocale::C << QString(); QTest::newRow("data27") << QString("+.4") << Intermediate << 0.45 << 0.5 << (int)QLocale::C << QString(); QTest::newRow("data28") << QString("-.4") << Intermediate << -0.5 << -0.45 << (int)QLocale::C << QString(); QTest::newRow("data29") << QString(".4") << Intermediate << 1.0 << 2.4 << (int)QLocale::C << QString(); - QTest::newRow("data30") << QString("-.4") << Invalid << -2.3 << -1.9 << (int)QLocale::C << QString(); + QTest::newRow("data30") << QString("-.4") << Intermediate << -2.3 << -1.9 << (int)QLocale::C << QString(); QTest::newRow("data31") << QString("-42") << Invalid << -2.43 << -1.0 << (int)QLocale::C << QString(); QTest::newRow("data32") << QString("-4") << Invalid << -1.4 << -1.0 << (int)QLocale::C << QString(); QTest::newRow("data33") << QString("-42") << Invalid << -1.4 << -1.0 << (int)QLocale::C << QString(); @@ -712,7 +713,7 @@ void tst_QDoubleSpinBox::valueFromTextAndValidate_data() QTest::newRow("data41") << QString("103.") << Invalid << -102.0 << 11.0 << (int)QLocale::C << QString(); QTest::newRow("data42") << QString("122") << Invalid << 10.0 << 12.2 << (int)QLocale::C << QString(); QTest::newRow("data43") << QString("-2.2") << Intermediate << -12.2 << -3.2 << (int)QLocale::C << QString(); - QTest::newRow("data44") << QString("-2.20") << Invalid << -12.1 << -3.2 << (int)QLocale::C << QString(); + QTest::newRow("data44") << QString("-2.20") << Intermediate << -12.1 << -3.2 << (int)QLocale::C << QString(); QTest::newRow("data45") << QString("200,2") << Invalid << 0.0 << 1000.0 << (int)QLocale::C << QString(); QTest::newRow("data46") << QString("200,2") << Acceptable << 0.0 << 1000.0 << (int)QLocale::German << QString(); QTest::newRow("data47") << QString("2.2") << Acceptable << 0.0 << 1000.0 << (int)QLocale::C << QString(); @@ -1008,6 +1009,31 @@ void tst_QDoubleSpinBox::task221221() QCOMPARE(spin.text(), QLatin1String("1")); } +void tst_QDoubleSpinBox::task255471_decimalsValidation() +{ + // QDoubleSpinBox shouldn't crash with large numbers of decimals. Even if + // the results are useless ;-) + for (int i = 0; i < 32; ++i) + { + QDoubleSpinBox spinBox; + spinBox.setDecimals(i); + spinBox.setMinimum(0.3); + spinBox.setMaximum(12); + + spinBox.show(); + QTRY_VERIFY(spinBox.isVisible()); + spinBox.setFocus(); + QTRY_VERIFY(spinBox.hasFocus()); + + QTest::keyPress(&spinBox, Qt::Key_Right); + QTest::keyPress(&spinBox, Qt::Key_Right); + QTest::keyPress(&spinBox, Qt::Key_Delete); + + // Don't crash! + QTest::keyPress(&spinBox, Qt::Key_2); + } +} + QTEST_MAIN(tst_QDoubleSpinBox) #include "tst_qdoublespinbox.moc" diff --git a/tests/auto/qeasingcurve/tst_qeasingcurve.cpp b/tests/auto/qeasingcurve/tst_qeasingcurve.cpp index 8e0d37d..8cf686e 100644 --- a/tests/auto/qeasingcurve/tst_qeasingcurve.cpp +++ b/tests/auto/qeasingcurve/tst_qeasingcurve.cpp @@ -417,18 +417,18 @@ void tst_QEasingCurve::valueForProgress() // the least significant digit it is still subject to rounding errors qreal error = easeConv - ex; -#ifdef Q_OS_WINCE + qreal errorbound = 0.00001; +#if defined( Q_OS_WINCE ) || defined( Q_OS_SYMBIAN ) // exception values for WINCE(this test should be rewritten, as it only freezes the status quo of QEasingCurve // The failing (2) values are explicitly excepted here: // The source values for the comparison table should remain untruncated double and the // error bound checking function dynamic. Also the source values should come from a "trusted" source and not // from QEasingCurve itself. - qreal errorbound = 0.00001; if ((type == int(QEasingCurve::InOutBounce) && (i == 8 || i == 6) ) || (type == int(QEasingCurve::OutExpo) && i == 2)) - errorbound = 0.0002; -#endif // accept the potential rounding error in the least significant digit - - QVERIFY(error <= errorbound ); + errorbound = 0.0002; +#endif + // accept the potential rounding error in the least significant digit + QVERIFY(error <= errorbound ); } #endif } diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp index 88bf229..7735f30 100644 --- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp +++ b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp @@ -318,9 +318,6 @@ void tst_QFileSystemWatcher::watchDirectory() #ifdef Q_OS_WINCE QEXPECT_FAIL("poller", "Directory does not get updated on file removal(See #137910)", Abort); -#elif defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT) - // Since native watcher is always used in real devices, this poller issue is irrelevant - QEXPECT_FAIL("poller", "Poller doesn't detect directory removal in RVCT builds", Abort); #endif QCOMPARE(changedSpy.count(), 2); QCOMPARE(changedSpy.at(0).count(), 1); @@ -490,11 +487,6 @@ void tst_QFileSystemWatcher::watchFileAndItsDirectory() #ifdef Q_OS_WINCE QEXPECT_FAIL("poller", "Directory does not get updated on file removal(See #137910)", Abort); #endif -#if defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT) - // Since native watcher is always used in real devices, this poller issue is irrelevant - // Symbian file system does not change modification time on a directory when a file inside is changed - QEXPECT_FAIL("poller", "Poller doesn't detect directory changes in RVCT builds", Abort); -#endif QCOMPARE(dirChangedSpy.count(), 1); dirChangedSpy.clear(); diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index 9c58b24..4e46819 100644 --- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -143,9 +143,11 @@ public: // It is only called once. void tst_QGraphicsLinearLayout::initTestCase() { -#ifndef Q_WS_S60 // since the style will influence the results, we have to ensure // that the tests are run using the same style on all platforms +#ifdef Q_WS_S60 + QApplication::setStyle(new QWindowsStyle); +#else QApplication::setStyle(new QPlastiqueStyle); #endif } diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index 1aa515c..95a038b 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -224,6 +224,8 @@ private slots: void task253415_reconnectUpdateSceneOnSceneChanged(); void task255529_transformationAnchorMouseAndViewportMargins(); void task259503_scrollingArtifacts(); + void QTBUG_4151_clipAndIgnore_data(); + void QTBUG_4151_clipAndIgnore(); }; void tst_QGraphicsView::initTestCase() @@ -3733,5 +3735,50 @@ void tst_QGraphicsView::task259503_scrollingArtifacts() QTest::qWait(10); } +void tst_QGraphicsView::QTBUG_4151_clipAndIgnore_data() +{ + QTest::addColumn<bool>("clip"); + QTest::addColumn<bool>("ignoreTransformations"); + QTest::addColumn<int>("numItems"); + + QTest::newRow("none") << false << false << 3; + QTest::newRow("clip") << true << false << 3; + QTest::newRow("ignore") << false << true << 3; + QTest::newRow("clip+ignore") << true << true << 3; +} + +void tst_QGraphicsView::QTBUG_4151_clipAndIgnore() +{ + QFETCH(bool, clip); + QFETCH(bool, ignoreTransformations); + QFETCH(int, numItems); + + QGraphicsScene scene; + + QGraphicsRectItem *parent = new QGraphicsRectItem(QRectF(0, 0, 50, 50), 0); + QGraphicsRectItem *child = new QGraphicsRectItem(QRectF(-10, -10, 40, 40), parent); + QGraphicsRectItem *ignore = new QGraphicsRectItem(QRectF(60, 60, 50, 50), 0); + + if (clip) + parent->setFlags(QGraphicsItem::ItemClipsChildrenToShape); + if (ignoreTransformations) + ignore->setFlag(QGraphicsItem::ItemIgnoresTransformations); + + parent->setBrush(Qt::red); + child->setBrush(QColor(0, 0, 255, 128)); + ignore->setBrush(Qt::green); + + scene.addItem(parent); + scene.addItem(ignore); + + QGraphicsView view(&scene); + view.setFrameStyle(0); + view.resize(75, 75); + view.show(); + QTRY_COMPARE(QApplication::activeWindow(), (QWidget *)&view); + + QCOMPARE(view.items(view.rect()).size(), numItems); +} + QTEST_MAIN(tst_QGraphicsView) #include "tst_qgraphicsview.moc" diff --git a/tests/auto/qlabel/tst_qlabel.cpp b/tests/auto/qlabel/tst_qlabel.cpp index 8a5e344..dd03ef3 100644 --- a/tests/auto/qlabel/tst_qlabel.cpp +++ b/tests/auto/qlabel/tst_qlabel.cpp @@ -57,6 +57,8 @@ # define SRCDIR "" #endif +#include "../../shared/util.h" + class Widget : public QWidget { public: @@ -102,11 +104,11 @@ private slots: void eventPropagation_data(); void eventPropagation(); void focusPolicy(); - + void task190318_sizes(); void sizeHint(); - + void task226479_movieResize(); void emptyPixmap(); @@ -413,16 +415,17 @@ void tst_QLabel::task226479_movieResize() paintedRegion += e->region(); QLabel::paintEvent(e); } - + public: QRegion paintedRegion; }; - + Label label; label.resize(350,350); label.show(); QMovie *movie = new QMovie( &label ); label.setMovie(movie); + QTest::qWaitForWindowShown(&label); movie->setFileName(SRCDIR "red.png"); movie->start(); QTest::qWait(50); @@ -431,8 +434,8 @@ void tst_QLabel::task226479_movieResize() movie->setFileName(SRCDIR "green.png"); movie->start(); QTest::qWait(50); - - QCOMPARE(label.paintedRegion , QRegion(label.rect()) ); + + QTRY_COMPARE(label.paintedRegion , QRegion(label.rect()) ); } void tst_QLabel::emptyPixmap() diff --git a/tests/auto/qmdiarea/tst_qmdiarea.cpp b/tests/auto/qmdiarea/tst_qmdiarea.cpp index 65f1937..b110114 100644 --- a/tests/auto/qmdiarea/tst_qmdiarea.cpp +++ b/tests/auto/qmdiarea/tst_qmdiarea.cpp @@ -639,9 +639,7 @@ void tst_QMdiArea::changeWindowTitle() mw->setCentralWidget( ws ); mw->menuBar(); mw->show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(mw); -#endif + QTest::qWaitForWindowShown(mw); QWidget *widget = new QWidget( ws ); widget->setWindowTitle( wc ); @@ -655,22 +653,17 @@ void tst_QMdiArea::changeWindowTitle() widget->setWindowState(Qt::WindowMaximized); #endif #if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE) - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); + QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); #endif mw->hide(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(mw); -#endif qApp->processEvents(); mw->show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(mw); -#endif qApp->processEvents(); + QTest::qWaitForWindowShown(mw); #if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE) - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); + QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); #endif #ifdef USE_SHOW @@ -688,7 +681,7 @@ void tst_QMdiArea::changeWindowTitle() #endif qApp->processEvents(); #if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE) - QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); + QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) ); widget->setWindowTitle( wc2 ); QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc2) ); mw->setWindowTitle( mwc2 ); @@ -1697,11 +1690,8 @@ void tst_QMdiArea::tileSubWindows() workspace.setActiveSubWindow(windows.at(5)); workspace.resize(workspace.size() - QSize(10, 10)); workspace.setActiveSubWindow(0); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&workspace); -#endif QTest::qWait(250); // delayed re-arrange of minimized windows - QCOMPARE(workspace.viewport()->childrenRect(), workspace.viewport()->rect()); + QTRY_COMPARE(workspace.viewport()->childrenRect(), workspace.viewport()->rect()); // Add another window and verify that the views are not tiled anymore. workspace.addSubWindow(new QPushButton(QLatin1String("I'd like to mess up tiled views")))->show(); @@ -1732,9 +1722,6 @@ void tst_QMdiArea::tileSubWindows() // Verify that we try to resize the area such that all sub-windows are visible. // It's important that tiled windows are NOT overlapping. workspace.resize(350, 150); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&workspace); -#endif qApp->processEvents(); QTRY_COMPARE(workspace.size(), QSize(350, 150)); @@ -1761,13 +1748,10 @@ void tst_QMdiArea::tileSubWindows() #ifdef Q_OS_WINCE QSKIP("Not fixed yet! See task 197453", SkipAll); #endif - QCOMPARE(workspace.viewport()->rect().size(), expectedViewportSize); + QTRY_COMPARE(workspace.viewport()->rect().size(), expectedViewportSize); // Not enough space for all sub-windows to be visible -> provide scroll bars. workspace.resize(150, 150); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&workspace); -#endif qApp->processEvents(); QTRY_COMPARE(workspace.size(), QSize(150, 150)); diff --git a/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp index d5d125a..b897d8f 100644 --- a/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp +++ b/tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp @@ -1648,9 +1648,9 @@ void tst_QMdiSubWindow::resizeTimer() QMdiArea mdiArea; QMdiSubWindow *subWindow = mdiArea.addSubWindow(new QWidget); mdiArea.show(); -#ifdef Q_WS_X11 - qt_x11_wait_for_window_manager(&mdiArea); -#endif + QTest::qWaitForWindowShown(&mdiArea); + QTest::qWait(250); + EventSpy timerEventSpy(subWindow, QEvent::Timer); QCOMPARE(timerEventSpy.count(), 0); diff --git a/tests/auto/qmessagebox/tst_qmessagebox.cpp b/tests/auto/qmessagebox/tst_qmessagebox.cpp index 64e5a9c..5607fbd 100644 --- a/tests/auto/qmessagebox/tst_qmessagebox.cpp +++ b/tests/auto/qmessagebox/tst_qmessagebox.cpp @@ -130,7 +130,7 @@ private slots: void testSymbols(); void incorrectDefaultButton(); void updateSize(); - + void setInformativeText(); void iconPixmap(); @@ -683,7 +683,13 @@ void tst_QMessageBox::incorrectDefaultButton() void tst_QMessageBox::updateSize() { QMessageBox box; +#ifdef Q_WS_S60 + // In S60 messagebox is always occupies maximum width, i.e. screen width + // so we need to have long enough text to split over several line + box.setText("This is awesome long text"); +#else box.setText("This is awesome"); +#endif box.show(); QSize oldSize = box.size(); QString longText; @@ -693,9 +699,12 @@ void tst_QMessageBox::updateSize() QVERIFY(box.size() != oldSize); // should have grown QVERIFY(box.width() > oldSize.width() || box.height() > oldSize.height()); oldSize = box.size(); +#ifndef Q_WS_S60 + // In S60 dialogs buttons are in softkey area -> message box size does not change box.setStandardButtons(QMessageBox::StandardButtons(0xFFFF)); QVERIFY(box.size() != oldSize); // should have grown QVERIFY(box.width() > oldSize.width() || box.height() > oldSize.height()); +#endif } void tst_QMessageBox::setInformativeText() diff --git a/tests/auto/qprocess/qprocess.pro b/tests/auto/qprocess/qprocess.pro index 892686d..77cfc82 100644 --- a/tests/auto/qprocess/qprocess.pro +++ b/tests/auto/qprocess/qprocess.pro @@ -1,7 +1,6 @@ TEMPLATE = subdirs SUBDIRS = \ - testBatFiles \ testProcessCrash \ testProcessEcho \ testProcessEcho2 \ diff --git a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp index f86e81d..51ef2da 100644 --- a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp +++ b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp @@ -55,10 +55,10 @@ public: int duration() const { return -1; /* not time driven */ } protected: - void updateCurrentTime() + void updateCurrentTime(int currentTime) { - QPropertyAnimation::updateCurrentTime(); - if (currentTime() >= QPropertyAnimation::duration() || currentLoop() >= 1) + QPropertyAnimation::updateCurrentTime(currentTime); + if (currentTime >= QPropertyAnimation::duration() || currentLoop() >= 1) stop(); } }; diff --git a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp index 063075d..b193d67 100644 --- a/tests/auto/qscriptcontext/tst_qscriptcontext.cpp +++ b/tests/auto/qscriptcontext/tst_qscriptcontext.cpp @@ -568,6 +568,19 @@ static QScriptValue custom_call(QScriptContext *ctx, QScriptEngine *) return ctx->argumentsObject().property(0).call(QScriptValue(), QScriptValueList() << ctx->argumentsObject().property(1)); } +static QScriptValue native_recurse(QScriptContext *ctx, QScriptEngine *eng) +{ + QScriptValue func = ctx->argumentsObject().property(0); + QScriptValue n = ctx->argumentsObject().property(1); + + if(n.toUInt32() <= 1) { + return func.call(QScriptValue(), QScriptValueList()); + } else { + return eng->evaluate("native_recurse").call(QScriptValue(), + QScriptValueList() << func << QScriptValue(n.toUInt32() - 1)); + } +} + void tst_QScriptContext::backtrace_data() { QTest::addColumn<QString>("code"); @@ -724,6 +737,83 @@ void tst_QScriptContext::backtrace_data() QTest::newRow("call native") << source << expected; } + + { + QLatin1String func( "function f1() {\n" + " eval('var q = 4');\n" + " return custom_call(bt, 22);\n" + "}"); + + QString source = QString::fromLatin1("\n" + "function f2() {\n" + " func = %1\n" + " return custom_call(func, 12);\n" + "}\n" + "f2();\n").arg(func); + + QStringList expected; + expected << "<native>(22) at -1" + << "<native>(function () {\n [native code]\n}, 22) at -1" + << "f1(12) at testfile:5" + << QString::fromLatin1("<native>(%1, 12) at -1").arg(func) + << "f2() at testfile:7" + << "<global>() at testfile:9"; + + + QTest::newRow("calls with closures") << source << expected; + } + + { + QLatin1String func( "function js_bt() {\n" + " return bt();\n" + "}"); + + QString source = QString::fromLatin1("\n" + "%1\n" + "function f() {\n" + " return native_recurse(js_bt, 12);\n" + "}\n" + "f();\n").arg(func); + + QStringList expected; + expected << "<native>() at -1" << "js_bt() at testfile:3"; + for(int n = 1; n <= 12; n++) { + expected << QString::fromLatin1("<native>(%1, %2) at -1") + .arg(func).arg(n); + } + expected << "f() at testfile:6"; + expected << "<global>() at testfile:8"; + + QTest::newRow("native recursive") << source << expected; + } + + { + QString source = QString::fromLatin1("\n" + "function finish() {\n" + " return bt();\n" + "}\n" + "function rec(n) {\n" + " if(n <= 1)\n" + " return finish();\n" + " else\n" + " return rec (n - 1);\n" + "}\n" + "function f() {\n" + " return rec(12);\n" + "}\n" + "f();\n"); + + QStringList expected; + expected << "<native>() at -1" << "finish() at testfile:3"; + for(int n = 1; n <= 12; n++) { + expected << QString::fromLatin1("rec(n = %1) at testfile:%2") + .arg(n).arg((n==1) ? 7 : 9); + } + expected << "f() at testfile:12"; + expected << "<global>() at testfile:14"; + + QTest::newRow("js recursive") << source << expected; + } } @@ -736,6 +826,7 @@ void tst_QScriptContext::backtrace() eng.globalObject().setProperty("bt", eng.newFunction(getBacktrace)); eng.globalObject().setProperty("custom_eval", eng.newFunction(custom_eval)); eng.globalObject().setProperty("custom_call", eng.newFunction(custom_call)); + eng.globalObject().setProperty("native_recurse", eng.newFunction(native_recurse)); QString fileName = "testfile"; QScriptValue ret = eng.evaluate(code, fileName); diff --git a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp index b14d6f8..aa6801a 100644 --- a/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp +++ b/tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp @@ -169,10 +169,10 @@ public: int duration() const { return -1; /* not time driven */ } protected: - void updateCurrentTime() + void updateCurrentTime(int currentTime) { - QPropertyAnimation::updateCurrentTime(); - if (currentTime() >= QPropertyAnimation::duration()) + QPropertyAnimation::updateCurrentTime(currentTime); + if (currentTime >= QPropertyAnimation::duration()) stop(); } }; diff --git a/tests/auto/qsharedmemory/qsystemlock/qsystemlock.pro b/tests/auto/qsharedmemory/qsystemlock/qsystemlock.pro index 2628f19..e232443 100644 --- a/tests/auto/qsharedmemory/qsystemlock/qsystemlock.pro +++ b/tests/auto/qsharedmemory/qsystemlock/qsystemlock.pro @@ -5,9 +5,9 @@ include(../src/src.pri) win32: CONFIG += console mac:CONFIG -= app_bundle -wince*|symbian { +wince* { DEFINES += SRCDIR=\\\"\\\" -} else { +} else:!symbian { DEFINES += SRCDIR=\\\"$$PWD\\\" } diff --git a/tests/auto/qsharedmemory/qsystemlock/tst_qsystemlock.cpp b/tests/auto/qsharedmemory/qsystemlock/tst_qsystemlock.cpp index 87fc3ee..35f05d1 100644 --- a/tests/auto/qsharedmemory/qsystemlock/tst_qsystemlock.cpp +++ b/tests/auto/qsharedmemory/qsystemlock/tst_qsystemlock.cpp @@ -46,6 +46,13 @@ //TESTED_CLASS= //TESTED_FILES= +#ifdef Q_OS_SYMBIAN +// In Symbian OS test data is located in applications private dir +// And underlying Open C have application private dir in default search path +#define SRCDIR "" +#endif + + #define EXISTING_SHARE "existing" class tst_QSystemLock : public QObject @@ -223,7 +230,7 @@ void tst_QSystemLock::processes() QCOMPARE(consumers.first()->exitCode(), 0); delete consumers.takeFirst(); } - QCOMPARE(failedProcesses, unsigned int(0)); + QCOMPARE(failedProcesses, (unsigned int)(0)); } QTEST_MAIN(tst_QSystemLock) diff --git a/tests/auto/qsoftkeymanager/tst_qsoftkeymanager.cpp b/tests/auto/qsoftkeymanager/tst_qsoftkeymanager.cpp index 81ef498..832605e 100644 --- a/tests/auto/qsoftkeymanager/tst_qsoftkeymanager.cpp +++ b/tests/auto/qsoftkeymanager/tst_qsoftkeymanager.cpp @@ -42,6 +42,8 @@ #include <QtTest/QtTest> #include "qevent.h" +#include "qdialog.h" +#include "qdialogbuttonbox.h" #include "private/qsoftkeymanager_p.h" class tst_QSoftKeyManager : public QObject @@ -59,6 +61,8 @@ public slots: void cleanup(); private slots: void updateSoftKeysCompressed(); + void handleCommand(); + void checkSoftkeyEnableStates(); }; class EventListener : public QObject @@ -133,6 +137,56 @@ void tst_QSoftKeyManager::updateSoftKeysCompressed() QVERIFY(listener.numUpdateSoftKeys == 1); } +/* + This tests that when the S60 environment sends us a command + that it actually gets mapped to the correct action. +*/ +void tst_QSoftKeyManager::handleCommand() +{ + QDialog w; + QDialogButtonBox *buttons = new QDialogButtonBox( + QDialogButtonBox::Ok | QDialogButtonBox::Cancel, + Qt::Horizontal, + &w); + + w.show(); + QApplication::processEvents(); + + QCOMPARE(w.actions().count(), 2); + + QSignalSpy spy0(w.actions()[0], SIGNAL(triggered())); + QSignalSpy spy1(w.actions()[1], SIGNAL(triggered())); + + // These should work eventually, but do not yet +// QTest::keyPress(&w, Qt::Key_Context1); +// QTest::keyPress(&w, Qt::Key_Context2); + + qApp->symbianHandleCommand(6000); + qApp->symbianHandleCommand(6001); + + QApplication::processEvents(); + + QCOMPARE(spy0.count(), 1); + QCOMPARE(spy1.count(), 1); +} + +/* + This tests that softkey enable state follows the state of widget that owns the action + to which the softkey is related to. +*/ +void tst_QSoftKeyManager::checkSoftkeyEnableStates() +{ + QWidget w1, w2; + w1.setEnabled(false); + w2.setEnabled(true); + + QAction *disabledAction = QSoftKeyManager::createAction(QSoftKeyManager::OkSoftKey, &w1); + QAction *enabledAction = QSoftKeyManager::createAction(QSoftKeyManager::OkSoftKey, &w2); + + QVERIFY(disabledAction->isEnabled()==false); + QVERIFY(enabledAction->isEnabled()==true); +} + QTEST_MAIN(tst_QSoftKeyManager) #include "tst_qsoftkeymanager.moc" diff --git a/tests/auto/qspinbox/tst_qspinbox.cpp b/tests/auto/qspinbox/tst_qspinbox.cpp index 69347c4..4829b6b 100644 --- a/tests/auto/qspinbox/tst_qspinbox.cpp +++ b/tests/auto/qspinbox/tst_qspinbox.cpp @@ -653,21 +653,21 @@ void tst_QSpinBox::valueFromTextAndValidate_data() QTest::addColumn<int>("maxi"); QTest::addColumn<QString>("expectedText"); // if empty we don't check - QTest::newRow("data0") << QString("2") << Invalid << 3 << 5 << QString(); + QTest::newRow("data0") << QString("2") << Intermediate << 3 << 5 << QString(); QTest::newRow("data1") << QString() << Intermediate << 0 << 100 << QString(); QTest::newRow("data2") << QString("asd") << Invalid << 0 << 100 << QString(); QTest::newRow("data3") << QString("2") << Acceptable << 0 << 100 << QString(); QTest::newRow("data4") << QString() << Intermediate << 0 << 1 << QString(); QTest::newRow("data5") << QString() << Invalid << 0 << 0 << QString(); QTest::newRow("data5") << QString("5") << Intermediate << 2004 << 2005 << QString(); - QTest::newRow("data6") << QString("50") << Invalid << 2004 << 2005 << QString(); + QTest::newRow("data6") << QString("50") << Intermediate << 2004 << 2005 << QString(); QTest::newRow("data7") << QString("205") << Intermediate << 2004 << 2005 << QString(); QTest::newRow("data8") << QString("2005") << Acceptable << 2004 << 2005 << QString(); - QTest::newRow("data9") << QString("3") << Invalid << 2004 << 2005 << QString(); + QTest::newRow("data9") << QString("3") << Intermediate << 2004 << 2005 << QString(); QTest::newRow("data10") << QString("-") << Intermediate << -20 << -10 << QString(); QTest::newRow("data11") << QString("-1") << Intermediate << -20 << -10 << QString(); QTest::newRow("data12") << QString("-5") << Intermediate << -20 << -10 << QString(); - QTest::newRow("data13") << QString("-5") << Invalid << -20 << -16 << QString(); + QTest::newRow("data13") << QString("-5") << Intermediate << -20 << -16 << QString(); QTest::newRow("data14") << QString("-2") << Intermediate << -20 << -16 << QString(); QTest::newRow("data15") << QString("2") << Invalid << -20 << -16 << QString(); QTest::newRow("data16") << QString() << Intermediate << -20 << -16 << QString(); diff --git a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp index ce2396d..4175bef 100644 --- a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp +++ b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp @@ -2001,6 +2001,10 @@ void tst_QSqlDatabase::odbc_bindBoolean() QSqlDatabase db = QSqlDatabase::database(dbName); CHECK_DATABASE(db); + if (tst_Databases::isMySQL(db)) { + QSKIP("MySql has inconsistent behaviour of bit field type across versions.", SkipSingle); + return; + } QSqlQuery q(db); QVERIFY_SQL(q, exec("CREATE TABLE " + qTableName("qtestBindBool") + "(id int, boolvalue bit)")); diff --git a/tests/auto/qstatemachine/tst_qstatemachine.cpp b/tests/auto/qstatemachine/tst_qstatemachine.cpp index a3f2f54..7244d72 100644 --- a/tests/auto/qstatemachine/tst_qstatemachine.cpp +++ b/tests/auto/qstatemachine/tst_qstatemachine.cpp @@ -1742,11 +1742,18 @@ class TestSignalTransition : public QSignalTransition { public: TestSignalTransition(QState *sourceState = 0) - : QSignalTransition(sourceState) {} + : QSignalTransition(sourceState), m_sender(0) + {} TestSignalTransition(QObject *sender, const char *signal, QAbstractState *target) - : QSignalTransition(sender, signal) + : QSignalTransition(sender, signal), m_sender(0) { setTargetState(target); } + QObject *senderReceived() const { + return m_sender; + } + int signalIndexReceived() const { + return m_signalIndex; + } QVariantList argumentsReceived() const { return m_args; } @@ -1754,11 +1761,15 @@ protected: bool eventTest(QEvent *e) { if (!QSignalTransition::eventTest(e)) return false; - QSignalEvent *se = static_cast<QSignalEvent*>(e); - const_cast<TestSignalTransition*>(this)->m_args = se->arguments(); + QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e); + m_sender = se->sender(); + m_signalIndex = se->signalIndex(); + m_args = se->arguments(); return true; } private: + QObject *m_sender; + int m_signalIndex; QVariantList m_args; }; @@ -1870,6 +1881,8 @@ void tst_QStateMachine::signalTransitions() emitter.emitSignalWithIntArg(123); QTRY_COMPARE(finishedSpy.count(), 1); + QCOMPARE(trans->senderReceived(), (QObject*)&emitter); + QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithIntArg(int)")); QCOMPARE(trans->argumentsReceived().size(), 1); QCOMPARE(trans->argumentsReceived().at(0).toInt(), 123); } @@ -1890,6 +1903,8 @@ void tst_QStateMachine::signalTransitions() emitter.emitSignalWithStringArg(testString); QTRY_COMPARE(finishedSpy.count(), 1); + QCOMPARE(trans->senderReceived(), (QObject*)&emitter); + QCOMPARE(trans->signalIndexReceived(), emitter.metaObject()->indexOfSignal("signalWithStringArg(QString)")); QCOMPARE(trans->argumentsReceived().size(), 1); QCOMPARE(trans->argumentsReceived().at(0).toString(), testString); } @@ -2028,6 +2043,38 @@ void tst_QStateMachine::signalTransitions() } } +class TestEventTransition : public QEventTransition +{ +public: + TestEventTransition(QState *sourceState = 0) + : QEventTransition(sourceState), + m_eventSource(0), m_eventType(QEvent::None) + {} + TestEventTransition(QObject *object, QEvent::Type type, + QAbstractState *target) + : QEventTransition(object, type), + m_eventSource(0), m_eventType(QEvent::None) + { setTargetState(target); } + QObject *eventSourceReceived() const { + return m_eventSource; + } + QEvent::Type eventTypeReceived() const { + return m_eventType; + } +protected: + bool eventTest(QEvent *e) { + if (!QEventTransition::eventTest(e)) + return false; + QStateMachine::WrappedEvent *we = static_cast<QStateMachine::WrappedEvent*>(e); + m_eventSource = we->object(); + m_eventType = we->event()->type(); + return true; + } +private: + QObject *m_eventSource; + QEvent::Type m_eventType; +}; + void tst_QStateMachine::eventTransitions() { QPushButton button; @@ -2274,6 +2321,30 @@ void tst_QStateMachine::eventTransitions() QTest::ignoreMessage(QtWarningMsg, "QObject event transitions are not supported for custom types"); QTRY_COMPARE(startedSpy.count(), 1); } + // custom transition + { + QStateMachine machine; + QState *s0 = new QState(&machine); + QFinalState *s1 = new QFinalState(&machine); + + TestEventTransition *trans = new TestEventTransition(&button, QEvent::MouseButtonPress, s1); + s0->addTransition(trans); + QCOMPARE(trans->eventSourceReceived(), (QObject*)0); + QCOMPARE(trans->eventTypeReceived(), QEvent::None); + + QSignalSpy finishedSpy(&machine, SIGNAL(finished())); + machine.setInitialState(s0); + machine.start(); + QCoreApplication::processEvents(); + + QTest::mousePress(&button, Qt::LeftButton); + QCoreApplication::processEvents(); + + QTRY_COMPARE(finishedSpy.count(), 1); + + QCOMPARE(trans->eventSourceReceived(), (QObject*)&button); + QCOMPARE(trans->eventTypeReceived(), QEvent::MouseButtonPress); + } } void tst_QStateMachine::historyStates() @@ -3954,7 +4025,7 @@ public: void onTransition(QEvent *e) { QSignalTransition::onTransition(e); - QSignalEvent *se = static_cast<QSignalEvent*>(e); + QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(e); eventSignalIndex = se->signalIndex(); } diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp index f5d5040..71218a3 100644 --- a/tests/auto/qtableview/tst_qtableview.cpp +++ b/tests/auto/qtableview/tst_qtableview.cpp @@ -2339,6 +2339,7 @@ void tst_QTableView::scrollTo() // resizing to this size will ensure that there can ONLY_BE_ONE_CELL inside the view. QSize forcedSize(columnWidth * 2, rowHeight * 2); view.resize(forcedSize); + QTest::qWaitForWindowShown(&view); QTest::qWait(0); QTRY_COMPARE(view.size(), forcedSize); diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp index c0d7ed3..f393393 100644 --- a/tests/auto/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp @@ -1787,21 +1787,17 @@ void tst_QTextDocument::cursorPositionChangedOnSetText() { CursorPosSignalSpy spy(doc); - cursor = QTextCursor(); + // doc has one QTextCursor stored in the + // cursor member variable, thus the signal + // gets emitted once. doc->setPlainText("Foo\nBar\nBaz\nBlub\nBlah"); - // the signal should still be emitted once for the QTextCursor that - // QTextDocument::setPlainText creates temporarily. But the signal - // should not be emitted more often. QCOMPARE(spy.calls, 1); spy.calls = 0; doc->setHtml("<p>Foo<p>Bar<p>Baz<p>Blah"); - // the signal should still be emitted once for the QTextCursor that - // QTextDocument::setPlainText creates temporarily. But the signal - // should not be emitted more often. QCOMPARE(spy.calls, 1); } diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index 4536ed7..4cf9e8f 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -1756,11 +1756,11 @@ void tst_QWidget::setTabOrder() container.show(); container.activateWindow(); + qApp->setActiveWindow(&container); #ifdef Q_WS_X11 QTest::qWaitForWindowShown(&container); QTest::qWait(50); #endif - qApp->setActiveWindow(&container); QTest::qWait(100); @@ -2316,8 +2316,9 @@ void tst_QWidget::showMinimizedKeepsFocus() QTRY_COMPARE(qApp->focusWidget(), static_cast<QWidget*>(0)); window.showNormal(); - QTest::qWait(30); qApp->setActiveWindow(&window); + QTest::qWaitForWindowShown(&window); + QTest::qWait(30); #ifdef Q_WS_MAC if (!macHasAccessToWindowsServer()) QEXPECT_FAIL("", "When not having WindowServer access, we lose focus.", Continue); @@ -3116,7 +3117,7 @@ void tst_QWidget::saveRestoreGeometry() widget.resize(size); widget.show(); QTest::qWaitForWindowShown(&widget); - QTest::qWait(100); + QTest::qWait(200); QTRY_COMPARE(widget.geometry().size(), size); QRect geom; @@ -3126,15 +3127,15 @@ void tst_QWidget::saveRestoreGeometry() geom = widget.geometry(); widget.setWindowState(widget.windowState() | Qt::WindowFullScreen); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); - QTest::qWait(100); + QTest::qWait(200); QVERIFY(widget.restoreGeometry(savedGeometry)); - QTest::qWait(20); + QTest::qWait(120); QTRY_VERIFY(!(widget.windowState() & Qt::WindowFullScreen)); QTRY_COMPARE(widget.geometry(), geom); //Restore to full screen widget.setWindowState(widget.windowState() | Qt::WindowFullScreen); - QTest::qWait(20); + QTest::qWait(120); QTRY_VERIFY((widget.windowState() & Qt::WindowFullScreen)); QTest::qWait(200); savedGeometry = widget.saveGeometry(); @@ -3165,7 +3166,7 @@ void tst_QWidget::saveRestoreGeometry() QTest::qWait(20); QTRY_VERIFY((widget.windowState() & Qt::WindowMaximized)); QTRY_VERIFY(widget.geometry() != geom); - QTest::qWait(100); + QTest::qWait(200); QVERIFY(widget.restoreGeometry(savedGeometry)); QTest::qWait(20); QTRY_COMPARE(widget.geometry(), geom); @@ -5388,7 +5389,7 @@ void tst_QWidget::showAndMoveChild() child.move(desktopDimensions.width()/2, desktopDimensions.height()/2); qApp->processEvents(); - verifyColor(child.geometry().translated(tlwOffset), Qt::blue); + verifyColor(child.geometry().translated(tlwOffset), Qt::blue); verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset), Qt::red); } @@ -6407,7 +6408,7 @@ void tst_QWidget::render() qApp->processEvents(); qApp->sendPostedEvents(); - QTest::qWait(100); + QTest::qWait(250); QImage sourceImage = QPixmap::grabWidget(&source).toImage(); qApp->processEvents(); @@ -6513,6 +6514,7 @@ void tst_QWidget::renderInvisible() dummyFocusWidget.show(); QTest::qWaitForWindowShown(&dummyFocusWidget); qApp->processEvents(); + QTest::qWait(100); // Create normal reference image. const QSize calendarSize = calendar->size(); @@ -9152,38 +9154,38 @@ void tst_QWidget::destroyBackingStore() void tst_QWidget::rectOutsideCoordinatesLimit_task144779() { - QWidget main; + QApplication::setOverrideCursor(Qt::BlankCursor); //keep the cursor out of screen grabs + QWidget main(0,0,Qt::FramelessWindowHint); //don't get confused by the size of the window frame QPalette palette; palette.setColor(QPalette::Window, Qt::red); main.setPalette(palette); + QDesktopWidget desktop; QRect desktopDimensions = desktop.availableGeometry(&main); - main.setGeometry(desktopDimensions); + QSize mainSize(400, 400); + mainSize = mainSize.boundedTo(desktopDimensions.size()); + main.resize(mainSize); QWidget *offsetWidget = new QWidget(&main); - offsetWidget->setGeometry(0, -14600, desktopDimensions.width(), 15000); + offsetWidget->setGeometry(0, -(15000 - mainSize.height()), mainSize.width(), 15000); // big widget is too big for the coordinates, it must be limited by wrect // if wrect is not at the right position because of offsetWidget, bigwidget // is not painted correctly QWidget *bigWidget = new QWidget(offsetWidget); - - bigWidget->setGeometry(0, 0, desktopDimensions.width(), 50000); + bigWidget->setGeometry(0, 0, mainSize.width(), 50000); palette.setColor(QPalette::Window, Qt::green); bigWidget->setPalette(palette); bigWidget->setAutoFillBackground(true); main.show(); QTest::qWaitForWindowShown(&main); - QTest::qWait(50); - QCursor::setPos(main.pos()); //get the cursor out of the picture - QTest::qWait(50); QPixmap correct(main.size()); correct.fill(Qt::green); - QRect center(desktopDimensions.width()/4,desktopDimensions.width()/4, desktopDimensions.width()/2, desktopDimensions.width()/2); // to avoid the decorations - QTRY_COMPARE(QPixmap::grabWindow(main.winId()).toImage().copy(center), correct.toImage().copy(center)); + QTRY_COMPARE(QPixmap::grabWindow(main.winId()).toImage(), correct.toImage()); + QApplication::restoreOverrideCursor(); } void tst_QWidget::inputFocus_task257832() diff --git a/tests/auto/qwindowsurface/tst_qwindowsurface.cpp b/tests/auto/qwindowsurface/tst_qwindowsurface.cpp index 2c5ba72..0a6b7ad 100644 --- a/tests/auto/qwindowsurface/tst_qwindowsurface.cpp +++ b/tests/auto/qwindowsurface/tst_qwindowsurface.cpp @@ -230,7 +230,7 @@ void tst_QWindowSurface::grabWidget() parentWidget.show(); QTest::qWaitForWindowShown(&parentWidget); - QTest::qWait(20); + QTest::qWait(120); QPixmap parentPixmap = parentWidget.windowSurface()->grabWidget(&parentWidget); QPixmap childPixmap = childWidget.windowSurface()->grabWidget(&childWidget); |