diff options
Diffstat (limited to 'tests/auto/qsensor/tst_qsensor.cpp')
-rw-r--r-- | tests/auto/qsensor/tst_qsensor.cpp | 177 |
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)); } }; |