diff options
author | Lorn Potter <lorn.potter@nokia.com> | 2012-09-19 19:19:46 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2012-11-13 20:13:24 +0100 |
commit | 05b99e39f4c9e3249d22410d1c70eafb7b8c0170 (patch) | |
tree | 0ead578ee1113121494a710b59c4f46376d2803a /tests/auto/qsensorgestures | |
parent | d8de6ec84d0d4d0a0a48a44590dde2797fe7cc09 (diff) |
add qml sensorgesture element backported from qtt5
also add sensorgesture auto tests. need to add a tool that creates
the moc data from real device.
Change-Id: I6d68f9e889c4c69a916d048505da7dc348c64e11
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Diffstat (limited to 'tests/auto/qsensorgestures')
15 files changed, 1739 insertions, 0 deletions
diff --git a/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.cpp b/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.cpp new file mode 100644 index 0000000000..0315f75800 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "qtest2recognizer.h" + +#include "qtestsensorgestureplugin_p.h" + +QTest2Recognizer::QTest2Recognizer(QObject *parent) + : QSensorGestureRecognizer(parent), + active(0) +{ +} + +QTest2Recognizer::~QTest2Recognizer() +{ +} + +bool QTest2Recognizer::start() +{ + Q_EMIT test2(); + + Q_EMIT detected("test2"); + + Q_EMIT test3(true); + active = true; + + return true; +} + +bool QTest2Recognizer::stop() +{ + active = false; + return true; +} + +bool QTest2Recognizer::isActive() +{ + return active; +} + + +void QTest2Recognizer::create() +{ + active = false; +} + +QString QTest2Recognizer::id() const +{ + return QString("QtSensors.test2"); +} + +int QTest2Recognizer::thresholdTime() const +{ + return timerTimeout; +} + +void QTest2Recognizer::setThresholdTime(int msec) +{ + timer->setInterval(msec); +} + diff --git a/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h b/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h new file mode 100644 index 0000000000..1d68c77bb9 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTEST2RECOGNIZER_H +#define QTEST2RECOGNIZER_H + +#include <qsensorgesturerecognizer.h> + +class QTest2Recognizer : public QSensorGestureRecognizer +{ + Q_OBJECT + +public: + QTest2Recognizer(QObject *parent = 0); + ~QTest2Recognizer(); + + void create(); + + QString id() const; + bool start(); + bool stop(); + bool isActive(); + + int thresholdTime() const; + void setThresholdTime(int msec); + +Q_SIGNALS: + void test2(); + void test3(bool); + +private: + int timerTimeout; + QTimer *timer; + bool active; +}; + + +#endif // QTEST2RECOGNIZER_H diff --git a/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.cpp b/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.cpp new file mode 100644 index 0000000000..1590e9c668 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.cpp @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <QStringList> +#include <QTimer> + +#include "qtestrecognizer.h" +#include "qtestsensorgestureplugin_p.h" + + +QTestRecognizer::QTestRecognizer(QObject *parent) + : QSensorGestureRecognizer(parent), + active(0) +{ + timeout(); +} + +QTestRecognizer::~QTestRecognizer() +{ +} + +void QTestRecognizer::timeout() +{ + Q_EMIT detected("tested"); + Q_EMIT tested(); + QTimer::singleShot(10,this, SLOT(timeout())); +} + + +bool QTestRecognizer::start() +{ + Q_EMIT detected("tested"); + Q_EMIT tested(); + active = true; + return true; +} + +bool QTestRecognizer::stop() +{ + active = false; + return true; +} + +bool QTestRecognizer::isActive() +{ + return active; +} + +void QTestRecognizer::create() +{ + active = false; +} + +QString QTestRecognizer::id() const +{ + return QString("QtSensors.test"); +} + + +int QTestRecognizer::thresholdTime() const +{ + return timerTimeout; +} + +void QTestRecognizer::setThresholdTime(int msec) +{ + timer->setInterval(msec); +} diff --git a/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h b/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h new file mode 100644 index 0000000000..3cc2148699 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTESTRECOGNIZER_H +#define QTESTRECOGNIZER_H + +#include <qsensorgesturerecognizer.h> + +class QTestRecognizer : public QSensorGestureRecognizer +{ + Q_OBJECT + Q_PROPERTY(int thresholdTime READ thresholdTime WRITE setThresholdTime) + +public: + + QTestRecognizer(QObject *parent = 0); + ~QTestRecognizer(); + + void create(); + + QString id() const; + bool start(); + bool stop(); + bool isActive(); + + int thresholdTime() const; + void setThresholdTime(int msec); + +Q_SIGNALS: + void tested(); + +private: + int timerTimeout; + QTimer *timer; + bool active; + +public slots: + void timeout(); +}; + +#endif // QTESTRECOGNIZER_H diff --git a/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin.cpp b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin.cpp new file mode 100644 index 0000000000..9b210bc39c --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <QObject> +#include <QtPlugin> +#include <QStringList> +#include <QTimer> +#include <QTest> + +#include "qtestrecognizer.h" +#include "qtest2recognizer.h" + +#include "qtestsensorgestureplugin_p.h" + +#include <qsensorgestureplugininterface.h> +#include <qsensorgesturerecognizer.h> +#include <qsensorgesturemanager.h> + + +QTestSensorGesturePlugin::QTestSensorGesturePlugin() +{ +} + +QTestSensorGesturePlugin::~QTestSensorGesturePlugin() +{ +} + + +///*! +// Describes this gesture's possible gesture signals. +//handled through the detected(const QString &) signal. +// */ +//QStringList QTestSensorGesturePlugin::gestureSignals() const +//{ +// QStringList list; +// Q_FOREACH (const QSensorGestureRecognizer* rec, recognizersList) { +// list.append(rec->gestureSignals()); +// } +// return list; +//} + +QList <QSensorGestureRecognizer *> QTestSensorGesturePlugin::createRecognizers() +{ + QSensorGestureRecognizer *sRec = new QTestRecognizer(this); + recognizersList.append(sRec); + + QSensorGestureRecognizer *sRec2 = new QTest2Recognizer(this); + recognizersList.append(sRec2); + + return recognizersList; +} + +QStringList QTestSensorGesturePlugin::supportedIds() const +{ + QStringList list; + list << "QtSensors.test"; + list <<"QtSensors.test2"; + + return list; +} + +QList<QSensorGestureRecognizer*> QTestSensorGesturePlugin::recognizers() const +{ + return recognizersList; +} + +QString QTestSensorGesturePlugin::name() const +{ + return "TestGestures"; +} diff --git a/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h new file mode 100644 index 0000000000..383dd39b6e --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTESTSENSORGESTUREPLUGIN_P_H +#define QTESTSENSORGESTUREPLUGIN_P_H + +#include <QObject> +#include <qsensorgestureplugininterface.h> + +class QTestSensorGesturePlugin : public QObject, public QSensorGesturePluginInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface") + Q_INTERFACES(QSensorGesturePluginInterface) + +public: + explicit QTestSensorGesturePlugin(); + ~QTestSensorGesturePlugin(); + + QList <QSensorGestureRecognizer *> createRecognizers(); + +// QStringList gestureSignals() const; + QStringList supportedIds() const; + QString name() const; + + QList<QSensorGestureRecognizer*> recognizers() const; + + QList<QSensorGestureRecognizer*> recognizersList; + +}; + + + +#endif // QTESTSENSORGESTUREPLUGIN_H diff --git a/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.cpp b/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.cpp new file mode 100644 index 0000000000..ff9c323105 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtest2recognizerdup.h" + +#include "qtestsensorgestureplugindup.h" + +QTest2RecognizerDup::QTest2RecognizerDup(QObject *parent) + : QSensorGestureRecognizer(parent), + active(0) +{ +} + +QTest2RecognizerDup::~QTest2RecognizerDup() +{ +} + +bool QTest2RecognizerDup::start() +{ + Q_EMIT test2_dup(); + + active = true; + + return true; +} + +bool QTest2RecognizerDup::stop() +{ + active = false; + return true; +} + +bool QTest2RecognizerDup::isActive() +{ + return active; +} + + +void QTest2RecognizerDup::create() +{ + active = false; +} + +QString QTest2RecognizerDup::id() const +{ + return QString("QtSensors.test.dup"); +} + +int QTest2RecognizerDup::thresholdTime() const +{ + return timerTimeout; +} + +void QTest2RecognizerDup::setThresholdTime(int msec) +{ + timer->setInterval(msec); +} + diff --git a/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h b/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h new file mode 100644 index 0000000000..8716cc76bf --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTEST2RECOGNIZERDUP_H +#define QTEST2RECOGNIZERDUP_H + +#include <qsensorgesturerecognizer.h> + +class QTest2RecognizerDup : public QSensorGestureRecognizer +{ + Q_OBJECT + +public: + QTest2RecognizerDup(QObject *parent = 0); + ~QTest2RecognizerDup(); + + void create(); + + QString id() const; + bool start(); + bool stop(); + bool isActive(); + + int thresholdTime() const; + void setThresholdTime(int msec); + +Q_SIGNALS: + void test2_dup(); + +private: + int timerTimeout; + QTimer *timer; + bool active; +}; + + +#endif // QTEST2RECOGNIZERDUP_H diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.cpp b/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.cpp new file mode 100644 index 0000000000..9cc9ba1f21 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.cpp @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QStringList> + +#include "qtestrecognizerdup.h" +#include "qtestsensorgestureplugindup.h" + +QTestRecognizerDup::QTestRecognizerDup(QObject *parent) + : QSensorGestureRecognizer(parent), + active(0) +{ +} + +QTestRecognizerDup::~QTestRecognizerDup() +{ +} + +bool QTestRecognizerDup::start() +{ + active = true; + Q_EMIT detected("test2_dup"); + Q_EMIT test2_dup(); + return true; +} + +bool QTestRecognizerDup::stop() +{ + active = false; + return true; +} + +bool QTestRecognizerDup::isActive() +{ + return active; +} + +void QTestRecognizerDup::create() +{ + active = false; +} + +QString QTestRecognizerDup::id() const +{ + return QString("QtSensors.test.dup"); +} + + +int QTestRecognizerDup::thresholdTime() const +{ + return timerTimeout; +} + +void QTestRecognizerDup::setThresholdTime(int msec) +{ + timer->setInterval(msec); +} diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h b/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h new file mode 100644 index 0000000000..2694b10918 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTESTRECOGNIZERDUP_H +#define QTESTRECOGNIZERDUP_H + +#include <qsensorgesturerecognizer.h> + +class QTestRecognizerDup : public QSensorGestureRecognizer +{ + Q_OBJECT + Q_PROPERTY(int thresholdTime READ thresholdTime WRITE setThresholdTime) + +public: + + QTestRecognizerDup(QObject *parent = 0); + ~QTestRecognizerDup(); + + void create(); + + QString id() const; + bool start(); + bool stop(); + bool isActive(); + + int thresholdTime() const; + void setThresholdTime(int msec); + +Q_SIGNALS: + void test2_dup(); + +private: + int timerTimeout; + QTimer *timer; + bool active; + +}; + +#endif // QTESTRECOGNIZERDUP_H diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.cpp b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.cpp new file mode 100644 index 0000000000..4529a449b1 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.cpp @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <QObject> +#include <QtPlugin> +#include <QStringList> +#include <QTimer> + +#include "qtestrecognizerdup.h" +#include "qtest2recognizerdup.h" + +#include "qtestsensorgestureplugindup.h" + +#include <qsensorgestureplugininterface.h> +#include <qsensorgesturerecognizer.h> +#include <qsensorgesturemanager.h> + + +QTestSensorGestureDupPlugin::QTestSensorGestureDupPlugin() +{ +} + +QTestSensorGestureDupPlugin::~QTestSensorGestureDupPlugin() +{ +} + +/*! + Describes this gesture's possible gesture signals. +handled through the detected(const QString &) signal. + */ +QStringList QTestSensorGestureDupPlugin::gestureSignals() const +{ + QStringList list; + Q_FOREACH (const QSensorGestureRecognizer* rec,recognizersList) { + list.append(rec->gestureSignals()); + } + return list; +} + +QList <QSensorGestureRecognizer *> QTestSensorGestureDupPlugin::createRecognizers() +{ + QSensorGestureRecognizer *sRec = new QTestRecognizerDup(this); + recognizersList.append(sRec); + + QSensorGestureRecognizer *sRec2 = new QTest2RecognizerDup(this); + recognizersList.append(sRec2); + + return recognizersList; +} + +QStringList QTestSensorGestureDupPlugin::supportedIds() const +{ + QStringList list; + list << "QtSensors.test.dup"; + list << "QtSensors.test.dup"; + + return list; +} + +QList<QSensorGestureRecognizer*> QTestSensorGestureDupPlugin::recognizers() const +{ + return recognizersList; +} + +QString QTestSensorGestureDupPlugin::name() const +{ + return "TestGesturesDup"; +} diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h new file mode 100644 index 0000000000..42d01f4028 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QTESTSENSORGESTUREDUPPLUGIN_H +#define QTESTSENSORGESTUREDUPPLUGIN_H + +#include <QObject> +#include <qsensorgestureplugininterface.h> + +class QTestSensorGestureDupPlugin : public QObject, public QSensorGesturePluginInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface") + Q_INTERFACES(QSensorGesturePluginInterface) + +public: + explicit QTestSensorGestureDupPlugin(); + ~QTestSensorGestureDupPlugin(); + + + QList <QSensorGestureRecognizer *> createRecognizers(); + + QStringList gestureSignals() const; + QStringList supportedIds() const; + QString name() const; + + QList<QSensorGestureRecognizer*> recognizers() const; + + QList<QSensorGestureRecognizer*> recognizersList; + +}; + + + +#endif // QTESTSENSORGESTUREDUPPLUGIN_H diff --git a/tests/auto/qsensorgestures/plugins/test1/test1.pro b/tests/auto/qsensorgestures/plugins/test1/test1.pro new file mode 100644 index 0000000000..17fc6b19e9 --- /dev/null +++ b/tests/auto/qsensorgestures/plugins/test1/test1.pro @@ -0,0 +1,19 @@ +TEMPLATE = lib +CONFIG += plugin + +TARGET = qtsensorgestures_testplugin1 + +QT += sensors sensorgestures +DESTDIR = $$QT.sensorgestures.plugins/sensorgestures + +# Input +HEADERS += qtestsensorgestureplugindup_p.h \ + qtestrecognizerdup.h \ + qtest2recognizerdup.h +SOURCES += qtestsensorgestureplugindup.cpp \ + qtestrecognizerdup.cpp \ + qtest2recognizerduo.cpp + +target.path += $$[QT_INSTALL_PLUGINS]/sensorgestures +INSTALLS += target +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/qsensorgestures/qsensorgestures.pro b/tests/auto/qsensorgestures/qsensorgestures.pro new file mode 100644 index 0000000000..cefae56bd6 --- /dev/null +++ b/tests/auto/qsensorgestures/qsensorgestures.pro @@ -0,0 +1,38 @@ +TEMPLATE = app +TARGET = tst_qsensorgesturetest +CONFIG += testcase +DEFINES += QT_STATICPLUGIN +INCLUDEPATH += $${QT_MOBILITY_SOURCE_TREE}/src/global +INCLUDEPATH += $${QT_MOBILITY_SOURCE_TREE}/src/sensors +INCLUDEPATH += $${QT_MOBILITY_SOURCE_TREE}/src/sensors/gestures + +QT += core testlib sensors +QT -= gui + +SOURCES += tst_qsensorgesturetest.cpp + + +PLUGIN_1_HEADERS = \ + plugins/test1/qtestsensorgestureplugindup.h \ + plugins/test1/qtestrecognizerdup.h \ + plugins/test1/qtest2recognizerdup.h + +PLUGIN_1_SOURCES = \ + plugins/test1/qtestsensorgestureplugindup.cpp \ + plugins/test1/qtestrecognizerdup.cpp \ + plugins/test1/qtest2recognizerdup.cpp + +HEADERS += $$PLUGIN_1_HEADERS +SOURCES += $$PLUGIN_1_SOURCES + +HEADERS += \ + plugins/test/qtestsensorgestureplugin_p.h \ + plugins/test/qtestrecognizer.h \ + plugins/test/qtest2recognizer.h + +SOURCES += \ + plugins/test/qtestsensorgestureplugin.cpp \ + plugins/test/qtestrecognizer.cpp \ + plugins/test/qtest2recognizer.cpp + +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp b/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp new file mode 100644 index 0000000000..ab1238dda7 --- /dev/null +++ b/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp @@ -0,0 +1,629 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <QtCore/QString> +#include <QtTest/QtTest> +#include <QDebug> +#include <QVariant> +#include <QSignalSpy> + +#include <qsensorgesture.h> +#include <qsensorgesturemanager.h> + +#include <qsensorgesturerecognizer.h> +#include <qsensorgestureplugininterface.h> + +Q_IMPORT_PLUGIN(QTestSensorGesturePlugin) +Q_IMPORT_PLUGIN(QTestSensorGestureDupPlugin) +QTM_USE_NAMESPACE +static QString removeParens(const QString &arg) +{ + return arg.left(arg.indexOf("(")); +} + +class QSensorGestureWithSlots : public QObject +{ + Q_OBJECT +public: + QSensorGestureWithSlots(const QStringList &ids) + : gesture(new QSensorGesture(ids, this)) + { + } + + QSensorGesture *gesture; + +public slots: + void startDetection() + { + gesture->startDetection(); + } + + void stopDetection() + { + gesture->stopDetection(); + } +}; + +class QTest3Recognizer : public QSensorGestureRecognizer +{ + Q_OBJECT + +public: + + QTest3Recognizer(QObject *parent = 0); + + void create(); + + QString id() const; + bool start() ; + bool stop(); + bool isActive(); + void changeId(const QString &); + + QString recognizerId; +}; + +QTest3Recognizer::QTest3Recognizer(QObject *parent) : QSensorGestureRecognizer(parent), + recognizerId("QtSensors/test3"){} + +void QTest3Recognizer::create(){} + +QString QTest3Recognizer::id() const{ return recognizerId; } +bool QTest3Recognizer::start(){return true;} +bool QTest3Recognizer::stop() { return true;} +bool QTest3Recognizer::isActive() { return true; } +void QTest3Recognizer::changeId(const QString &id) +{ + recognizerId = id; +} + + +class Tst_qsensorgestureTest : public QObject +{ + Q_OBJECT + +public: + Tst_qsensorgestureTest(); + +private Q_SLOTS: + void tst_sensor_gesture_notinitialized(); + + void tst_recognizer_dup(); //comes first to weed out messages + + void tst_manager(); + void tst_manager_gestureids(); + void tst_manager_recognizerSignals(); + void tst_manager_registerSensorGestureRecognizer(); + void tst_manager__newSensorAvailable(); + + void tst_sensor_gesture_signals(); + void tst_sensor_gesture_threaded(); + + void tst_sensor_gesture(); + + void tst_recognizer(); + + void tst_sensorgesture_noid(); + + void tst_sensor_gesture_multi(); + + void shakeDetected(const QString &); + + +private: + QString currentSignal; +}; + +Tst_qsensorgestureTest::Tst_qsensorgestureTest() +{ +} + +void Tst_qsensorgestureTest::tst_recognizer_dup() +{ + QStringList idList; + { +// QTest::ignoreMessage(QtWarningMsg, "\"QtSensors.test.dup\" from the plugin \"TestGesturesDup\" is already known. "); + QSensorGestureManager manager; + idList = manager.gestureIds(); + + for (int i = 0; i < idList.count(); i++) { + if (idList.at(i) == "QtSensors.test.dup") + QTest::ignoreMessage(QtWarningMsg, "Ignoring recognizer \"QtSensors.test.dup\" from plugin \"TestGesturesDup\" because it is already registered "); + QStringList recognizerSignalsList = manager.recognizerSignals(idList.at(i)); + + QVERIFY(!recognizerSignalsList.contains("QtSensors.test2")); + } + + QScopedPointer<QSensorGesture> sensorGesture(new QSensorGesture(idList)); + QVERIFY(sensorGesture->validIds().contains("QtSensors.test2")); + QVERIFY(sensorGesture->validIds().contains("QtSensors.test")); + QVERIFY(sensorGesture->validIds().contains("QtSensors.test.dup")); + } + + QScopedPointer<QSensorGesture> thisGesture; + QString plugin; + plugin = "QtSensors.test2"; + thisGesture.reset(new QSensorGesture(QStringList() << plugin)); + QVERIFY(thisGesture->validIds().contains("QtSensors.test2")); + + plugin = "QtSensors.test.dup"; + thisGesture.reset(new QSensorGesture(QStringList() << plugin)); + QVERIFY(!thisGesture->validIds().contains("QtSensors.test2")); +} + +void Tst_qsensorgestureTest::tst_manager() +{ + QSensorGestureManager *manager2; + manager2 = new QSensorGestureManager(this); + QVERIFY(manager2 != 0); + delete manager2; +} + +void Tst_qsensorgestureTest::tst_manager_gestureids() +{ + QStringList idList; + QSensorGestureManager manager; + idList = manager.gestureIds(); + + QVERIFY(idList.count() > 0); + + QVERIFY(idList.contains("QtSensors.test")); + QVERIFY(idList.contains("QtSensors.test2")); + QVERIFY(idList.contains("QtSensors.test.dup")); +} + +void Tst_qsensorgestureTest::tst_manager_recognizerSignals() +{ + QStringList idList; + + QSensorGestureManager manager; + idList = manager.gestureIds(); + + idList.removeOne("QtSensors.test.dup"); + + for (int i = 0; i < idList.count(); i++) { + + QStringList recognizerSignalsList = manager.recognizerSignals(idList.at(i)); + + if (idList.at(i) == "QtSensors.test") { + QStringList signalList; + signalList << "detected(QString)"; + signalList << "tested()"; + QCOMPARE(recognizerSignalsList.count(), 2); + + QCOMPARE(recognizerSignalsList, signalList); + + } else if (idList.at(i) == "QtSensors.test2") { + QStringList signalList; + signalList << "detected(QString)"; + signalList << "test2()"; + signalList << "test3(bool)"; + + QCOMPARE(recognizerSignalsList.count(), 3); + QCOMPARE(recognizerSignalsList, signalList); + } + } +} + +void Tst_qsensorgestureTest::tst_manager_registerSensorGestureRecognizer() +{ + QSensorGestureManager manager; + int num = manager.gestureIds().count(); + QSensorGestureRecognizer *recognizer = new QTest3Recognizer; + bool ok = manager.registerSensorGestureRecognizer(recognizer); + QCOMPARE(ok, true); + QCOMPARE(num+1, manager.gestureIds().count()); + + recognizer = new QTest3Recognizer; +// QTest::ignoreMessage(QtWarningMsg, "\"QtSensors/test3\" is already known "); + ok = manager.registerSensorGestureRecognizer(recognizer); + QCOMPARE(ok, false); + QCOMPARE(num+1, manager.gestureIds().count()); +} + +void Tst_qsensorgestureTest::tst_manager__newSensorAvailable() +{ + QSensorGestureManager manager; + QSensorGestureManager manager2; + + QSignalSpy spy_manager_available(&manager, SIGNAL(newSensorGestureAvailable())); + QSignalSpy spy_manager2_available(&manager2, SIGNAL(newSensorGestureAvailable())); + + manager.gestureIds(); + QCOMPARE(spy_manager_available.count(),0); + QCOMPARE(spy_manager2_available.count(),0); + + QTest3Recognizer *recognizer = new QTest3Recognizer; + recognizer->changeId("QtSensors.test4"); + + bool ok = manager.registerSensorGestureRecognizer(recognizer); + QCOMPARE(ok, true); + QCOMPARE(spy_manager_available.count(),1); + + recognizer = new QTest3Recognizer; + recognizer->changeId("QtSensors.test4"); +// QTest::ignoreMessage(QtWarningMsg, "\"QtSensors.test4\" is already known "); + ok = manager.registerSensorGestureRecognizer(recognizer); + QCOMPARE(ok, false); + QCOMPARE(spy_manager_available.count(),1); + QCOMPARE(spy_manager2_available.count(),1); + + QScopedPointer<QSensorGesture> test4sg; + test4sg.reset(new QSensorGesture(QStringList() << "QtSensors.test4")); + QVERIFY(!test4sg->validIds().isEmpty()); + QVERIFY(test4sg->invalidIds().isEmpty()); +} + + +void Tst_qsensorgestureTest::tst_sensor_gesture_signals() +{ + QStringList testidList; + testidList << "QtSensors.test"; + testidList << "QtSensors.test2"; + + Q_FOREACH (const QString &plugin, testidList) { + + QScopedPointer<QSensorGesture> thisGesture(new QSensorGesture(QStringList() << plugin)); + + QSignalSpy spy_gesture_detected(thisGesture.data(), SIGNAL(detected(QString))); + QScopedPointer<QSignalSpy> spy_gesture_tested(0); + + if (plugin == "QtSensors.test") { + QStringList signalList; + signalList << "detected(QString)"; + signalList << "tested()"; + + QCOMPARE(thisGesture->gestureSignals().count(), 2); + QCOMPARE(thisGesture->gestureSignals(), signalList); + + QCOMPARE(thisGesture->gestureSignals().at(1), QString("tested()")); + + spy_gesture_tested.reset(new QSignalSpy(thisGesture.data(), SIGNAL(tested()))); + } else if (plugin == "QtSensors.test2") { + QStringList signalList; + signalList << "detected(QString)"; + signalList << "test2()"; + signalList << "test3(bool)"; + QCOMPARE(thisGesture->gestureSignals().count(), 3); + QCOMPARE(thisGesture->gestureSignals(), signalList); + + QCOMPARE(thisGesture->gestureSignals().at(1), QString("test2()")); + spy_gesture_tested.reset(new QSignalSpy(thisGesture.data(), SIGNAL(test2()))); + } + + QVERIFY(!thisGesture->validIds().isEmpty()); + thisGesture->startDetection(); + + QCOMPARE(spy_gesture_detected.count(),1); + + if (plugin == "QtSensors.test") { + QCOMPARE(spy_gesture_tested->count(),1); + QList<QVariant> arguments ; + arguments = spy_gesture_detected.takeFirst(); // take the first signal + QCOMPARE(arguments.at(0).toString(), QString("tested")); + } else if (plugin == "QtSensors.test2") { + QCOMPARE(spy_gesture_tested->count(),1); + } + } + +} + + +void Tst_qsensorgestureTest::tst_sensor_gesture_threaded() +{ + + QScopedPointer<QSensorGesture> gesture(new QSensorGesture(QStringList() << "QtSensors.test")); + + QScopedPointer<QThread> thread(new QThread); + QScopedPointer<QSensorGestureWithSlots> t_gesture(new QSensorGestureWithSlots(QStringList() << "QtSensors.test")); + t_gesture->moveToThread(thread.data()); + + currentSignal = removeParens(gesture->gestureSignals().at(0)); + + QSignalSpy thread_gesture(t_gesture->gesture, SIGNAL(detected(QString))); + QSignalSpy spy_gesture2(gesture.data(), SIGNAL(detected(QString))); + + QCOMPARE(gesture->isActive(),false); + gesture->startDetection(); + + QCOMPARE(thread_gesture.count(),0); + QCOMPARE(spy_gesture2.count(),1); + + QCOMPARE(gesture->isActive(),true); + + thread->start(); + QTimer::singleShot(0, t_gesture.data(), SLOT(startDetection())); // Delivered on the thread + + //QTRY_COMPARE(t_gesture->gesture->isActive(),true); + +// QTRY_VERIFY(thread_gesture.count() > 0); + // spy_gesture2.clear(); + //QTRY_VERIFY(spy_gesture2.count() > 0); + + // QTimer::singleShot(0, t_gesture.data(), SLOT(stopDetection())); // Delivered on the thread + + // QTRY_COMPARE(t_gesture->gesture->isActive(),false); + /// QCOMPARE(gesture->isActive(),true); + + thread->quit(); + thread->wait(); +} + +void Tst_qsensorgestureTest::tst_sensor_gesture() +{ + QScopedPointer<QSensorGesture> gesture(new QSensorGesture(QStringList() << "QtSensors.test")); + + QScopedPointer<QSensorGesture> gesture2(new QSensorGesture(QStringList() << "QtSensors.test2")); + QScopedPointer<QSensorGesture> gesture3(new QSensorGesture(QStringList() << "QtSensors.test2")); + + QCOMPARE(gesture->validIds(),QStringList() << "QtSensors.test"); + + QCOMPARE(gesture->gestureSignals().at(1), QString("tested()")); + + QVERIFY(gesture->invalidIds().isEmpty()); + QVERIFY(gesture2->invalidIds().isEmpty()); + QVERIFY(gesture3->invalidIds().isEmpty()); + + currentSignal = removeParens(gesture->gestureSignals().at(1)); + + QSignalSpy spy_gesture(gesture.data(), SIGNAL(detected(QString))); + + QSignalSpy spy_gesture2(gesture2.data(), SIGNAL(detected(QString))); + + QSignalSpy spy_gesture3_detected(gesture3.data(), SIGNAL(detected(QString))); + + QSignalSpy spy_gesture4_test2(gesture3.data(), SIGNAL(test2())); + QSignalSpy spy_gesture5_test3(gesture3.data(), SIGNAL(test3(bool))); + + + QCOMPARE(gesture->isActive(),false); + gesture->startDetection(); + + QCOMPARE(spy_gesture.count(),1); + + QCOMPARE(gesture->isActive(),true); + QCOMPARE(gesture2->validIds(),QStringList() <<"QtSensors.test2"); + QCOMPARE(gesture2->gestureSignals().at(1), QString("test2()")); + currentSignal = removeParens(gesture2->gestureSignals().at(1)); + + connect(gesture2.data(),SIGNAL(detected(QString)), + this,SLOT(shakeDetected(QString))); + + QCOMPARE(gesture2->isActive(),false); + + gesture2->startDetection(); + + QCOMPARE(gesture2->isActive(),true); + + QCOMPARE(spy_gesture2.count(),1); + + QCOMPARE(spy_gesture3_detected.count(),0); + + gesture2->stopDetection(); + + QCOMPARE(gesture2->isActive(),false); + QCOMPARE(gesture3->isActive(),false); + + gesture3->startDetection(); + + QCOMPARE(gesture3->isActive(),true); + QCOMPARE(gesture2->isActive(),false); + + QCOMPARE(spy_gesture.count(),1); + + QCOMPARE(spy_gesture2.count(),1); + + + QCOMPARE(spy_gesture3_detected.count(),1); + + QCOMPARE(spy_gesture4_test2.count(),1); + + QCOMPARE(spy_gesture5_test3.count(),1); + + QList<QVariant> arguments2 = spy_gesture5_test3.takeFirst(); + QCOMPARE(arguments2.at(0).toBool(), true); +} + +void Tst_qsensorgestureTest::tst_recognizer() +{ + QScopedPointer<QSensorGesture> gesture(new QSensorGesture(QStringList() << "QtSensors.test")); + QScopedPointer<QSensorGesture> gesture2(new QSensorGesture(QStringList() << "QtSensors.test")); + + QSignalSpy spy_gesture(gesture.data(), SIGNAL(detected(QString))); + QSignalSpy spy_gesture2(gesture2.data(), SIGNAL(detected(QString))); + + QCOMPARE(gesture->isActive(),false); + QCOMPARE(gesture2->isActive(),false); + + currentSignal = removeParens(gesture2->gestureSignals().at(0)); + + gesture2->startDetection();//activate 2 + + QCOMPARE(gesture->isActive(),false); + QCOMPARE(gesture2->isActive(),true); + + QCOMPARE(spy_gesture.count(),0); + + QCOMPARE(spy_gesture2.count(),1); + + QList<QVariant> arguments = spy_gesture2.takeFirst(); + QCOMPARE(arguments.at(0).toString(), QString("tested")); + + QCOMPARE(spy_gesture2.count(),0); + + gesture->startDetection(); //activate 1 + + QCOMPARE(gesture->isActive(),true); + QCOMPARE(gesture2->isActive(),true); + + /*QTRY_COMPARE(spy_gesture.count(),1); + + QCOMPARE(spy_gesture2.count(),1); + + arguments = spy_gesture.takeFirst(); // take the first signal + QCOMPARE(arguments.at(0).toString(), QString("tested")); + spy_gesture2.removeFirst(); + + gesture->stopDetection(); //stop 1 gesture object + + QCOMPARE(gesture->isActive(),false); + QCOMPARE(gesture2->isActive(),true); + + spy_gesture2.clear(); + gesture2->startDetection(); + + QCOMPARE(gesture->isActive(),false); + QCOMPARE(spy_gesture.count(),0); + + QCOMPARE(gesture2->isActive(),true); + + QTRY_COMPARE(spy_gesture2.count(), 1); + */ +} + + +void Tst_qsensorgestureTest::tst_sensorgesture_noid() +{ + QScopedPointer<QSensorGesture> gesture(new QSensorGesture(QStringList() << "QtSensors.noid")); + QVERIFY(gesture->validIds().isEmpty()); + QCOMPARE(gesture->invalidIds(), QStringList() << "QtSensors.noid"); + + QTest::ignoreMessage(QtWarningMsg, "QSignalSpy: No such signal: 'detected(QString)'"); + QSignalSpy spy_gesture(gesture.data(), SIGNAL(detected(QString))); + + QCOMPARE(spy_gesture.count(),0); + + gesture->startDetection(); + QCOMPARE(gesture->isActive(),false); + QCOMPARE(spy_gesture.count(),0); + + gesture->stopDetection(); + QCOMPARE(gesture->isActive(),false); + QCOMPARE(spy_gesture.count(),0); + + QVERIFY(gesture->gestureSignals().isEmpty()); + + QCOMPARE(gesture->invalidIds() ,QStringList() << "QtSensors.noid"); + + QSensorGestureManager manager; + QStringList recognizerSignalsList = manager.recognizerSignals( "QtSensors.noid"); + QVERIFY(recognizerSignalsList.isEmpty()); + + QVERIFY(!recognizerSignalsList.contains("QtSensors.noid")); + + QSensorGestureRecognizer *fakeRecognizer = manager.sensorGestureRecognizer("QtSensors.noid"); + QVERIFY(!fakeRecognizer); +} + +void Tst_qsensorgestureTest::tst_sensor_gesture_multi() +{ + + QStringList ids; + ids << "QtSensors.test"; + ids <<"QtSensors.test2"; + ids << "QtSensors.bogus"; + + QScopedPointer<QSensorGesture> gesture(new QSensorGesture(ids)); + QStringList gestureSignals = gesture->gestureSignals(); + + gestureSignals.removeDuplicates() ; + QCOMPARE(gestureSignals, gesture->gestureSignals()); + + QCOMPARE(gesture->gestureSignals().count(), 4); + QCOMPARE(gesture->invalidIds(), QStringList() << "QtSensors.bogus"); + + QCOMPARE(gesture->isActive(),false); + + QSignalSpy spy_gesture_detected(gesture.data(), SIGNAL(detected(QString))); + gesture->startDetection(); + QCOMPARE(gesture->isActive(),true); + QCOMPARE(spy_gesture_detected.count(),2); + + QList<QVariant> arguments ; + arguments = spy_gesture_detected.takeAt(0); + QCOMPARE(arguments.at(0).toString(), QString("tested")); + + arguments = spy_gesture_detected.takeAt(0); + QCOMPARE(arguments.at(0).toString(), QString("test2")); + + /* + QTRY_COMPARE(spy_gesture_detected.count(),1); + + gesture->stopDetection(); + + QCOMPARE(gesture->isActive(),false); + + { + QSensorGestureManager manager; + QVERIFY(!manager.gestureIds().contains("QtSensors.bogus")); + QSensorGestureRecognizer *recognizer = manager.sensorGestureRecognizer("QtSensors.bogus"); + QVERIFY(recognizer == 0); + } +*/ +} + +void Tst_qsensorgestureTest::shakeDetected(const QString &type) +{ + QCOMPARE(type,currentSignal); +} + +void Tst_qsensorgestureTest::tst_sensor_gesture_notinitialized() +{ + QTest::ignoreMessage(QtWarningMsg, "\"QtSensors.test.dup\" from the plugin \"TestGesturesDup\" is already known. "); + QSensorGestureManager manager; + QSensorGestureRecognizer *recognizer = manager.sensorGestureRecognizer("QtSensors.test"); + + QTest::ignoreMessage(QtWarningMsg, "Not starting. Gesture Recognizer not initialized "); + recognizer->startBackend(); + QVERIFY(recognizer->isActive() == false); + + QTest::ignoreMessage(QtWarningMsg, "Not stopping. Gesture Recognizer not initialized "); + recognizer->stopBackend(); + QVERIFY(recognizer->isActive() == false); + + recognizer->createBackend(); + QVERIFY(recognizer->isActive() == false); + +} + + +QTEST_MAIN(Tst_qsensorgestureTest); + +#include "tst_qsensorgesturetest.moc" |