summaryrefslogtreecommitdiffstats
path: root/tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@insta.fi>2021-06-03 13:12:52 +0300
committerJuha Vuolle <juha.vuolle@insta.fi>2021-06-15 11:36:02 +0300
commit54b3ca67ad7230a21d76c581dd4287401acb230f (patch)
tree2d9b59930700cf99b7553c21a5846c4bee6f9191 /tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp
parentae82c50ca7fd5e356a736467e660acd976ec2e25 (diff)
Increase QtSensors QML autotest coverage
This commit introduces QML based auto tests in order to increase the autotest coverage. Additionally the QML sensor activity handling is fixed which caused the newly added tests to fail. There are also long-standing bugs about these activeChanged() double emits. Pick-to: 6.2 Task-number: QTBUG-92514 Task-number: QTBUG-70770 Task-number: QTBUG-80755 Change-Id: I98f036f665a056c441efa00aab76ec47bc628057 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp')
-rw-r--r--tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp288
1 files changed, 0 insertions, 288 deletions
diff --git a/tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp b/tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp
deleted file mode 100644
index 91f51159..00000000
--- a/tests/auto/sensors2qmlapi/tst_sensors2qmlapi.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtSensors module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtTest/QSignalSpy>
-#include <QtCore/QDebug>
-
-#include "../../../src/sensorsquick/qmlsensor_p.h"
-#include "../../../src/sensorsquick/qmlsensorgesture_p.h"
-
-#include "qtemplategestureplugin.h"
-#include "qtemplaterecognizer.h"
-#include <qsensorgesturemanager.h>
-#include <qsensorbackend.h>
-#include "qsensormanager.h"
-
-QT_USE_NAMESPACE
-
-QT_BEGIN_NAMESPACE
-
-class tst_Sensors2QMLAPI : public QObject
-{
- Q_OBJECT
-
-private slots:
- void initTestCase();
- void testGesture();
- void testSensorRanges();
-};
-
-void tst_Sensors2QMLAPI::initTestCase()
-{
- qputenv("QT_SENSORS_LOAD_PLUGINS", "0"); // Do not load plugins
-}
-
-void tst_Sensors2QMLAPI::testGesture()
-{
- QTemplateGesturePlugin* plugin = new QTemplateGesturePlugin();
- QList <QSensorGestureRecognizer *> recognizers = plugin->createRecognizers();
- QSensorGestureManager manager;
-
- QmlSensorGesture* gs = new QmlSensorGesture(this);
- gs->componentComplete();
- QSignalSpy spy_availableGesturesChanged(gs, SIGNAL(availableGesturesChanged()));
- QSignalSpy spy_detected(gs, SIGNAL(detected(QString)));
- QSignalSpy spy_gesturesChanged(gs, SIGNAL(gesturesChanged()));
- QSignalSpy spy_validGesturesChanged(gs, SIGNAL(validGesturesChanged()));
- QSignalSpy spy_invalidGesturesChanged(gs, SIGNAL(invalidGesturesChanged()));
- QSignalSpy spy_enabledChanged(gs, SIGNAL(enabledChanged()));
-
- //This flag is needed if you run this unit test with an alread installed template plugin
- bool registered = false;
- for (int i = 0; i < recognizers.count(); i++){
- registered = manager.registerSensorGestureRecognizer(recognizers[i]);
- }
- if (registered) {
- QCOMPARE(spy_availableGesturesChanged.count(), 2);
- }
-
- //check creation of a not known plugin
- QCOMPARE(spy_invalidGesturesChanged.count(), 0);
- QCOMPARE(spy_gesturesChanged.count(), 0);
- gs->setGestures(QStringList() << "lollipop");
- QCOMPARE(spy_gesturesChanged.count(), 1);
- QCOMPARE(spy_invalidGesturesChanged.count(), 1);
-
- //check creation of a known plugin
- QCOMPARE(spy_validGesturesChanged.count(), 0);
- QCOMPARE(spy_gesturesChanged.count(), 1);
- spy_invalidGesturesChanged.clear();
- spy_validGesturesChanged.clear();
- gs->setGestures(QStringList() << "QtSensors.template");
- QCOMPARE(spy_gesturesChanged.count(), 2);
- QCOMPARE(spy_invalidGesturesChanged.count(), 1);
- QCOMPARE(spy_validGesturesChanged.count(), 1);
-
- //enable "QtSensors.template"
- QCOMPARE(spy_enabledChanged.count(), 0);
- QCOMPARE(spy_detected.count(), 0);
- gs->setEnabled(true);
- QCOMPARE(spy_enabledChanged.count(), 1);
- QCOMPARE(spy_detected.count(), 1);
-
- //set gesture during running sensor should not emit gesture changed
- spy_gesturesChanged.clear();
- gs->setGestures(QStringList() << "QtSensors.template2");
- QCOMPARE(spy_gesturesChanged.count(), 0);
-
- gs->setEnabled(false);
-
- QmlSensorGesture* gs1 = new QmlSensorGesture(this);
- QSignalSpy spy1_detected(gs1, SIGNAL(detected(QString)));
- QSignalSpy spy1_gesturesChanged(gs1, SIGNAL(gesturesChanged()));
- QSignalSpy spy1_validGesturesChanged(gs1, SIGNAL(validGesturesChanged()));
- QSignalSpy spy1_invalidGesturesChanged(gs1, SIGNAL(invalidGesturesChanged()));
- QSignalSpy spy1_enabledChanged(gs1, SIGNAL(enabledChanged()));
- gs1->componentComplete();
-
- //set enable = true without gesture should
- gs1->setEnabled(true);
- QCOMPARE(spy1_enabledChanged.count(), 1);
- gs1->setEnabled(false);
- spy1_enabledChanged.clear();
-
- //reding gestures check if we get back an empty string list
- QStringList gestures = gs1->gestures();
- QCOMPARE(gestures.count(), 0);
- QStringList validgestures = gs1->validGestures();
- QCOMPARE(validgestures.count(), 0);
- QStringList invalidgestures = gs1->invalidGestures();
- QCOMPARE(invalidgestures.count(), 0);
-
- //check types "QtSensors.template" "QtSensors.template1" "lollipop"
- //expect valid 2 not available 1
- gestures << "QtSensors.template" << "QtSensors.template1" << "lollipop";
- gs1->setGestures(gestures);
- gestures = gs1->gestures();
- QCOMPARE(gestures.count(), 3);
- QCOMPARE(spy1_validGesturesChanged.count(), 1);
- QCOMPARE(spy1_invalidGesturesChanged.count(), 1);
- QCOMPARE(spy1_gesturesChanged.count(), 1);
- //set same gesture again should not emit gesture changed
- gs1->setGestures(gestures);
- QCOMPARE(spy1_gesturesChanged.count(), 1);
-
- spy1_gesturesChanged.clear();
- gestures.clear();
- gs1->setGestures(gestures);
- QCOMPARE(spy1_gesturesChanged.count(), 1);
-
- //enable "QtSensors.template" and "QtSensors.template1"
- gestures << "QtSensors.template" << "QtSensors.template1";
- gs1->setEnabled(false);
- gs1->setGestures(gestures);
- spy1_enabledChanged.clear();
- spy1_detected.clear();
- gs1->setEnabled(true);
- QCOMPARE(spy1_enabledChanged.count(), 1);
- QCOMPARE(spy1_detected.count(), 2);
- gs1->setEnabled(false);
-
- //check sensor shouldn't run until the componentComplete gets called
- QmlSensorGesture* gs2 = new QmlSensorGesture(this);
- QSignalSpy spy2_detected(gs2, SIGNAL(detected(QString)));
- gs2->setGestures(QStringList() << "QtSensors.template");
- gs2->setEnabled(true);
- QCOMPARE(spy2_detected.count(), 0);
- gs2->componentComplete();
- QCOMPARE(spy2_detected.count(), 1);
-}
-
-class QDummySensorBackend : public QSensorBackend
-{
- Q_OBJECT
-public:
- QDummySensorBackend(QSensor *sensor) : QSensorBackend(sensor)
- {
- addDataRate(2, 3);
- addDataRate(5, 7);
- addOutputRange(100, 200, 1);
- addOutputRange(600, 700, 10);
- addOutputRange(0, 1, 2);
- }
-
- void start() override {}
- void stop() override {}
-};
-
-class QDummySensorReading : public QSensorReading
-{
- Q_OBJECT
-public:
- QDummySensorReading(QObject *parent) : QSensorReading(parent, nullptr) {}
-};
-
-class QmlDummySensorReading : public QmlSensorReading
-{
- Q_OBJECT
-public:
- QmlDummySensorReading(QSensor *sensor) :
- QmlSensorReading(sensor),
- m_reading(new QDummySensorReading(this))
- {}
-
- QSensorReading *reading() const override { return m_reading; }
- void readingUpdate() override {}
-
-private:
- QSensorReading *m_reading = nullptr;
-};
-
-class QmlDummySensor : public QmlSensor
-{
- Q_OBJECT
-public:
- QmlDummySensor(QObject *parent = nullptr) :
- QmlSensor(parent),
- m_sensor(new QSensor("dummy", this))
- {
- QDummySensorBackend b(m_sensor);
- Q_UNUSED(b);
- }
-
- QSensor *sensor() const override { return m_sensor; }
- QmlSensorReading *createReading() const override { return new QmlDummySensorReading(m_sensor); }
-
- void componentComplete() override { QmlSensor::componentComplete(); }
-
-private:
- QSensor *m_sensor = nullptr;
-};
-
-void tst_Sensors2QMLAPI::testSensorRanges()
-{
- QScopedPointer<QmlDummySensor> qmlSensor(new QmlDummySensor);
- qmlSensor->componentComplete();
-
- auto ranges = qmlSensor->availableDataRates();
- QCOMPARE(ranges.count(&ranges), 2);
-
- const auto range0 = ranges.at(&ranges, 0);
- QCOMPARE(range0->minimum(), 2);
- QCOMPARE(range0->maximum(), 3);
- QSignalSpy range0Spy(range0, SIGNAL(destroyed()));
-
- const auto range1 = ranges.at(&ranges, 1);
- QCOMPARE(range1->minimum(), 5);
- QCOMPARE(range1->maximum(), 7);
- QSignalSpy range1Spy(range1, SIGNAL(destroyed()));
-
- auto outputs = qmlSensor->outputRanges();
- QCOMPARE(outputs.count(&outputs), 3);
-
- const auto output0 = outputs.at(&outputs, 0);
- QCOMPARE(output0->minimum(), 100);
- QCOMPARE(output0->maximum(), 200);
- QCOMPARE(output0->accuracy(), 1);
- QSignalSpy output0Spy(output0, SIGNAL(destroyed()));
-
- const auto output1 = outputs.at(&outputs, 1);
- QCOMPARE(output1->minimum(), 600);
- QCOMPARE(output1->maximum(), 700);
- QCOMPARE(output1->accuracy(), 10);
- QSignalSpy output1Spy(output1, SIGNAL(destroyed()));
-
- const auto output2 = outputs.at(&outputs, 2);
- QCOMPARE(output2->minimum(), 0);
- QCOMPARE(output2->maximum(), 1);
- QCOMPARE(output2->accuracy(), 2);
- QSignalSpy output2Spy(output2, SIGNAL(destroyed()));
-
- qmlSensor.reset();
- QCOMPARE(range0Spy.count(), 1);
- QCOMPARE(range1Spy.count(), 1);
- QCOMPARE(output0Spy.count(), 1);
- QCOMPARE(output1Spy.count(), 1);
- QCOMPARE(output2Spy.count(), 1);
-}
-
-QT_END_NAMESPACE
-
-QTEST_MAIN(tst_Sensors2QMLAPI)
-#include "tst_sensors2qmlapi.moc"