diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-04 18:45:18 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-12 20:58:41 +0100 |
commit | 843be43f18ecb007a0bb5fbb9034b8643a28b196 (patch) | |
tree | 107ee060136fdbf717cf9ca94f5e1deffd106901 /src/imports | |
parent | 06ab8d790dfab32472bcc20736c7486bf43beeba (diff) |
Merge the QtTest and Qt.test.qtestroot QML modules
There is no point in having them separate and this way the plugin can be
optional.
Fixes: QTBUG-89804
Change-Id: Ic7de35f6ee7abde4840841e17d21c2b709f6db7d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/testlib/.prev_CMakeLists.txt | 18 | ||||
-rw-r--r-- | src/imports/testlib/CMakeLists.txt | 13 | ||||
-rw-r--r-- | src/imports/testlib/TestCase.qml | 1 | ||||
-rw-r--r-- | src/imports/testlib/main.cpp | 14 | ||||
-rw-r--r-- | src/imports/testlib/qmldir | 2 | ||||
-rw-r--r-- | src/imports/testlib/quicktestevent.cpp | 481 | ||||
-rw-r--r-- | src/imports/testlib/quicktestevent_p.h | 134 | ||||
-rw-r--r-- | src/imports/testlib/quicktestresultforeign_p.h | 69 | ||||
-rw-r--r-- | src/imports/testlib/quicktestutil.cpp | 113 | ||||
-rw-r--r-- | src/imports/testlib/quicktestutil_p.h | 89 | ||||
-rw-r--r-- | src/imports/testlib/testlib.pro | 14 |
11 files changed, 12 insertions, 936 deletions
diff --git a/src/imports/testlib/.prev_CMakeLists.txt b/src/imports/testlib/.prev_CMakeLists.txt index b7a6ff468a..787f163a84 100644 --- a/src/imports/testlib/.prev_CMakeLists.txt +++ b/src/imports/testlib/.prev_CMakeLists.txt @@ -4,32 +4,23 @@ ## qmltestplugin Plugin: ##################################################################### -qt_add_qml_module(qmltestplugin +qt_internal_add_qml_module(qmltestplugin URI "QtTest" VERSION "${CMAKE_PROJECT_VERSION}" CLASSNAME QTestQmlModule DEPENDENCIES QtQuick.Window/2.0 - GENERATE_QMLTYPES + PLUGIN_OPTIONAL SOURCES main.cpp - quicktestevent.cpp quicktestevent_p.h - quicktestresultforeign_p.h - quicktestutil.cpp quicktestutil_p.h PUBLIC_LIBRARIES Qt::Core - Qt::CorePrivate - Qt::Gui - Qt::GuiPrivate - Qt::QmlPrivate - Qt::Quick + Qt::Qml Qt::QuickTestPrivate - Qt::Test ) #### Keys ignored in scope 1:.:.:testlib.pro:<TRUE>: # CXX_MODULE = "qml" -# OTHER_FILES = "testlib.json" # QML_FILES = "TestCase.qml" "SignalSpy.qml" "testlogger.js" # QML_IMPORT_VERSION = "$$QT_VERSION" # TARGETPATH = "QtTest" @@ -45,6 +36,9 @@ set_source_files_properties(TestCase.qml PROPERTIES set_source_files_properties(SignalSpy.qml PROPERTIES QT_QML_SOURCE_VERSION "1.0" ) +set_source_files_properties(testlogger.js PROPERTIES + QT_QML_SKIP_QMLDIR_ENTRY TRUE +) qt6_target_qml_files(qmltestplugin FILES diff --git a/src/imports/testlib/CMakeLists.txt b/src/imports/testlib/CMakeLists.txt index d340823a87..1e199b947b 100644 --- a/src/imports/testlib/CMakeLists.txt +++ b/src/imports/testlib/CMakeLists.txt @@ -10,27 +10,18 @@ qt_internal_add_qml_module(qmltestplugin CLASSNAME QTestQmlModule DEPENDENCIES QtQuick.Window/2.0 - GENERATE_QMLTYPES - INSTALL_QMLTYPES + PLUGIN_OPTIONAL SOURCES main.cpp - quicktestevent.cpp quicktestevent_p.h - quicktestresultforeign_p.h - quicktestutil.cpp quicktestutil_p.h PUBLIC_LIBRARIES Qt::Core - Qt::CorePrivate Qt::Gui - Qt::GuiPrivate - Qt::QmlPrivate - Qt::Quick + Qt::Qml Qt::QuickTestPrivate - Qt::Test ) #### Keys ignored in scope 1:.:.:testlib.pro:<TRUE>: # CXX_MODULE = "qml" -# OTHER_FILES = "testlib.json" # QML_FILES = "TestCase.qml" "SignalSpy.qml" "testlogger.js" # QML_IMPORT_VERSION = "$$QT_VERSION" # TARGETPATH = "QtTest" diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml index fd0b799399..1c9011e01e 100644 --- a/src/imports/testlib/TestCase.qml +++ b/src/imports/testlib/TestCase.qml @@ -41,7 +41,6 @@ import QtQuick 2.0 import QtQuick.Window 2.0 // used for qtest_verifyItem import QtTest 1.2 import "testlogger.js" as TestLogger -import Qt.test.qtestroot 1.0 /*! \qmltype TestCase diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp index 83fc150e6c..8981ac0ff0 100644 --- a/src/imports/testlib/main.cpp +++ b/src/imports/testlib/main.cpp @@ -37,20 +37,8 @@ ** ****************************************************************************/ -#include "quicktestevent_p.h" -#include "quicktestutil_p.h" - #include <QtQml/qqmlextensionplugin.h> -#include <QtQml/qqml.h> -#include <QtQuickTest/quicktest.h> -#include <QtQuickTest/private/quicktestresult_p.h> -#include <QtQuickTest/private/qtestoptions_p.h> - -QML_DECLARE_TYPE(QuickTestResult) -QML_DECLARE_TYPE(QuickTestEvent) -QML_DECLARE_TYPE(QuickTestUtil) - -extern void qml_register_types_QtTest(); +#include <QtQuickTest/private/quicktestglobal_p.h> QT_BEGIN_NAMESPACE diff --git a/src/imports/testlib/qmldir b/src/imports/testlib/qmldir index 9c1e8dd61f..387374bab9 100644 --- a/src/imports/testlib/qmldir +++ b/src/imports/testlib/qmldir @@ -1,5 +1,5 @@ module QtTest -plugin qmltestplugin +optional plugin qmltestplugin classname QTestQmlModule typeinfo plugins.qmltypes TestCase 1.0 TestCase.qml diff --git a/src/imports/testlib/quicktestevent.cpp b/src/imports/testlib/quicktestevent.cpp deleted file mode 100644 index a1a707d2d6..0000000000 --- a/src/imports/testlib/quicktestevent.cpp +++ /dev/null @@ -1,481 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "quicktestevent_p.h" -#include <QtTest/qtestkeyboard.h> -#include <QtQml/qqml.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/qquickwindow.h> -#include <qpa/qwindowsysteminterface.h> - -QT_BEGIN_NAMESPACE - -namespace QTest { - extern int Q_TESTLIB_EXPORT defaultMouseDelay(); -} - -QuickTestEvent::QuickTestEvent(QObject *parent) - : QObject(parent) -{ -} - -QuickTestEvent::~QuickTestEvent() -{ -} - -int QuickTestEvent::defaultMouseDelay() const -{ - return QTest::defaultMouseDelay(); -} - -bool QuickTestEvent::keyPress(int key, int modifiers, int delay) -{ - QWindow *window = activeWindow(); - if (!window) - return false; - QTest::keyPress(window, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); - return true; -} - -bool QuickTestEvent::keyRelease(int key, int modifiers, int delay) -{ - QWindow *window = activeWindow(); - if (!window) - return false; - QTest::keyRelease(window, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); - return true; -} - -bool QuickTestEvent::keyClick(int key, int modifiers, int delay) -{ - QWindow *window = activeWindow(); - if (!window) - return false; - QTest::keyClick(window, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); - return true; -} - -bool QuickTestEvent::keyPressChar(const QString &character, int modifiers, int delay) -{ - QTEST_ASSERT(character.length() == 1); - QWindow *window = activeWindow(); - if (!window) - return false; - QTest::keyPress(window, character[0].toLatin1(), Qt::KeyboardModifiers(modifiers), delay); - return true; -} - -bool QuickTestEvent::keyReleaseChar(const QString &character, int modifiers, int delay) -{ - QTEST_ASSERT(character.length() == 1); - QWindow *window = activeWindow(); - if (!window) - return false; - QTest::keyRelease(window, character[0].toLatin1(), Qt::KeyboardModifiers(modifiers), delay); - return true; -} - -bool QuickTestEvent::keyClickChar(const QString &character, int modifiers, int delay) -{ - QTEST_ASSERT(character.length() == 1); - QWindow *window = activeWindow(); - if (!window) - return false; - QTest::keyClick(window, character[0].toLatin1(), Qt::KeyboardModifiers(modifiers), delay); - return true; -} - -#if QT_CONFIG(shortcut) -// valueToKeySequence() is copied from qquickshortcut.cpp -static QKeySequence valueToKeySequence(const QVariant &value) -{ - if (value.userType() == QMetaType::Int) - return QKeySequence(static_cast<QKeySequence::StandardKey>(value.toInt())); - return QKeySequence::fromString(value.toString()); -} -#endif - -bool QuickTestEvent::keySequence(const QVariant &keySequence) -{ - QWindow *window = activeWindow(); - if (!window) - return false; -#if QT_CONFIG(shortcut) - QTest::keySequence(window, valueToKeySequence(keySequence)); -#else - Q_UNUSED(keySequence); -#endif - return true; -} - -namespace QtQuickTest -{ - enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDoubleClick, MouseMove, MouseDoubleClickSequence }; - - int lastMouseTimestamp = 0; - - // TODO should be Qt::MouseButtons buttons in case multiple buttons are pressed - static void mouseEvent(MouseAction action, QWindow *window, - QObject *item, Qt::MouseButton button, - Qt::KeyboardModifiers stateKey, const QPointF &_pos, int delay=-1) - { - QTEST_ASSERT(window); - QTEST_ASSERT(item); - - if (delay == -1 || delay < QTest::defaultMouseDelay()) - delay = QTest::defaultMouseDelay(); - if (delay > 0) { - QTest::qWait(delay); - lastMouseTimestamp += delay; - } - - if (action == MouseClick) { - mouseEvent(MousePress, window, item, button, stateKey, _pos); - mouseEvent(MouseRelease, window, item, button, stateKey, _pos); - return; - } - - if (action == MouseDoubleClickSequence) { - mouseEvent(MousePress, window, item, button, stateKey, _pos); - mouseEvent(MouseRelease, window, item, button, stateKey, _pos); - mouseEvent(MousePress, window, item, button, stateKey, _pos); - mouseEvent(MouseDoubleClick, window, item, button, stateKey, _pos); - mouseEvent(MouseRelease, window, item, button, stateKey, _pos); - return; - } - - QPoint pos = _pos.toPoint(); - QQuickItem *sgitem = qobject_cast<QQuickItem *>(item); - if (sgitem) - pos = sgitem->mapToScene(_pos).toPoint(); - QTEST_ASSERT(button == Qt::NoButton || button & Qt::MouseButtonMask); - QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask); - - stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask); - - QEvent::Type meType; - Qt::MouseButton meButton; - Qt::MouseButtons meButtons; - switch (action) - { - case MousePress: - meType = QEvent::MouseButtonPress; - meButton = button; - meButtons = button; - break; - case MouseRelease: - meType = QEvent::MouseButtonRelease; - meButton = button; - meButtons = Qt::MouseButton(); - break; - case MouseDoubleClick: - meType = QEvent::MouseButtonDblClick; - meButton = button; - meButtons = button; - break; - case MouseMove: - meType = QEvent::MouseMove; - meButton = Qt::NoButton; - meButtons = button; - break; - default: - QTEST_ASSERT(false); - } - QMouseEvent me(meType, pos, window->mapToGlobal(pos), meButton, meButtons, stateKey); - me.setTimestamp(++lastMouseTimestamp); - if (action == MouseRelease) // avoid double clicks being generated - lastMouseTimestamp += 500; - - QSpontaneKeyEvent::setSpontaneous(&me); - if (!qApp->notify(window, &me)) { - static const char *mouseActionNames[] = - { "MousePress", "MouseRelease", "MouseClick", "MouseDoubleClick", "MouseMove", "MouseDoubleClickSequence" }; - QString warning = QString::fromLatin1("Mouse event \"%1\" not accepted by receiving window"); - QWARN(warning.arg(QString::fromLatin1(mouseActionNames[static_cast<int>(action)])).toLatin1().data()); - } - } - -#if QT_CONFIG(wheelevent) - static void mouseWheel(QWindow* window, QObject* item, Qt::MouseButtons buttons, - Qt::KeyboardModifiers stateKey, - QPointF _pos, int xDelta, int yDelta, int delay = -1) - { - QTEST_ASSERT(window); - QTEST_ASSERT(item); - if (delay == -1 || delay < QTest::defaultMouseDelay()) - delay = QTest::defaultMouseDelay(); - if (delay > 0) - QTest::qWait(delay); - - QPoint pos; - QQuickItem *sgitem = qobject_cast<QQuickItem *>(item); - if (sgitem) - pos = sgitem->mapToScene(_pos).toPoint(); - - QTEST_ASSERT(buttons == Qt::NoButton || buttons & Qt::MouseButtonMask); - QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask); - - stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask); - QWheelEvent we(pos, window->mapToGlobal(pos), QPoint(0, 0), QPoint(xDelta, yDelta), buttons, - stateKey, Qt::NoScrollPhase, false); - - QSpontaneKeyEvent::setSpontaneous(&we); // hmmmm - if (!qApp->notify(window, &we)) - QTest::qWarn("Wheel event not accepted by receiving window"); - } -#endif -}; - -bool QuickTestEvent::mousePress - (QObject *item, qreal x, qreal y, int button, - int modifiers, int delay) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - m_pressedButtons.setFlag(Qt::MouseButton(button), true); - QtQuickTest::mouseEvent(QtQuickTest::MousePress, view, item, - Qt::MouseButton(button), - Qt::KeyboardModifiers(modifiers), - QPointF(x, y), delay); - return true; -} - -#if QT_CONFIG(wheelevent) -bool QuickTestEvent::mouseWheel( - QObject *item, qreal x, qreal y, int buttons, - int modifiers, int xDelta, int yDelta, int delay) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - QtQuickTest::mouseWheel(view, item, Qt::MouseButtons(buttons), - Qt::KeyboardModifiers(modifiers), - QPointF(x, y), xDelta, yDelta, delay); - return true; -} -#endif - -bool QuickTestEvent::mouseRelease - (QObject *item, qreal x, qreal y, int button, - int modifiers, int delay) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - m_pressedButtons.setFlag(Qt::MouseButton(button), false); - QtQuickTest::mouseEvent(QtQuickTest::MouseRelease, view, item, - Qt::MouseButton(button), - Qt::KeyboardModifiers(modifiers), - QPointF(x, y), delay); - return true; -} - -bool QuickTestEvent::mouseClick - (QObject *item, qreal x, qreal y, int button, - int modifiers, int delay) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - QtQuickTest::mouseEvent(QtQuickTest::MouseClick, view, item, - Qt::MouseButton(button), - Qt::KeyboardModifiers(modifiers), - QPointF(x, y), delay); - return true; -} - -bool QuickTestEvent::mouseDoubleClick - (QObject *item, qreal x, qreal y, int button, - int modifiers, int delay) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - QtQuickTest::mouseEvent(QtQuickTest::MouseDoubleClick, view, item, - Qt::MouseButton(button), - Qt::KeyboardModifiers(modifiers), - QPointF(x, y), delay); - return true; -} - -bool QuickTestEvent::mouseDoubleClickSequence - (QObject *item, qreal x, qreal y, int button, - int modifiers, int delay) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - QtQuickTest::mouseEvent(QtQuickTest::MouseDoubleClickSequence, view, item, - Qt::MouseButton(button), - Qt::KeyboardModifiers(modifiers), - QPointF(x, y), delay); - return true; -} - -bool QuickTestEvent::mouseMove - (QObject *item, qreal x, qreal y, int delay, int buttons) -{ - QWindow *view = eventWindow(item); - if (!view) - return false; - const Qt::MouseButtons effectiveButtons = buttons ? Qt::MouseButtons(buttons) : m_pressedButtons; - QtQuickTest::mouseEvent(QtQuickTest::MouseMove, view, item, - Qt::MouseButton(int(effectiveButtons)), Qt::NoModifier, - QPointF(x, y), delay); - return true; -} - -QWindow *QuickTestEvent::eventWindow(QObject *item) -{ - QWindow * window = qobject_cast<QWindow *>(item); - if (window) - return window; - - QQuickItem *quickItem = qobject_cast<QQuickItem *>(item); - if (quickItem) - return quickItem->window(); - - QQuickItem *testParentitem = qobject_cast<QQuickItem *>(parent()); - if (testParentitem) - return testParentitem->window(); - return nullptr; -} - -QWindow *QuickTestEvent::activeWindow() -{ - if (QWindow *window = QGuiApplication::focusWindow()) - return window; - return eventWindow(); -} - -QQuickTouchEventSequence::QQuickTouchEventSequence(QuickTestEvent *testEvent, QObject *item) - : QObject(testEvent) - , m_sequence(QTest::touchEvent(testEvent->eventWindow(item), testEvent->touchDevice())) - , m_testEvent(testEvent) -{ -} - -QObject *QQuickTouchEventSequence::press(int touchId, QObject *item, qreal x, qreal y) -{ - QWindow *view = m_testEvent->eventWindow(item); - if (view) { - QPointF pos(x, y); - QQuickItem *quickItem = qobject_cast<QQuickItem *>(item); - if (quickItem) { - pos = quickItem->mapToScene(pos); - } - m_sequence.press(touchId, pos.toPoint(), view); - } - return this; -} - -QObject *QQuickTouchEventSequence::move(int touchId, QObject *item, qreal x, qreal y) -{ - QWindow *view = m_testEvent->eventWindow(item); - if (view) { - QPointF pos(x, y); - QQuickItem *quickItem = qobject_cast<QQuickItem *>(item); - if (quickItem) { - pos = quickItem->mapToScene(pos); - } - m_sequence.move(touchId, pos.toPoint(), view); - } - return this; -} - -QObject *QQuickTouchEventSequence::release(int touchId, QObject *item, qreal x, qreal y) -{ - QWindow *view = m_testEvent->eventWindow(item); - if (view) { - QPointF pos(x, y); - QQuickItem *quickItem = qobject_cast<QQuickItem *>(item); - if (quickItem) { - pos = quickItem->mapToScene(pos); - } - m_sequence.release(touchId, pos.toPoint(), view); - } - return this; -} - -QObject *QQuickTouchEventSequence::stationary(int touchId) -{ - m_sequence.stationary(touchId); - return this; -} - -QObject *QQuickTouchEventSequence::commit() -{ - m_sequence.commit(); - return this; -} - -/*! - Return a simulated touchscreen, creating one if necessary - - \internal -*/ - -QPointingDevice *QuickTestEvent::touchDevice() -{ - static QPointingDevice *device(nullptr); - - if (!device) { - device = new QPointingDevice(QLatin1String("test touchscreen"), 42, - QInputDevice::DeviceType::TouchScreen, QPointingDevice::PointerType::Finger, - QInputDevice::Capability::Position, 10, 0); - QWindowSystemInterface::registerInputDevice(device); - } - return device; -} - -/*! - Creates a new QQuickTouchEventSequence. - - If valid, \a item determines the QWindow that touch events are sent to. - Test code should use touchEvent() from the QML TestCase type. - - \internal -*/ -QQuickTouchEventSequence *QuickTestEvent::touchEvent(QObject *item) -{ - return new QQuickTouchEventSequence(this, item); -} - -QT_END_NAMESPACE diff --git a/src/imports/testlib/quicktestevent_p.h b/src/imports/testlib/quicktestevent_p.h deleted file mode 100644 index 4e63a2e47e..0000000000 --- a/src/imports/testlib/quicktestevent_p.h +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QUICKTESTEVENT_P_H -#define QUICKTESTEVENT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtGui/QWindow> -#include <QtQml/qqml.h> -#include <QtTest/qtesttouch.h> - -QT_BEGIN_NAMESPACE - -class QuickTestEvent; -class QQuickTouchEventSequence : public QObject -{ - Q_OBJECT - QML_ANONYMOUS - QML_ADDED_IN_VERSION(1, 0) - -public: - explicit QQuickTouchEventSequence(QuickTestEvent *testEvent, QObject *item = nullptr); -public slots: - QObject* press(int touchId, QObject *item, qreal x, qreal y); - QObject* move(int touchId, QObject *item, qreal x, qreal y); - QObject* release(int touchId, QObject *item, qreal x, qreal y); - QObject* stationary(int touchId); - QObject* commit(); - -private: - QTest::QTouchEventSequence m_sequence; - QuickTestEvent * const m_testEvent; -}; - -class QuickTestEvent : public QObject -{ - Q_OBJECT - Q_PROPERTY(int defaultMouseDelay READ defaultMouseDelay FINAL) - QML_NAMED_ELEMENT(TestEvent) - QML_ADDED_IN_VERSION(1, 0) -public: - QuickTestEvent(QObject *parent = nullptr); - ~QuickTestEvent() override; - int defaultMouseDelay() const; - -public Q_SLOTS: - bool keyPress(int key, int modifiers, int delay); - bool keyRelease(int key, int modifiers, int delay); - bool keyClick(int key, int modifiers, int delay); - - bool keyPressChar(const QString &character, int modifiers, int delay); - bool keyReleaseChar(const QString &character, int modifiers, int delay); - bool keyClickChar(const QString &character, int modifiers, int delay); - - Q_REVISION(1, 2) bool keySequence(const QVariant &keySequence); - - bool mousePress(QObject *item, qreal x, qreal y, int button, - int modifiers, int delay); - bool mouseRelease(QObject *item, qreal x, qreal y, int button, - int modifiers, int delay); - bool mouseClick(QObject *item, qreal x, qreal y, int button, - int modifiers, int delay); - bool mouseDoubleClick(QObject *item, qreal x, qreal y, int button, - int modifiers, int delay); - bool mouseDoubleClickSequence(QObject *item, qreal x, qreal y, int button, - int modifiers, int delay); - bool mouseMove(QObject *item, qreal x, qreal y, int delay, int buttons); - -#if QT_CONFIG(wheelevent) - bool mouseWheel(QObject *item, qreal x, qreal y, int buttons, - int modifiers, int xDelta, int yDelta, int delay); -#endif - - QQuickTouchEventSequence *touchEvent(QObject *item = nullptr); -private: - QWindow *eventWindow(QObject *item = nullptr); - QWindow *activeWindow(); - QPointingDevice *touchDevice(); - - Qt::MouseButtons m_pressedButtons; - - friend class QQuickTouchEventSequence; -}; - -QT_END_NAMESPACE - -#endif diff --git a/src/imports/testlib/quicktestresultforeign_p.h b/src/imports/testlib/quicktestresultforeign_p.h deleted file mode 100644 index e9dd12fa93..0000000000 --- a/src/imports/testlib/quicktestresultforeign_p.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QUICKTESTRESULTFOREIGN_P_H -#define QUICKTESTRESULTFOREIGN_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTest/private/quicktestresult_p.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -struct QuickTestResultForeign -{ - Q_GADGET - QML_FOREIGN(QuickTestResult) - QML_NAMED_ELEMENT(TestResult) - QML_ADDED_IN_VERSION(1, 0) -}; - -QT_END_NAMESPACE - -#endif // QUICKTESTRESULTFOREIGN_P_H diff --git a/src/imports/testlib/quicktestutil.cpp b/src/imports/testlib/quicktestutil.cpp deleted file mode 100644 index 994c66845b..0000000000 --- a/src/imports/testlib/quicktestutil.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "quicktestutil_p.h" - -#include <QtQuickTest/private/qtestoptions_p.h> -#include <QtQml/private/qqmltype_p.h> -#include <QtQml/private/qqmlmetatype_p.h> -#include <QtQml/private/qv4engine_p.h> -#include <QtQml/private/qv4scopedvalue_p.h> -#include <QtQml/private/qjsvalue_p.h> - -#include <QtGui/qguiapplication.h> -#include <QtGui/qstylehints.h> -#include <QtQml/qqmlengine.h> - -QT_BEGIN_NAMESPACE - -bool QuickTestUtil::printAvailableFunctions() const -{ - return QTest::printAvailableFunctions; -} - -int QuickTestUtil::dragThreshold() const -{ - return QGuiApplication::styleHints()->startDragDistance(); -} - -QJSValue QuickTestUtil::typeName(const QVariant &v) const -{ - QString name = QString::fromUtf8(v.typeName()); - if (v.canConvert<QObject*>()) { - QQmlType type; - const QMetaObject *mo = v.value<QObject*>()->metaObject(); - while (!type.isValid() && mo) { - type = QQmlMetaType::qmlType(mo); - mo = mo->superClass(); - } - if (type.isValid()) { - name = type.qmlTypeName(); - } - } - - QQmlEngine *engine = qmlEngine(this); - QV4::ExecutionEngine *v4 = engine->handle(); - return QJSValuePrivate::fromReturnedValue(v4->newString(name)->asReturnedValue()); -} - -bool QuickTestUtil::compare(const QVariant &act, const QVariant &exp) const { - return act == exp; -} - -QJSValue QuickTestUtil::callerFile(int frameIndex) const -{ - QQmlEngine *engine = qmlEngine(this); - QV4::ExecutionEngine *v4 = engine->handle(); - QV4::Scope scope(v4); - - QVector<QV4::StackFrame> stack = v4->stackTrace(frameIndex + 2); - return (stack.size() > frameIndex + 1) - ? QJSValuePrivate::fromReturnedValue( - v4->newString(stack.at(frameIndex + 1).source)->asReturnedValue()) - : QJSValue(); -} - -int QuickTestUtil::callerLine(int frameIndex) const -{ - QQmlEngine *engine = qmlEngine(this); - QV4::ExecutionEngine *v4 = engine->handle(); - - QVector<QV4::StackFrame> stack = v4->stackTrace(frameIndex + 2); - if (stack.size() > frameIndex + 1) - return stack.at(frameIndex + 1).line; - return -1; -} - -QT_END_NAMESPACE diff --git a/src/imports/testlib/quicktestutil_p.h b/src/imports/testlib/quicktestutil_p.h deleted file mode 100644 index 7e90c1cd1d..0000000000 --- a/src/imports/testlib/quicktestutil_p.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QUICKTESTUTIL_P_H -#define QUICKTESTUTIL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtQml/qqml.h> -#include <QtQml/qjsvalue.h> - -QT_BEGIN_NAMESPACE - -class QuickTestUtil : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool printAvailableFunctions READ printAvailableFunctions NOTIFY printAvailableFunctionsChanged) - Q_PROPERTY(int dragThreshold READ dragThreshold NOTIFY dragThresholdChanged) - QML_NAMED_ELEMENT(TestUtil) - QML_ADDED_IN_VERSION(1, 0) -public: - QuickTestUtil(QObject *parent = nullptr) :QObject(parent) {} - ~QuickTestUtil() override {} - - bool printAvailableFunctions() const; - int dragThreshold() const; - -Q_SIGNALS: - void printAvailableFunctionsChanged(); - void dragThresholdChanged(); - -public Q_SLOTS: - - QJSValue typeName(const QVariant& v) const; - bool compare(const QVariant& act, const QVariant& exp) const; - - QJSValue callerFile(int frameIndex = 0) const; - int callerLine(int frameIndex = 0) const; -}; - -QT_END_NAMESPACE - -#endif // QUICKTESTUTIL_P_H diff --git a/src/imports/testlib/testlib.pro b/src/imports/testlib/testlib.pro index 2a97213e29..523be8b33e 100644 --- a/src/imports/testlib/testlib.pro +++ b/src/imports/testlib/testlib.pro @@ -3,17 +3,10 @@ TARGET = qmltestplugin TARGETPATH = QtTest QML_IMPORT_VERSION = $$QT_VERSION -QT += quick qmltest-private qml-private core-private testlib gui-private +QT = qmltest-private qml core SOURCES += \ - main.cpp \ - quicktestevent.cpp \ - quicktestutil.cpp - -HEADERS += \ - quicktestevent_p.h \ - quicktestresultforeign_p.h \ - quicktestutil_p.h + main.cpp QML_FILES = \ TestCase.qml \ @@ -21,6 +14,3 @@ QML_FILES = \ testlogger.js load(qml_plugin) - -OTHER_FILES += testlib.json -CONFIG += qmltypes install_qmltypes |