diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2021-09-17 17:30:36 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2021-10-07 19:08:23 +0200 |
commit | 7fb855e175df6aa5937b00ea05312cf7ed323afa (patch) | |
tree | 545ad7037c85ee39cd4e8b04aae674f2e943fbb1 /tests/auto/network | |
parent | d9f6fba3854f778124e6f8b1bda0994b42cd7988 (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.cpp | 42 |
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" |