summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@insta.fi>2021-06-08 16:46:33 +0300
committerJuha Vuolle <juha.vuolle@insta.fi>2021-06-15 11:36:05 +0300
commitf8445fdcbf75e455443304bc290c48c37961e9f1 (patch)
tree2e47f5185cd12f2fad8dfc28649dee21f1754265 /tests/auto
parent54b3ca67ad7230a21d76c581dd4287401acb230f (diff)
Make sensor possible to indicate it is no longer busy
The current implementation allowed sensor backend to only indicate that it is busy, but not to tell when it was freed again. This commit allows sensor backend to indicate also that it's busy state has cleared. It is up to the sensor implementation to decide if it makes sense / is possible to do that or not. Pick-to: 6.2 Task-number: QTBUG-92513 Task-number: QTBUG-92505 Change-Id: Ied4857850e81346031fd83aa347d9955081118e8 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/common/test_backends.cpp9
-rw-r--r--tests/auto/common/test_backends.h1
-rw-r--r--tests/auto/qml/qml_quick/tst_sensors_basic.qml24
-rw-r--r--tests/auto/qml/qml_quick/tst_sensors_qmlquick.cpp4
-rw-r--r--tests/auto/qsensor/tst_qsensor.cpp18
5 files changed, 55 insertions, 1 deletions
diff --git a/tests/auto/common/test_backends.cpp b/tests/auto/common/test_backends.cpp
index aed4746e..15419b0e 100644
--- a/tests/auto/common/test_backends.cpp
+++ b/tests/auto/common/test_backends.cpp
@@ -55,8 +55,16 @@ static bool registerTestBackend(const char *className, CreateFunc func)
// the sensor reading values in the backend
static QMap<QSensor*, QSensorBackend*> sensorToBackend;
+void set_test_backend_busy(QSensor* sensor, bool busy)
+{
+ Q_ASSERT(sensor->isConnectedToBackend());
+ QSensorBackend* backend = sensorToBackend.value(sensor);
+ backend->sensorBusy(busy);
+}
+
void set_test_backend_reading(QSensor* sensor, const QJsonObject& values)
{
+ Q_ASSERT(sensor->isConnectedToBackend());
QSensorBackend* backend = sensorToBackend.value(sensor);
backend->reading()->setTimestamp(values["timestamp"].toInt()); // timestamp is common to all
if (sensor->type() == "QAccelerometer") {
@@ -182,4 +190,3 @@ void unregister_test_backends()
for (const Record &record : records)
QSensorManager::unregisterBackend(record.type, record.type);
}
-
diff --git a/tests/auto/common/test_backends.h b/tests/auto/common/test_backends.h
index 492fe7c1..66699b5c 100644
--- a/tests/auto/common/test_backends.h
+++ b/tests/auto/common/test_backends.h
@@ -35,6 +35,7 @@
void register_test_backends();
void unregister_test_backends();
void set_test_backend_reading(QSensor* sensor, const QJsonObject& values);
+void set_test_backend_busy(QSensor* sensor, bool busy);
#include <qaccelerometer.h>
#include <qaltimeter.h>
diff --git a/tests/auto/qml/qml_quick/tst_sensors_basic.qml b/tests/auto/qml/qml_quick/tst_sensors_basic.qml
index 0655fc36..298ecef8 100644
--- a/tests/auto/qml/qml_quick/tst_sensors_basic.qml
+++ b/tests/auto/qml/qml_quick/tst_sensors_basic.qml
@@ -42,6 +42,11 @@ TestCase {
signalName: "readingChanged"
}
+ SignalSpy {
+ id: sensorBusySpy
+ signalName: "busyChanged"
+ }
+
function init() {
TestControl.registerTestBackends()
}
@@ -50,6 +55,25 @@ TestCase {
TestControl.unregisterTestBackends()
}
+ function test_busy() {
+ var sensor = Qt.createQmlObject("import QtSensors; Accelerometer {identifier: \"QAccelerometer\"}", testCase);
+ sensorBusySpy.target = sensor
+ compare(sensor.busy, false)
+ verify(sensor.start())
+
+ // set sensor busy and verify 'busy' property and its signaling
+ TestControl.setSensorBusy(sensor, true)
+ compare(sensorBusySpy.count, 1)
+ TestControl.setSensorBusy(sensor, false)
+ compare(sensorBusySpy.count, 2)
+ TestControl.setSensorBusy(sensor, false)
+ compare(sensorBusySpy.count, 2)
+
+ // tidy up
+ sensor.destroy()
+ sensorBusySpy.clear()
+ }
+
function test_reading(data) {
var sensor = Qt.createQmlObject(
diff --git a/tests/auto/qml/qml_quick/tst_sensors_qmlquick.cpp b/tests/auto/qml/qml_quick/tst_sensors_qmlquick.cpp
index 7e52d3b8..8162601d 100644
--- a/tests/auto/qml/qml_quick/tst_sensors_qmlquick.cpp
+++ b/tests/auto/qml/qml_quick/tst_sensors_qmlquick.cpp
@@ -55,6 +55,10 @@ public slots:
void setSensorReading(const QmlSensor* qmlSensor, const QJsonObject& values) {
set_test_backend_reading(qmlSensor->sensor(), values);
}
+
+ void setSensorBusy(const QmlSensor* qmlSensor, bool busy) {
+ set_test_backend_busy(qmlSensor->sensor(), busy);
+ }
};
QUICK_TEST_MAIN_WITH_SETUP(tst_sensors_qmlquick, TestSetup)
diff --git a/tests/auto/qsensor/tst_qsensor.cpp b/tests/auto/qsensor/tst_qsensor.cpp
index 7eb9bba9..69c5c5f1 100644
--- a/tests/auto/qsensor/tst_qsensor.cpp
+++ b/tests/auto/qsensor/tst_qsensor.cpp
@@ -933,6 +933,24 @@ private slots:
// Now we can start the second instance
sensor2.start();
QVERIFY(sensor2.isActive());
+
+ // test 'busy' going back and forth and verify indication to frontend
+ register_test_backends();
+ QAccelerometer accelerometer;
+ accelerometer.setIdentifier("QAccelerometer");
+ QSignalSpy busySpy(&accelerometer, SIGNAL(busyChanged()));
+ QVERIFY(accelerometer.connectToBackend());
+ QVERIFY(!accelerometer.isBusy());
+ QCOMPARE(busySpy.count(), 0);
+
+ set_test_backend_busy(&accelerometer, true);
+ QCOMPARE(busySpy.count(), 1);
+ QVERIFY(accelerometer.isBusy());
+
+ set_test_backend_busy(&accelerometer, false);
+ QCOMPARE(busySpy.count(), 2);
+ QVERIFY(!accelerometer.isBusy());
+ unregister_test_backends();
}
void testIdenfifierChanged()