diff options
Diffstat (limited to 'tests/auto/widgets')
7 files changed, 113 insertions, 66 deletions
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro b/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro index 6e08e2d02b..166306757c 100644 --- a/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro +++ b/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro @@ -5,5 +5,3 @@ QT += core-private gui testlib SOURCES += tst_qfilesystemmodel.cpp TARGET = tst_qfilesystemmodel - -win32:CONFIG += insignificant_test # QTBUG-24291 diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp index 8724bf63c8..fe374b1e8d 100644 --- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -51,6 +51,10 @@ #include <QTime> #include <QStyle> #include <QtGlobal> +#include <QTemporaryDir> +#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) +# include <qt_windows.h> // for SetFileAttributes +#endif #define WAITTIME 1000 @@ -69,13 +73,13 @@ class tst_QFileSystemModel : public QObject { public: tst_QFileSystemModel(); - virtual ~tst_QFileSystemModel(); public Q_SLOTS: void init(); void cleanup(); private slots: + void initTestCase(); void indexPath(); void rootPath(); @@ -122,29 +126,17 @@ private slots: void roleNames(); protected: - bool createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount = 0, const QStringList &intial_dirs = QStringList(), const QString &baseDir = QDir::temp().absolutePath()); + bool createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount = 0, const QStringList &intial_dirs = QStringList()); private: QFileSystemModel *model; QString flatDirTestPath; + QTemporaryDir m_tempDir; }; tst_QFileSystemModel::tst_QFileSystemModel() : model(0) { qRegisterMetaType<QModelIndex>("QModelIndex"); - - QTime midnight(0, 0, 0); - qsrand(midnight.secsTo(QTime::currentTime())); - // generating unique temporary directory name - flatDirTestPath = QDir::temp().path() + '/' + QString("flatdirtest.") + QString::number(qrand()); -} - -tst_QFileSystemModel::~tst_QFileSystemModel() -{ - QString tmp = flatDirTestPath; - QDir dir(tmp); - if (dir.exists() && !dir.rmdir(tmp)) - qWarning("failed to remove tmp dir %s", dir.dirName().toAscii().data()); } void tst_QFileSystemModel::init() @@ -178,6 +170,12 @@ void tst_QFileSystemModel::cleanup() } } +void tst_QFileSystemModel::initTestCase() +{ + QVERIFY(m_tempDir.isValid()); + flatDirTestPath = m_tempDir.path(); +} + void tst_QFileSystemModel::indexPath() { #if !defined(Q_OS_WIN) @@ -367,15 +365,8 @@ void tst_QFileSystemModel::iconProvider() delete custom; } -bool tst_QFileSystemModel::createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount, const QStringList &initial_dirs, const QString &dir) +bool tst_QFileSystemModel::createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount, const QStringList &initial_dirs) { - QDir baseDir(dir); - if (!baseDir.exists(test_path)) { - if (!baseDir.mkdir(test_path) && false) { - qDebug() << "failed to create dir" << test_path; - return false; - } - } //qDebug() << (model->rowCount(model->index(test_path))) << existingFileCount << initial_files; TRY_WAIT((model->rowCount(model->index(test_path)) == existingFileCount)); for (int i = 0; i < initial_dirs.count(); ++i) { @@ -406,8 +397,21 @@ bool tst_QFileSystemModel::createFiles(const QString &test_path, const QStringLi } file.close(); #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) - if (initial_files.at(i)[0] == '.') - QProcess::execute(QString("attrib +h %1").arg(file.fileName())); + if (initial_files.at(i)[0] == '.') { + QString hiddenFile = QDir::toNativeSeparators(file.fileName()); + wchar_t nativeHiddenFile[MAX_PATH]; + qMemSet(nativeHiddenFile, 0, sizeof(nativeHiddenFile)); + hiddenFile.toWCharArray(nativeHiddenFile); + DWORD currentAttributes = ::GetFileAttributes(nativeHiddenFile); + if (currentAttributes == 0xFFFFFFFF) { + qErrnoWarning("failed to get file attributes: %s", qPrintable(hiddenFile)); + return false; + } + if (!::SetFileAttributes(nativeHiddenFile, currentAttributes | FILE_ATTRIBUTE_HIDDEN)) { + qErrnoWarning("failed to set file hidden: %s", qPrintable(hiddenFile)); + return false; + } + } #endif //qDebug() << test_path + '/' + initial_files.at(i) << (QFile::exists(test_path + '/' + initial_files.at(i))); } @@ -818,16 +822,8 @@ void tst_QFileSystemModel::sort() myModel->d_func()->disableRecursiveSort = true; #endif - QDir dir(QDir::tempPath()); - //initialize the randomness - qsrand(QDateTime::currentDateTime().toTime_t()); - QString tempName = QLatin1String("sortTemp.") + QString::number(qrand()); - dir.mkdir(tempName); - dir.cd(tempName); - QTRY_VERIFY(dir.exists()); - + QDir dir(flatDirTestPath); const QString dirPath = dir.absolutePath(); - QVERIFY(dir.exists()); //Create a file that will be at the end when sorting by name (For Mac, the default) //but if we sort by size descending it will be the first @@ -889,14 +885,6 @@ void tst_QFileSystemModel::sort() delete tree; delete myModel; - - dir.setPath(QDir::tempPath()); - dir.cd(tempName); - tempFile.remove(); - tempFile2.remove(); - dir.cdUp(); - dir.rmdir(tempName); - } void tst_QFileSystemModel::mkdir() @@ -978,29 +966,17 @@ void tst_QFileSystemModel::drives() void tst_QFileSystemModel::dirsBeforeFiles() { - const QString dirPath = QString("%1/task221717_sortedOrder_test_dir").arg(QDir::tempPath()); - QDir dir(dirPath); - // clean up from last time - if (dir.exists()) { - for (int i = 0; i < 3; ++i) { - QLatin1Char c('a' + i); - dir.rmdir(QString("%1-dir").arg(c)); - QFile::remove(dirPath + QString("/%1-file").arg(c)); - } - dir.rmdir(dirPath); - } - QVERIFY(dir.mkpath(dirPath)); - QVERIFY(QDir(dirPath).exists()); + QDir dir(flatDirTestPath); for (int i = 0; i < 3; ++i) { QLatin1Char c('a' + i); dir.mkdir(QString("%1-dir").arg(c)); - QFile file(dirPath + QString("/%1-file").arg(c)); + QFile file(flatDirTestPath + QString("/%1-file").arg(c)); file.open(QIODevice::ReadWrite); file.close(); } - QModelIndex root = model->setRootPath(dirPath); + QModelIndex root = model->setRootPath(flatDirTestPath); QTest::qWait(1000); // allow model to be notified by the file system watcher // ensure that no file occurs before a directory diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp index 872c13216f..9d9b55cafd 100644 --- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp +++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp @@ -562,8 +562,8 @@ void tst_QWizard::setDefaultProperty() // make sure the data structure is reasonable for (int i = 0; i < 200000; ++i) { - wizard.setDefaultProperty("QLineEdit", "x" + QByteArray::number(i), 0); - wizard.setDefaultProperty("QLabel", "y" + QByteArray::number(i), 0); + wizard.setDefaultProperty("QLineEdit", QByteArray("x" + QByteArray::number(i)).constData(), 0); + wizard.setDefaultProperty("QLabel", QByteArray("y" + QByteArray::number(i)).constData(), 0); } } diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp index ca5b992012..843b584ce5 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp @@ -3379,10 +3379,11 @@ void tst_QGraphicsProxyWidget::updateAndDelete() // Update and hide. proxy->update(); proxy->hide(); - QTRY_COMPARE(view.npaints, 1); #ifdef Q_OS_MAC - QEXPECT_FAIL("", "QTBUG-23700", Continue); + QEXPECT_FAIL("", "QTBUG-23700", Abort); #endif + + QTRY_COMPARE(view.npaints, 1); QCOMPARE(view.paintEventRegion, expectedRegion); proxy->show(); diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp index 84dea04c45..af76b1c3c1 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp @@ -69,6 +69,7 @@ #include <QtWidgets/QStyle> #include <QtWidgets/QPushButton> #include <QtWidgets/QDesktopWidget> +#include <private/qgraphicsscene_p.h> #include <private/qgraphicsview_p.h> #include "../../../platformquirks.h" #include "../../../shared/platforminputcontext.h" @@ -136,6 +137,14 @@ protected: QEvent::Type spied; }; +#if defined QT_BUILD_INTERNAL +class FriendlyGraphicsScene : public QGraphicsScene +{ + friend class tst_QGraphicsView; + Q_DECLARE_PRIVATE(QGraphicsScene); +}; +#endif + class tst_QGraphicsView : public QObject { Q_OBJECT @@ -167,6 +176,10 @@ private slots: void ensureVisibleRect(); void fitInView(); void itemsAtPoint(); +#if defined QT_BUILD_INTERNAL + void itemsAtPosition_data(); + void itemsAtPosition(); +#endif void itemsInRect(); void itemsInRect_cosmeticAdjust_data(); void itemsInRect_cosmeticAdjust(); @@ -1354,6 +1367,55 @@ void tst_QGraphicsView::itemsAtPoint() QCOMPARE(items.takeFirst()->zValue(), qreal(-1)); } +#if defined QT_BUILD_INTERNAL +void tst_QGraphicsView::itemsAtPosition_data() +{ + QTest::addColumn<float>("rotation"); + QTest::addColumn<float>("scale"); + QTest::addColumn<QPoint>("viewPos"); + QTest::addColumn<bool>("ignoreTransform"); + QTest::addColumn<bool>("hit"); + QTest::newRow("scaled + ignore transform, no hit") << 0.0f << 1000.0f << QPoint(0, 0) << true << false; + QTest::newRow("scaled + ignore transform, hit") << 0.0f << 1000.0f << QPoint(100, 100) << true << true; + QTest::newRow("rotated + scaled, no hit") << 45.0f << 2.0f << QPoint(90, 90) << false << false; + QTest::newRow("rotated + scaled, hit") << 45.0f << 2.0f << QPoint(100, 100) << false << true; +} + +void tst_QGraphicsView::itemsAtPosition() +{ + QFETCH(float, rotation); + QFETCH(float, scale); + QFETCH(QPoint, viewPos); + QFETCH(bool, ignoreTransform); + QFETCH(bool, hit); + + FriendlyGraphicsScene scene; + scene.setSceneRect(QRect(-100, -100, 200, 200)); + QGraphicsItem *item = scene.addRect(-5, -5, 10, 10); + + if (ignoreTransform) + item->setFlag(QGraphicsItem::ItemIgnoresTransformations); + + QGraphicsView view; + view.setFrameStyle(QFrame::NoFrame); + view.resize(200, 200); + view.scale(scale, scale); + view.rotate(rotation); + view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view.setScene(&scene); + view.show(); + QTest::qWaitForWindowShown(&view); + + QPoint screenPos = view.viewport()->mapToGlobal(viewPos); + QPointF scenePos = view.mapToScene(viewPos); + QGraphicsScenePrivate *viewPrivate = scene.d_func(); + QList<QGraphicsItem *> items; + items = viewPrivate->itemsAtPosition(screenPos, scenePos, view.viewport()); + QCOMPARE(!items.empty(), hit); +} +#endif + void tst_QGraphicsView::itemsInRect() { QGraphicsScene scene; diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp index 98872cb2f6..9bbb6aa7f6 100644 --- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp +++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp @@ -605,9 +605,6 @@ public slots: void tst_QApplication::quitOnLastWindowClosed() { -#ifdef Q_OS_WIN32 - QSKIP("This test crashes on Windows. Remove skip once the issue causing the crash is fixed (QTBUG-24300)."); -#endif #ifndef Q_OS_MAC // Test hangs on Mac OS X, see QTBUG-24319 { diff --git a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp index 6021f90ed4..cff847474c 100644 --- a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp +++ b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp @@ -93,6 +93,7 @@ private slots: void setValue_data(); void setValue(); void setRepeatAction(); + void connectedSliders(); private: void waitUntilTimeElapsed(const QTime& t, int ms); @@ -1259,5 +1260,17 @@ void tst_QAbstractSlider::setRepeatAction() QCOMPARE(slider->value(), 115); } +void tst_QAbstractSlider::connectedSliders() +{ + Slider *slider2 = new Slider(topLevel); + connect(slider, SIGNAL(rangeChanged(int, int)), slider2, SLOT(setRange(int, int))); + const int sliderlow = 13; + const int sliderhigh = 1017; + slider->setRange(sliderlow, sliderhigh); + QCOMPARE(slider2->minimum(), sliderlow); + QCOMPARE(slider2->maximum(), sliderhigh); + delete slider2; +} + QTEST_MAIN(tst_QAbstractSlider) #include "tst_qabstractslider.moc" |