tests/auto/qnetworkreply/tst_qnetworkreply.cpp
changeset 25 e24348a560a6
parent 22 79de32ba3296
child 29 b72c6db6890b
equal deleted inserted replaced
23:89e065397ea6 25:e24348a560a6
   274     void ignoreSslErrorsList();
   274     void ignoreSslErrorsList();
   275     void ignoreSslErrorsListWithSlot_data();
   275     void ignoreSslErrorsListWithSlot_data();
   276     void ignoreSslErrorsListWithSlot();
   276     void ignoreSslErrorsListWithSlot();
   277 #endif
   277 #endif
   278 
   278 
       
   279     void getAndThenDeleteObject_data();
       
   280     void getAndThenDeleteObject();
       
   281 
   279     // NOTE: This test must be last!
   282     // NOTE: This test must be last!
   280     void parentingRepliesToTheApp();
   283     void parentingRepliesToTheApp();
   281 };
   284 };
   282 
   285 
   283 QT_BEGIN_NAMESPACE
   286 QT_BEGIN_NAMESPACE
  4106     QCOMPARE(reply->error(), expectedNetworkError);
  4109     QCOMPARE(reply->error(), expectedNetworkError);
  4107 }
  4110 }
  4108 
  4111 
  4109 #endif // QT_NO_OPENSSL
  4112 #endif // QT_NO_OPENSSL
  4110 
  4113 
       
  4114 void tst_QNetworkReply::getAndThenDeleteObject_data()
       
  4115 {
       
  4116     QTest::addColumn<bool>("replyFirst");
       
  4117 
       
  4118     QTest::newRow("delete-reply-first") << true;
       
  4119     QTest::newRow("delete-qnam-first") << false;
       
  4120 }
       
  4121 
       
  4122 void tst_QNetworkReply::getAndThenDeleteObject()
       
  4123 {
       
  4124     // yes, this will leak if the testcase fails. I don't care. It must not fail then :P
       
  4125     QNetworkAccessManager *manager = new QNetworkAccessManager();
       
  4126     QNetworkRequest request("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile");
       
  4127     QNetworkReply *reply = manager->get(request);
       
  4128     reply->setReadBufferSize(1);
       
  4129     reply->setParent((QObject*)0); // must be 0 because else it is the manager
       
  4130 
       
  4131     QTime stopWatch;
       
  4132     stopWatch.start();
       
  4133     forever {
       
  4134         QCoreApplication::instance()->processEvents();
       
  4135         if (reply->bytesAvailable())
       
  4136             break;
       
  4137         if (stopWatch.elapsed() >= 30000)
       
  4138             break;
       
  4139     }
       
  4140 
       
  4141     QVERIFY(reply->bytesAvailable());
       
  4142     QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
       
  4143     QVERIFY(!reply->isFinished()); // must not be finished
       
  4144 
       
  4145     QFETCH(bool, replyFirst);
       
  4146 
       
  4147     if (replyFirst) {
       
  4148         delete reply;
       
  4149         delete manager;
       
  4150     } else {
       
  4151         delete manager;
       
  4152         delete reply;
       
  4153     }
       
  4154 }
       
  4155 
       
  4156 
       
  4157 
  4111 // NOTE: This test must be last testcase in tst_qnetworkreply!
  4158 // NOTE: This test must be last testcase in tst_qnetworkreply!
  4112 void tst_QNetworkReply::parentingRepliesToTheApp()
  4159 void tst_QNetworkReply::parentingRepliesToTheApp()
  4113 {
  4160 {
  4114     QNetworkRequest request (QUrl("http://" + QtNetworkSettings::serverName()));
  4161     QNetworkRequest request (QUrl("http://" + QtNetworkSettings::serverName()));
  4115     manager.get(request)->setParent(this); // parent to this object
  4162     manager.get(request)->setParent(this); // parent to this object