aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp')
-rw-r--r--tests/auto/quick/qquickdragattached/tst_qquickdragattached.cpp66
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