diff options
author | Shane Kearns <ext-shane.2.kearns@nokia.com> | 2012-04-10 13:14:51 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-13 12:44:45 +0200 |
commit | 1424702918720576792da713cd3b8fee485775cf (patch) | |
tree | b05cc72fcba5097c561e0a3f476763aac2d8bfd5 /tests | |
parent | 03dbba9a62ea6391639c54ccc89ea75d4a872597 (diff) |
Add unit test for BackgroundRequestAttribute
Change-Id: I807953cac3d23825461f9ae860badbd148835330
Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 185c3eedd8..2d784fcbbc 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -75,6 +75,7 @@ #include <QtNetwork/qnetworkconfigmanager.h> #include <QtNetwork/qnetworkconfiguration.h> #include <QtNetwork/qnetworksession.h> +#include <QtNetwork/private/qnetworksession_p.h> #endif #ifdef QT_BUILD_INTERNAL #include <QtNetwork/private/qnetworkaccessmanager_p.h> @@ -402,6 +403,9 @@ private Q_SLOTS: void ftpAuthentication_data(); void ftpAuthentication(); + void backgroundRequest_data(); + void backgroundRequest(); + // NOTE: This test must be last! void parentingRepliesToTheApp(); private: @@ -6778,7 +6782,6 @@ void tst_QNetworkReply::closeDuringDownload() QTest::qWait(1000); //cancelling ftp takes some time, this avoids a warning caused by test's cleanup() destroying the connection cache before the abort is finished } - void tst_QNetworkReply::ftpAuthentication_data() { QTest::addColumn<QString>("referenceName"); @@ -6806,6 +6809,49 @@ void tst_QNetworkReply::ftpAuthentication() QCOMPARE(reply->error(), QNetworkReply::NetworkError(error)); } +void tst_QNetworkReply::backgroundRequest_data() +{ + QTest::addColumn<bool>("background"); + QTest::addColumn<int>("policy"); + QTest::addColumn<QNetworkReply::NetworkError>("error"); + + QTest::newRow("fg, normal") << false << 0 << QNetworkReply::NoError; + QTest::newRow("bg, normal") << true << 0 << QNetworkReply::NoError; + QTest::newRow("fg, nobg") << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError; + QTest::newRow("bg, nobg") << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError; + +} + +void tst_QNetworkReply::backgroundRequest() +{ +#ifdef QT_BUILD_INTERNAL + QFETCH(bool, background); + QFETCH(int, policy); + QFETCH(QNetworkReply::NetworkError, error); + + QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName())); + + if (background) + request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true)); + + //this preconstructs the session so we can change policies in advance + manager.setConfiguration(networkConfiguration); + + const QWeakPointer<const QNetworkSession> session = QNetworkAccessManagerPrivate::getNetworkSession(&manager); + QVERIFY(session); + QNetworkSession::UsagePolicies original = session.data()->usagePolicies(); + QNetworkSessionPrivate::setUsagePolicies(*const_cast<QNetworkSession *>(session.data()), QNetworkSession::UsagePolicies(policy)); + + QNetworkReplyPtr reply(manager.get(request)); + + QVERIFY(waitForFinish(reply) != Timeout); + if (session) + QNetworkSessionPrivate::setUsagePolicies(*const_cast<QNetworkSession *>(session.data()), original); + + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), error); +#endif +} // NOTE: This test must be last testcase in tst_qnetworkreply! void tst_QNetworkReply::parentingRepliesToTheApp() |