summaryrefslogtreecommitdiff
path: root/tests/auto/qdeclarativepositionsource
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-10-21 17:27:08 +0200
committerIvan Solovev <ivan.solovev@qt.io>2021-11-02 09:46:33 +0200
commit6db775f6d9d72cf8ee9d66333b8424e74be1e352 (patch)
tree0a293756b61619a91970d9368a0449b7bf922728 /tests/auto/qdeclarativepositionsource
parent5a1f44c3d41febca8480c077bd4c34e5a3332cdc (diff)
downloadqtlocation-6.2.tar.gz
Remove QtPositioning module from qtlocation.git6.2.46.2.36.2.26.2
Turns out that our CI does not support repos without any tests. This is treated like an error and leads to integration failure. This patch fixes it by disabling tests in coin/module_config.yaml. This config should be fixed when QtLocation tests are enabled Task-number: QTBUG-97084 Change-Id: Ib06e865fe2836806bbbee34345f06b471dd48660 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 23f32792ad53e23bbafbff6d7667f0bb0f69fc53)
Diffstat (limited to 'tests/auto/qdeclarativepositionsource')
-rw-r--r--tests/auto/qdeclarativepositionsource/CMakeLists.txt9
-rw-r--r--tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp533
2 files changed, 0 insertions, 542 deletions
diff --git a/tests/auto/qdeclarativepositionsource/CMakeLists.txt b/tests/auto/qdeclarativepositionsource/CMakeLists.txt
deleted file mode 100644
index 8d1d4653..00000000
--- a/tests/auto/qdeclarativepositionsource/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-qt_internal_add_test(tst_qdeclarativepositionsource
- SOURCES
- tst_qdeclarativepositionsource.cpp
- LIBRARIES
- Qt::Core
- Qt::Positioning
- Qt::PositioningQuickPrivate
- Qt::TestPrivate
-)
diff --git a/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp b/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp
deleted file mode 100644
index cd556ab4..00000000
--- a/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp
+++ /dev/null
@@ -1,533 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the test suite 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/private/qpropertytesthelper_p.h>
-#include <QtPositioningQuick/private/qdeclarativepositionsource_p.h>
-
-QT_USE_NAMESPACE
-
-class tst_DeclarativePositionSource : public QObject
-{
- Q_OBJECT
-
-private slots:
- void init();
-
- void nameBinding();
- void supportedMethodsBinding();
- void sourceErrorBinding();
- void validBinding();
- void positionBinding();
- void activeBinding();
- void startBreaksActiveBinding();
- void activeBindingBreak();
-
- void intervalOnSourceDependency();
- void preferredMethodsOnSourceDependency();
-
- void updateAfterStart();
- void startAfterUpdate();
- void stopAfterUpdate();
- void startStopAfterUpdate();
- void updateTimedOut();
- void updateWithStartTimedOut();
- void startUpdateStopWithNoIntervals();
-
-private:
- std::unique_ptr<QDeclarativePositionSource> m_positionSource = nullptr;
-};
-
-void tst_DeclarativePositionSource::init()
-{
- // create a fresh instance of QDeclarativePositionSource before each test
- m_positionSource.reset(new QDeclarativePositionSource);
- m_positionSource->componentComplete(); // simulate QML loading
-}
-
-void tst_DeclarativePositionSource::nameBinding()
-{
- m_positionSource->setName("test.source");
- QTestPrivate::testReadWritePropertyBasics<QDeclarativePositionSource, QString>(
- *m_positionSource.get(), "invalid source", "test.source", "name");
-}
-
-void tst_DeclarativePositionSource::supportedMethodsBinding()
-{
- // Invalid source has no positioning methods.
- // "test.source" has all positioning methods.
- m_positionSource->setName("invalid name");
- QTestPrivate::testReadOnlyPropertyBasics<QDeclarativePositionSource,
- QDeclarativePositionSource::PositioningMethods>(
- *m_positionSource.get(), QDeclarativePositionSource::NoPositioningMethods,
- QDeclarativePositionSource::AllPositioningMethods, "supportedPositioningMethods",
- [&]() { m_positionSource->setName("test.source"); });
-}
-
-void tst_DeclarativePositionSource::sourceErrorBinding()
-{
- // "dummy.source" has a minimum update interval of 100, and calling
- // update() with a smaller timeout immediately result in a timeout error
- m_positionSource->setName("dummy.source");
- QTestPrivate::testReadOnlyPropertyBasics<QDeclarativePositionSource,
- QDeclarativePositionSource::SourceError>(
- *m_positionSource.get(), QDeclarativePositionSource::NoError,
- QDeclarativePositionSource::UpdateTimeoutError, "sourceError",
- [&]() { m_positionSource->update(10); });
- if (QTest::currentTestFailed())
- return;
-
- // Test that we can't bind sourceError to smth, as it's read-only
- QProperty<QDeclarativePositionSource::SourceError> errorSetter;
- m_positionSource->bindableSourceError().setBinding(Qt::makePropertyBinding(errorSetter));
- QCOMPARE(m_positionSource->bindableSourceError().hasBinding(), false);
-}
-
-void tst_DeclarativePositionSource::validBinding()
-{
- // Invalid source name results in no position source -> invalid object.
- // Setting the name to "test.source" results in creating a new position
- // source -> valid object
- m_positionSource->setName("invalid name");
- QTestPrivate::testReadOnlyPropertyBasics<QDeclarativePositionSource, bool>(
- *m_positionSource.get(), false, true, "valid",
- [&]() { m_positionSource->setName("test.source"); });
-}
-
-static char *printPosition(const QDeclarativePosition *position)
-{
- // For this test we need to print only coordinate, so that we get a nice
- // error message if the below test fails.
- QString str;
- QDebug dbg(&str);
- dbg << position->coordinate();
- const auto dataArray = str.toLatin1();
- const auto msgSize = dataArray.size() + 1;
- char *msg = new char[msgSize];
- memset(msg, 0, msgSize);
- qsnprintf(msg, msgSize, "%s", dataArray.constData());
- return msg;
-}
-
-void tst_DeclarativePositionSource::positionBinding()
-{
- // "test.source" udpates its position, starting from (0, 0) coordinate, and
- // adding 0.1 lat and 0.1 log at every step
- m_positionSource->setName("test.source");
- m_positionSource->setUpdateInterval(200);
- const QGeoCoordinate c1(0, 0);
- const QGeoCoordinate c2(0.1, 0.1, 0);
- QCOMPARE(m_positionSource->position()->coordinate(), c1);
-
- QGeoPositionInfo posInfo;
- posInfo.setCoordinate(c1);
- QDeclarativePosition pos1;
- pos1.setPosition(posInfo);
-
- posInfo.setCoordinate(c2);
- QDeclarativePosition pos2;
- pos2.setPosition(posInfo);
-
- QTestPrivate::testReadOnlyPropertyBasics<QDeclarativePositionSource, QDeclarativePosition *>(
- *m_positionSource.get(), &pos1, &pos2, "position",
- [&]() {
- QSignalSpy spy(m_positionSource.get(),
- &QDeclarativePositionSource::positionChanged);
- m_positionSource->update();
- // Wait for the update to happen. It should take around 200 ms,
- // but we want to be on a safe side in case of high CI load.
- QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 5000);
- },
- [](const QDeclarativePosition *p1, const QDeclarativePosition *p2) {
- return p1->coordinate() == p2->coordinate();
- },
- printPosition);
- if (QTest::currentTestFailed())
- return;
-
- QProperty<QDeclarativePosition *> prop(nullptr);
- m_positionSource->bindablePosition().setBinding(Qt::makePropertyBinding(prop));
- // We can't have bindings on read-only properties
- QCOMPARE(m_positionSource->bindablePosition().hasBinding(), false);
-}
-
-void tst_DeclarativePositionSource::activeBinding()
-{
- // we can't use a common templated method to test active property, because
- // setActive() uses QTimer::singleShot() to actually update the property
- // state.
- m_positionSource->setName("test.source");
-
- QProperty<bool> activeObserver;
- activeObserver.setBinding(m_positionSource->bindableActive().makeBinding());
-
- QProperty<bool> activeLambdaObserver;
- activeLambdaObserver.setBinding([&]() { return m_positionSource->isActive(); });
-
- QSignalSpy activeSpy(m_positionSource.get(), &QDeclarativePositionSource::activeChanged);
-
- QCOMPARE(activeSpy.count(), 0);
- QCOMPARE(activeObserver.value(), false);
- QCOMPARE(activeLambdaObserver.value(), false);
-
- QProperty<bool> activeSetter(false);
- m_positionSource->bindableActive().setBinding(Qt::makePropertyBinding(activeSetter));
-
- activeSetter = true;
- QTest::qWait(0); // to trigger singleShot timer in setActive
-
- QCOMPARE(activeSpy.count(), 1);
- QCOMPARE(activeObserver.value(), true);
- QCOMPARE(activeLambdaObserver.value(), true);
-
- activeSetter = false;
-
- QCOMPARE(activeSpy.count(), 2);
- QCOMPARE(activeObserver.value(), false);
- QCOMPARE(activeLambdaObserver.value(), false);
-
- // calling update() does not break the binding
- m_positionSource->update(50);
- QCOMPARE(activeSpy.count(), 3);
- QCOMPARE(activeObserver.value(), true);
- QCOMPARE(activeLambdaObserver.value(), true);
-
- QTRY_COMPARE_WITH_TIMEOUT(m_positionSource->sourceError(),
- QDeclarativePositionSource::UpdateTimeoutError, 5000);
-
- QCOMPARE(activeSpy.count(), 4);
- QCOMPARE(activeObserver.value(), false);
- QCOMPARE(activeLambdaObserver.value(), false);
-
- activeSetter = true;
- QTest::qWait(0); // to trigger singleShot timer in setActive
-
- QCOMPARE(activeSpy.count(), 5);
- QCOMPARE(activeObserver.value(), true);
- QCOMPARE(activeLambdaObserver.value(), true);
-
- // calling stop() will break the binding
- m_positionSource->stop();
-
- QCOMPARE(activeSpy.count(), 6);
- QCOMPARE(m_positionSource->isActive(), false);
- QCOMPARE(activeObserver.value(), false);
- QCOMPARE(activeLambdaObserver.value(), false);
-
- activeSetter = false;
- activeSetter = true;
- QTest::qWait(0); // to trigger singleShot timer in setActive
-
- // nothing changed, as the binding is broken
- QCOMPARE(activeSpy.count(), 6);
- QCOMPARE(m_positionSource->isActive(), false);
- QCOMPARE(activeObserver.value(), false);
- QCOMPARE(activeLambdaObserver.value(), false);
-}
-
-void tst_DeclarativePositionSource::startBreaksActiveBinding()
-{
- m_positionSource->setName("test.source");
- QSignalSpy activeSpy(m_positionSource.get(), &QDeclarativePositionSource::activeChanged);
-
- QProperty<bool> activeSetter(true);
- m_positionSource->bindableActive().setBinding(Qt::makePropertyBinding(activeSetter));
-
- QTest::qWait(0); // to trigger singleShot timer in setActive
-
- QCOMPARE(m_positionSource->isActive(), true);
- QCOMPARE(activeSpy.count(), 1);
- QVERIFY(m_positionSource->bindableActive().hasBinding());
-
- // Call start() explicitly, which should break the binding for 'active'
- // property.
- m_positionSource->start();
- activeSetter = false; // this should have no effect
- QTest::qWait(0); // to trigger singleShot timer in setActive
-
- QCOMPARE(m_positionSource->isActive(), true);
- QCOMPARE(activeSpy.count(), 1);
- QVERIFY(!m_positionSource->bindableActive().hasBinding());
-}
-
-void tst_DeclarativePositionSource::activeBindingBreak()
-{
- // This test checks a tricky scenario of breaking the binding for
- // 'active' property.
- // 0. active has a binding to some property Prop.
- // 1. Prop is set to true => active = true => start getting position info.
- // 2. Calling update() for a single update => the binding of active is not
- // broken.
- // 3. Calling stop() explicitly before the update() call is finished =>
- // the active binding is supposed to be broken, but the active state
- // should still be true, because we have a pending update.
- // 4. The pending update finishes => the active is set to false.
-
- m_positionSource->setName("test.source");
-
- QProperty<bool> setter(false);
- m_positionSource->bindableActive().setBinding(Qt::makePropertyBinding(setter));
- QVERIFY(m_positionSource->bindableActive().hasBinding());
-
- setter = true;
- QTest::qWait(0); // to trigger singleShot timer in setActive
- QCOMPARE(m_positionSource->isActive(), true);
-
- QSignalSpy posSpy(m_positionSource.get(), &QDeclarativePositionSource::positionChanged);
- QSignalSpy errSpy(m_positionSource.get(), &QDeclarativePositionSource::sourceErrorChanged);
- m_positionSource->update(210);
-
- m_positionSource->stop();
- QVERIFY(!m_positionSource->bindableActive().hasBinding());
- QCOMPARE(m_positionSource->isActive(), true);
-
- // Wait for the single update to complete. It can be either position update
- // or timeout.
- QTRY_VERIFY_WITH_TIMEOUT(posSpy.count() > 0 || errSpy.count() > 0, 5000);
-
- QCOMPARE(m_positionSource->isActive(), false);
- QVERIFY(!m_positionSource->bindableActive().hasBinding());
-}
-
-void tst_DeclarativePositionSource::intervalOnSourceDependency()
-{
- // updateInterval can be modified if the new source does not support that
- // large one, or implements some calculation
- m_positionSource->setName("invalid_source"); // reset the source
-
- QSignalSpy intervalSpy(m_positionSource.get(),
- &QDeclarativePositionSource::updateIntervalChanged);
-
- m_positionSource->setUpdateInterval(100);
- QCOMPARE(m_positionSource->updateInterval(), 100);
- QCOMPARE(intervalSpy.count(), 1);
-
- // "test.source" has a minimum update interval of 200
- m_positionSource->setName("test.source");
- QCOMPARE(m_positionSource->updateInterval(), 200);
- QCOMPARE(intervalSpy.count(), 2);
-
- // "dummy.source" has a minimum update interval of 100, so we expect our
- // desired interval to be applied
- m_positionSource->setName("dummy.source");
- QCOMPARE(m_positionSource->updateInterval(), 100);
- QCOMPARE(intervalSpy.count(), 3);
-}
-
-void tst_DeclarativePositionSource::preferredMethodsOnSourceDependency()
-{
- m_positionSource->setName("invalid_source"); // reset the source
-
- QSignalSpy methodsSpy(m_positionSource.get(),
- &QDeclarativePositionSource::preferredPositioningMethodsChanged);
-
- m_positionSource->setPreferredPositioningMethods(
- QDeclarativePositionSource::SatellitePositioningMethods);
- QCOMPARE(m_positionSource->preferredPositioningMethods(),
- QDeclarativePositionSource::SatellitePositioningMethods);
- QCOMPARE(methodsSpy.count(), 1);
-
- // "dummy.source" has only non-satellite methods, so they will be used
- m_positionSource->setName("dummy.source");
- QCOMPARE(m_positionSource->preferredPositioningMethods(),
- QDeclarativePositionSource::NonSatellitePositioningMethods);
- QCOMPARE(methodsSpy.count(), 2);
-
- // "test.source" has all positioning methods, so satellite will be used,
- // as we initially wanted
- m_positionSource->setName("test.source");
- QCOMPARE(m_positionSource->preferredPositioningMethods(),
- QDeclarativePositionSource::SatellitePositioningMethods);
- QCOMPARE(methodsSpy.count(), 3);
-}
-
-void tst_DeclarativePositionSource::updateAfterStart()
-{
- // When update() is called after start(), it should not invalidate any
- // state. The active state must still be true when the single update() is
- // completed.
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- m_positionSource->start();
- QCOMPARE(m_positionSource->isActive(), true);
-
- QSignalSpy posSpy(m_positionSource.get(), &QDeclarativePositionSource::positionChanged);
- QSignalSpy errSpy(m_positionSource.get(), &QDeclarativePositionSource::sourceErrorChanged);
- m_positionSource->update(210);
- // Wait for the single update to complete. It can be either position update
- // or timeout.
- QTRY_VERIFY_WITH_TIMEOUT(posSpy.count() > 0 || errSpy.count() > 0, 5000);
- QCOMPARE(m_positionSource->isActive(), true);
-
- m_positionSource->stop();
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-void tst_DeclarativePositionSource::startAfterUpdate()
-{
- // When start() is called after update(), the position source should remain
- // active even when the signle update is completed.
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- QSignalSpy posSpy(m_positionSource.get(), &QDeclarativePositionSource::positionChanged);
- QSignalSpy errSpy(m_positionSource.get(), &QDeclarativePositionSource::sourceErrorChanged);
- m_positionSource->update(210);
- QCOMPARE(m_positionSource->isActive(), true);
-
- m_positionSource->start();
- // Wait for the single update to complete. It can be either position update
- // or timeout.
- QTRY_VERIFY_WITH_TIMEOUT(posSpy.count() > 0 || errSpy.count() > 0, 5000);
- QCOMPARE(m_positionSource->isActive(), true);
-
- m_positionSource->stop();
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-void tst_DeclarativePositionSource::stopAfterUpdate()
-{
- // When stop() is called after update(), and the update() is still in
- // progress, the position source should remain active until the update()
- // is completed.
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- QSignalSpy posSpy(m_positionSource.get(), &QDeclarativePositionSource::positionChanged);
- QSignalSpy errSpy(m_positionSource.get(), &QDeclarativePositionSource::sourceErrorChanged);
- m_positionSource->update(210);
- QCOMPARE(m_positionSource->isActive(), true);
-
- m_positionSource->stop();
- QCOMPARE(m_positionSource->isActive(), true);
-
- // Wait for the single update to complete. It can be either position update
- // or timeout.
- QTRY_VERIFY_WITH_TIMEOUT(posSpy.count() > 0 || errSpy.count() > 0, 5000);
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-void tst_DeclarativePositionSource::startStopAfterUpdate()
-{
- // Quite artificial example. Calling start() and stop() after update(),
- // while still waiting for the update() to complete, should still result in
- // the position source to be active until the update() is completed.
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- QSignalSpy posSpy(m_positionSource.get(), &QDeclarativePositionSource::positionChanged);
- QSignalSpy errSpy(m_positionSource.get(), &QDeclarativePositionSource::sourceErrorChanged);
- m_positionSource->update(210);
- QCOMPARE(m_positionSource->isActive(), true);
-
- m_positionSource->start();
- m_positionSource->stop();
-
- QCOMPARE(m_positionSource->isActive(), true);
-
- // Wait for the single update to complete. It can be either position update
- // or timeout.
- QTRY_VERIFY_WITH_TIMEOUT(posSpy.count() > 0 || errSpy.count() > 0, 5000);
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-void tst_DeclarativePositionSource::updateTimedOut()
-{
- // This test checks that we reset to inactive state when the single update()
- // request times out without providing the position info
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- m_positionSource->update(50); // too small timeout -> will return an error
- QCOMPARE(m_positionSource->isActive(), true);
-
- QTRY_COMPARE_WITH_TIMEOUT(m_positionSource->sourceError(),
- QDeclarativePositionSource::UpdateTimeoutError, 5000);
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-void tst_DeclarativePositionSource::updateWithStartTimedOut()
-{
- // This test checks that if single update() times out, but the regular
- // updates are running, we still remain in active state.
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- m_positionSource->start();
-
- m_positionSource->update(50); // too small timeout -> will return an error
- QCOMPARE(m_positionSource->isActive(), true);
-
- QTRY_COMPARE_WITH_TIMEOUT(m_positionSource->sourceError(),
- QDeclarativePositionSource::UpdateTimeoutError, 5000);
- QCOMPARE(m_positionSource->isActive(), true);
-
- m_positionSource->stop();
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-void tst_DeclarativePositionSource::startUpdateStopWithNoIntervals()
-{
- // This test checks that a sequence of calls start() -> update() -> stop()
- // without any waits between them will result in expected behavior.
- // Specifically, the position source should remain active until it gets
- // the position response.
-
- m_positionSource->setName("test.source");
-
- QCOMPARE(m_positionSource->isActive(), false);
-
- m_positionSource->start();
- QSignalSpy posSpy(m_positionSource.get(), &QDeclarativePositionSource::positionChanged);
- QSignalSpy errSpy(m_positionSource.get(), &QDeclarativePositionSource::sourceErrorChanged);
- m_positionSource->update(210);
- QCOMPARE(m_positionSource->isActive(), true);
- m_positionSource->stop();
- QCOMPARE(m_positionSource->isActive(), true);
-
- // Wait for the single update to complete. It can be either position update
- // or timeout.
- QTRY_VERIFY_WITH_TIMEOUT(posSpy.count() > 0 || errSpy.count() > 0, 5000);
- QCOMPARE(m_positionSource->isActive(), false);
-}
-
-QTEST_MAIN(tst_DeclarativePositionSource)
-
-#include "tst_qdeclarativepositionsource.moc"