diff options
Diffstat (limited to 'tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp')
-rw-r--r-- | tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp | 66 |
1 files changed, 61 insertions, 5 deletions
diff --git a/tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp b/tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp index 19e35703fd..243d767c80 100644 --- a/tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp +++ b/tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp @@ -1,22 +1,35 @@ // Copyright (C) 2022 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtTest/QtTest> #include <QtTest/QSignalSpy> #include <QtQuick/qquickwindow.h> #include <QtQuick/private/qquickdrag_p_p.h> -class tst_QQuickDragAttached: public QObject +#include <QtQuickTestUtils/private/qmlutils_p.h> + +class tst_QQuickDragAttached: public QQmlDataTest { Q_OBJECT +public: + tst_QQuickDragAttached(); + private slots: void setMimeData_data(); void setMimeData(); + void imageSourceSize_data(); + void imageSourceSize(); + void startDrag_data(); void startDrag(); }; +tst_QQuickDragAttached::tst_QQuickDragAttached() + : QQmlDataTest(QT_QMLTEST_DATADIR) +{ +} + void tst_QQuickDragAttached::setMimeData_data() { QTest::addColumn<QVariantMap>("mimeData"); @@ -53,9 +66,9 @@ void tst_QQuickDragAttached::setMimeData_data() QTest::addRow("text/uri-list, variant") << makeMap("text/uri-list", QVariantList{QVariant("file://foo")}) << QStringList{"text/uri-list"}; - QTest::addRow("mismatch image") - << makeMap("image/png", "not an image") - << QStringList{}; + QTest::addRow("application/json") + << makeMap("application/json", "{}") + << QStringList{"application/json"}; QTest::addRow("missing charset") << makeMap("text/plain;charset=", QString("foo")) << QStringList{}; @@ -91,6 +104,45 @@ void tst_QQuickDragAttached::setMimeData() QCOMPARE(spy.count(), expectedCount); } +void tst_QQuickDragAttached::imageSourceSize_data() +{ + QTest::addColumn<bool>("sizeFirst"); + QTest::addColumn<QSize>("imageSourceSize"); + QTest::addColumn<QSize>("expectedSourceSize"); + QTest::addColumn<QSize>("expectedImageSize"); + + QTest::addRow("default size") << false << QSize() << QSize(462, 339) << QSize(462, 339); + QTest::addRow("shrunken elongated") << false << QSize(214, 114) << QSize(214, 114) << QSize(214, 114); + QTest::addRow("width, neg height") << false << QSize(154, -1) << QSize(154, 339) << QSize(154, 339); + QTest::addRow("width, zero height") << false << QSize(154, 0) << QSize(154, 0) << QSize(154, 113); + + QTest::addRow("size first: default size") << true << QSize() << QSize(462, 339) << QSize(462, 339); + QTest::addRow("size first: shrunken elongated") << true << QSize(214, 114) << QSize(214, 114) << QSize(214, 114); + QTest::addRow("size first: width, neg height") << true << QSize(154, -1) << QSize(154, 113) << QSize(154, 113); + QTest::addRow("size first: width, zero height") << true << QSize(154, 0) << QSize(154, 0) << QSize(154, 113); +} + +void tst_QQuickDragAttached::imageSourceSize() +{ + QFETCH(bool, sizeFirst); + QFETCH(QSize, imageSourceSize); + QFETCH(QSize, expectedSourceSize); + QFETCH(QSize, expectedImageSize); + + QQuickDragAttached attached(nullptr); + QSignalSpy spy(&attached, &QQuickDragAttached::imageSourceSizeChanged); + + if (sizeFirst) + attached.setImageSourceSize(imageSourceSize); + attached.setImageSource(testFileUrl("qt_logo.svg")); + attached.setImageSourceSize(imageSourceSize); + + const int expectedCount = imageSourceSize.width() >= 0 || imageSourceSize.height() >= 0 ? 1 : 0; + QCOMPARE(spy.count(), expectedCount); + QCOMPARE(attached.imageSourceSize(), expectedSourceSize); + QCOMPARE(QQuickDragAttachedPrivate::get(&attached)->pixmapLoader.image().size(), expectedImageSize); +} + void tst_QQuickDragAttached::startDrag_data() { setMimeData_data(); @@ -116,7 +168,11 @@ void tst_QQuickDragAttached::startDrag() std::unique_ptr<QMimeData> data(d->createMimeData()); QVERIFY(data); + auto debugHelper = qScopeGuard([&data]{ + qWarning() << data->formats(); + }); QCOMPARE(data->formats(), formats); + debugHelper.dismiss(); #else QSKIP("This test relies on private APIs that are only exported in developer-builds"); #endif |