summaryrefslogtreecommitdiffstats
path: root/tests/auto/qsensorgestures
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@nokia.com>2012-09-19 19:19:46 +1000
committerLorn Potter <lorn.potter@gmail.com>2012-11-13 20:13:24 +0100
commit05b99e39f4c9e3249d22410d1c70eafb7b8c0170 (patch)
tree0ead578ee1113121494a710b59c4f46376d2803a /tests/auto/qsensorgestures
parentd8de6ec84d0d4d0a0a48a44590dde2797fe7cc09 (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')
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtest2recognizer.cpp98
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h75
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtestrecognizer.cpp105
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h78
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin.cpp107
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h71
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.cpp96
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h75
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.cpp95
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h76
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.cpp105
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h72
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/test1.pro19
-rw-r--r--tests/auto/qsensorgestures/qsensorgestures.pro38
-rw-r--r--tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp629
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"