summaryrefslogtreecommitdiffstats
path: root/tests/auto/network
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2021-09-17 17:30:36 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2021-10-07 19:08:23 +0200
commit7fb855e175df6aa5937b00ea05312cf7ed323afa (patch)
tree545ad7037c85ee39cd4e8b04aae674f2e943fbb1 /tests/auto/network
parentd9f6fba3854f778124e6f8b1bda0994b42cd7988 (diff)
QNetworkInfo: Add transport medium detection API
The new public API returns and notifies changes to the currently active transport medium for the application. And there's a new private API to report it, with backends to follow. Task-number: QTBUG-91023 Change-Id: I527985f9dabcd7bc4a32f36597e21bc4ab664c4e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'tests/auto/network')
-rw-r--r--tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp b/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp
index 2795def73d..16f1465668 100644
--- a/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp
+++ b/tests/auto/network/kernel/qnetworkinformation/tst_qnetworkinformation.cpp
@@ -41,6 +41,7 @@ private slots:
void initTestCase();
void reachability();
void behindCaptivePortal();
+ void transportMedium();
void cleanupTestCase();
private:
@@ -80,6 +81,12 @@ public:
instance->setBehindCaptivePortal(value);
}
+ static void setNewTransportMedium(QNetworkInformation::TransportMedium medium)
+ {
+ Q_ASSERT(instance);
+ instance->setTransportMedium(medium);
+ }
+
static QNetworkInformation::Features featuresSupportedStatic()
{
return { QNetworkInformation::Feature::Reachability,
@@ -188,5 +195,40 @@ void tst_QNetworkInformation::behindCaptivePortal()
QVERIFY(!signalEmitted);
}
+void tst_QNetworkInformation::transportMedium()
+{
+ auto info = QNetworkInformation::instance();
+ using TransportMedium = QNetworkInformation::TransportMedium;
+ TransportMedium medium = TransportMedium::Unknown;
+ bool signalEmitted = false;
+
+ connect(info, &QNetworkInformation::transportMediumChanged, this, [&, info](TransportMedium tm) {
+ signalEmitted = true;
+ QCOMPARE(tm, info->transportMedium());
+ medium = info->transportMedium();
+ });
+ QCOMPARE(info->transportMedium(), TransportMedium::Unknown); // Default is unknown
+
+ auto transportMediumEnum = QMetaEnum::fromType<TransportMedium>();
+ auto mediumCount = transportMediumEnum.keyCount();
+ // Verify index 0 is Unknown and skip it in the loop, it's the default.
+ QCOMPARE(TransportMedium(transportMediumEnum.value(0)), TransportMedium::Unknown);
+ for (int i = 1; i < mediumCount; ++i) {
+ signalEmitted = false;
+ TransportMedium m = TransportMedium(transportMediumEnum.value(i));
+ MockBackend::setNewTransportMedium(m);
+ QCoreApplication::processEvents();
+ QVERIFY(signalEmitted);
+ QCOMPARE(info->transportMedium(), m);
+ QCOMPARE(medium, m);
+ }
+
+ // Set the current value again, signal should not be emitted again
+ signalEmitted = false;
+ MockBackend::setNewTransportMedium(medium);
+ QCoreApplication::processEvents();
+ QVERIFY(!signalEmitted);
+}
+
QTEST_MAIN(tst_QNetworkInformation);
#include "tst_qnetworkinformation.moc"