summaryrefslogtreecommitdiffstats
path: root/tests/auto/qsensor/tst_qsensor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qsensor/tst_qsensor.cpp')
-rw-r--r--tests/auto/qsensor/tst_qsensor.cpp177
1 files changed, 86 insertions, 91 deletions
diff --git a/tests/auto/qsensor/tst_qsensor.cpp b/tests/auto/qsensor/tst_qsensor.cpp
index 8e027971..261f81f9 100644
--- a/tests/auto/qsensor/tst_qsensor.cpp
+++ b/tests/auto/qsensor/tst_qsensor.cpp
@@ -1,30 +1,5 @@
-/****************************************************************************
-**
-** 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$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
//TESTED_COMPONENT=src/sensors
@@ -39,13 +14,10 @@
#include "test_sensor.h"
#include "test_sensor2.h"
#include "test_sensorimpl.h"
-#include "test_backends.h"
+#include "../common/test_backends.h"
QT_BEGIN_NAMESPACE
-// The unit test needs to change the behaviour of the library. It does this
-// through an exported but undocumented function.
-Q_SENSORS_EXPORT void sensors_unit_test_hook(int index);
bool operator==(const qoutputrange &orl1, const qoutputrange &orl2)
{
return (orl1.minimum == orl2.minimum &&
@@ -54,27 +26,16 @@ bool operator==(const qoutputrange &orl1, const qoutputrange &orl2)
}
namespace QTest {
- template<> char *toString(const qoutputrangelist &orl)
+ // QCOMPARE calls this upon failure (and if a list of these elements is compared,
+ // it will call this individually for each element)
+ template<> char* toString(const qoutputrange& range)
{
- QStringList list;
- foreach (const qoutputrange &item, orl) {
- list << QString("%1-%2%3%4").arg(item.minimum).arg(item.maximum).arg(QString::fromWCharArray(L"\u00B1")).arg(item.accuracy);
- }
- QString ret = QString("qoutputrangelist: (%1)").arg(list.join("), ("));
- return qstrdup(ret.toLatin1().data());
- }
- template<> char *toString(const QList<QByteArray> &data)
- {
- QStringList list;
- foreach (const QByteArray &str, data) {
- list << QString::fromLatin1(str);
- }
- QString ret = QString("QList<QByteArray>: (%1)").arg(list.join("), ("));
+ QString ret = QString("%1-%2%3%4").arg(range.minimum).arg(range.maximum)
+ .arg(QString::fromWCharArray(L"\u00B1")).arg(range.accuracy);
return qstrdup(ret.toLatin1().data());
}
}
-
class MyFilter : public TestSensorFilter { bool filter(TestSensorReading *) override { return false; } };
class ModFilter : public TestSensorFilter
@@ -136,18 +97,16 @@ private slots:
void testTypeRegistered()
{
- QList<QByteArray> expected;
- expected << TestSensor::type << TestSensor2::type;
- QList<QByteArray> actual = QSensor::sensorTypes();
- std::sort(actual.begin(), actual.end()); // The actual list is not in a defined order
- QCOMPARE(actual, expected);
+ // Verify type registrations done by the test_sensorplugin
+ QVERIFY(QSensor::sensorTypes().contains(TestSensor::sensorType));
+ QVERIFY(QSensor::sensorTypes().contains(TestSensor2::sensorType));
}
void testSensorRegistered()
{
QList<QByteArray> expected;
expected << "test sensor 2" << "test sensor 3" << testsensorimpl::id;
- QList<QByteArray> actual = QSensor::sensorsForType(TestSensor::type);
+ QList<QByteArray> actual = QSensor::sensorsForType(TestSensor::sensorType);
std::sort(actual.begin(), actual.end()); // The actual list is not in a defined order
QCOMPARE(actual, expected);
}
@@ -155,23 +114,23 @@ private slots:
void testSensorDefault()
{
QByteArray expected = testsensorimpl::id;
- QByteArray actual = QSensor::defaultSensorForType(TestSensor::type);
+ QByteArray actual = QSensor::defaultSensorForType(TestSensor::sensorType);
QCOMPARE(actual, expected);
}
void testBadDefaultFromConfig()
{
- QSensorManager::setDefaultBackend(QByteArray(TestSensor::type), QByteArray("bogus id"));
+ QSensorManager::setDefaultBackend(QByteArray(TestSensor::sensorType), QByteArray("bogus id"));
QByteArray expected = testsensorimpl::id;
- QByteArray actual = QSensor::defaultSensorForType(TestSensor::type);
+ QByteArray actual = QSensor::defaultSensorForType(TestSensor::sensorType);
QCOMPARE(actual, expected);
}
void testGoodDefaultFromConfig()
{
- QSensorManager::setDefaultBackend(QByteArray(TestSensor::type), QByteArray(testsensorimpl::id));
+ QSensorManager::setDefaultBackend(QByteArray(TestSensor::sensorType), QByteArray(testsensorimpl::id));
QByteArray expected = testsensorimpl::id;
- QByteArray actual = QSensor::defaultSensorForType(TestSensor::type);
+ QByteArray actual = QSensor::defaultSensorForType(TestSensor::sensorType);
QCOMPARE(actual, expected);
}
@@ -217,7 +176,7 @@ private slots:
void testBadDefaultCreation()
{
- QSensorManager::setDefaultBackend(QByteArray(TestSensor::type), QByteArray("test sensor 2"));
+ QSensorManager::setDefaultBackend(QByteArray(TestSensor::sensorType), QByteArray("test sensor 2"));
TestSensor sensor;
QTest::ignoreMessage(QtWarningMsg, "Can't create backend \"test sensor 2\"");
sensor.connectToBackend();
@@ -241,9 +200,9 @@ private slots:
sensor.connectToBackend();
QVERIFY(sensor.reading() != 0);
quint64 timestamp = sensor.reading()->timestamp();
- qtimestamp timestamp2 = sensor.reading()->timestamp();
+ quint64 timestamp2 = sensor.reading()->timestamp();
QVERIFY(timestamp == quint64());
- QVERIFY(timestamp2 == qtimestamp());
+ QVERIFY(timestamp2 == quint64());
sensor.setProperty("doThis", "setOne");
sensor.start();
timestamp = sensor.reading()->timestamp();
@@ -464,20 +423,20 @@ private slots:
sensor.setProperty("doThis", "setOne");
QSignalSpy spy(&sensor, SIGNAL(readingChanged()));
sensor.start();
- QCOMPARE(spy.count(), 1); // reading changes
+ QCOMPARE(spy.size(), 1); // reading changes
sensor.stop();
TestSensorFilter *filter2 = new MyFilter;
sensor.addFilter(filter2);
sensor.start();
- QCOMPARE(spy.count(), 1); // filter suppresses reading so it does not change
+ QCOMPARE(spy.size(), 1); // filter suppresses reading so it does not change
sensor.stop();
delete filter2;
TestSensorFilter *filter1 = new ModFilter;
sensor.addFilter(filter1);
sensor.start();
- QCOMPARE(spy.count(), 2); // filter does not suppress reading
+ QCOMPARE(spy.size(), 2); // filter does not suppress reading
sensor.stop();
delete filter1;
}
@@ -763,7 +722,7 @@ private slots:
// Unregister an unknown identifier
sensor.sensorsChangedEmitted = 0;
QTest::ignoreMessage(QtWarningMsg, "Identifier \"a random id\" is not registered");
- QSensorManager::unregisterBackend(TestSensor::type, "a random id");
+ QSensorManager::unregisterBackend(TestSensor::sensorType, "a random id");
QCOMPARE(sensor.sensorsChangedEmitted, 0);
// Unregister for an unknown type
@@ -773,11 +732,9 @@ private slots:
QCOMPARE(sensor.sensorsChangedEmitted, 0);
// Make sure we've cleaned up the list of available types
- QList<QByteArray> expected;
- expected << TestSensor::type << TestSensor2::type;
- QList<QByteArray> actual = QSensor::sensorTypes();
- std::sort(actual.begin(), actual.end()); // The actual list is not in a defined order
- QCOMPARE(actual, expected);
+ QVERIFY(!QSensor::sensorTypes().contains("a random type"));
+ QVERIFY(QSensor::sensorTypes().contains(TestSensor::sensorType));
+ QVERIFY(QSensor::sensorTypes().contains(TestSensor2::sensorType));
}
void testSetActive()
@@ -812,11 +769,11 @@ private slots:
bool actual;
expected = true;
- actual = QSensorManager::isBackendRegistered(TestSensor::type, testsensorimpl::id);
+ actual = QSensorManager::isBackendRegistered(TestSensor::sensorType, testsensorimpl::id);
QCOMPARE(expected, actual);
expected = false;
- actual = QSensorManager::isBackendRegistered(TestSensor::type, "random");
+ actual = QSensorManager::isBackendRegistered(TestSensor::sensorType, "random");
QCOMPARE(expected, actual);
expected = false;
@@ -834,10 +791,6 @@ private slots:
QCOMPARE(reading->z(), 1.0);
})
- TEST_SENSORINTERFACE(QAltimeter, QAltimeterReading, {
- QCOMPARE(reading->altitude(), 8848.0);
- })
-
TEST_SENSORINTERFACE(QAmbientLightSensor, QAmbientLightReading, {
QCOMPARE(reading->lightLevel(), QAmbientLightReading::Twilight);
})
@@ -857,10 +810,6 @@ private slots:
QCOMPARE(reading->z(), 1.0);
})
- TEST_SENSORINTERFACE(QHolsterSensor, QHolsterReading, {
- QCOMPARE(reading->holstered(), true);
- })
-
TEST_SENSORINTERFACE(QLightSensor, QLightReading, {
QCOMPARE(reading->lux(), 1.0);
})
@@ -946,11 +895,57 @@ private slots:
// Stopping the first instance causes the busyChanged signal to be emitted from the second instance
QSignalSpy spy(&sensor2, SIGNAL(busyChanged()));
sensor1.stop();
- QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.size(), 1);
// 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.size(), 0);
+
+ set_test_backend_busy(&accelerometer, true);
+ QCOMPARE(busySpy.size(), 1);
+ QVERIFY(accelerometer.isBusy());
+
+ set_test_backend_busy(&accelerometer, false);
+ QCOMPARE(busySpy.size(), 2);
+ QVERIFY(!accelerometer.isBusy());
+ unregister_test_backends();
+ }
+
+ void testIdenfifierChanged()
+ {
+ TestSensor sensor;
+ QSignalSpy spy(&sensor, SIGNAL(identifierChanged()));
+ QCOMPARE(sensor.identifier(), "");
+
+ // Change id and verify change
+ sensor.setIdentifier("a");
+ QCOMPARE(sensor.identifier(), "a");
+ QCOMPARE(spy.size(), 1);
+
+ // Set same id and verify that no changes
+ sensor.setIdentifier("a");
+ QCOMPARE(sensor.identifier(), "a");
+ QCOMPARE(spy.size(), 1);
+
+ // Change id and verify change
+ sensor.setIdentifier(testsensorimpl::id);
+ QCOMPARE(sensor.identifier(), testsensorimpl::id);
+ QCOMPARE(spy.size(), 2);
+
+ // Identifier cant be changed after connected to backend
+ QVERIFY(sensor.connectToBackend());
+ sensor.setIdentifier("c");
+ QCOMPARE(sensor.identifier(), testsensorimpl::id);
+ QCOMPARE(spy.size(), 2);
}
void testSupportedFeatures()
@@ -959,21 +954,21 @@ private slots:
// Not connected to backend - should report false for any feature
QVERIFY(!sensor.isConnectedToBackend());
- QVERIFY(!sensor.isFeatureSupported(QSensor::AlwaysOn));
- QVERIFY(!sensor.isFeatureSupported(QSensor::Buffering));
- QVERIFY(!sensor.isFeatureSupported(QSensor::GeoValues));
- QVERIFY(!sensor.isFeatureSupported(QSensor::FieldOfView));
- QVERIFY(!sensor.isFeatureSupported(QSensor::AccelerationMode));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::AlwaysOn));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::Buffering));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::GeoValues));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::FieldOfView));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::AccelerationMode));
// Connect to backend - according to the testsensorimpl implementation, AlwaysOn and
// GeoValues should be supported afterwards
QVERIFY(sensor.connectToBackend());
- QVERIFY(sensor.isFeatureSupported(QSensor::AlwaysOn));
- QVERIFY(!sensor.isFeatureSupported(QSensor::Buffering));
- QVERIFY(sensor.isFeatureSupported(QSensor::GeoValues));
- QVERIFY(!sensor.isFeatureSupported(QSensor::FieldOfView));
- QVERIFY(!sensor.isFeatureSupported(QSensor::AccelerationMode));
+ QVERIFY(sensor.isFeatureSupported(QSensor::Feature::AlwaysOn));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::Buffering));
+ QVERIFY(sensor.isFeatureSupported(QSensor::Feature::GeoValues));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::FieldOfView));
+ QVERIFY(!sensor.isFeatureSupported(QSensor::Feature::AccelerationMode));
}
};