More tests for Remote class
authorTorste Aikio <zokier@zokier.laptop>
Tue, 29 Jun 2010 12:45:45 +0000 (15:45 +0300)
committerTorste Aikio <zokier@zokier.laptop>
Tue, 29 Jun 2010 12:45:45 +0000 (15:45 +0300)
src/remote.cpp
ut/stubs/qnetworkreply.cpp
ut/stubs/qnetworkreply.h
ut/ut_remote/ut_remote.cpp
ut/ut_remote/ut_remote.h

index 1f41978..28a3131 100644 (file)
@@ -137,7 +137,7 @@ void Remote::infoRequestFinished(QNetworkReply *reply)
     if (reply->error() == QNetworkReply::NoError) {
         m_rating    = QString(reply->readLine(20)).toInt();
         m_voteCount = QString(reply->readLine(20)).toInt();
-        m_mfg       = QString(reply->readLine(20));
+        m_mfg       = QString(reply->readLine(20)).trimmed();
     }
     reply->close();
     reply->deleteLater();
index 553bf9e..9ea8f5f 100644 (file)
@@ -1,17 +1,21 @@
 #include <QDebug>
 #include "qnetworkreply.h"
 
+QBuffer QNetworkReply::data;
+
 QNetworkReply::QNetworkReply()
 {
+    data.open(QIODevice::ReadOnly);
 }
 
 QNetworkReply::~QNetworkReply()
 {
+    close();
 }
 
 QByteArray QNetworkReply::readAll()
 {
-    return QByteArray();
+    return data.data();
 }
 
 int QNetworkReply::error() const
@@ -21,6 +25,7 @@ int QNetworkReply::error() const
 
 void QNetworkReply::close()
 {
+    data.close();
 }
 
 void QNetworkReply::deleteLater()
@@ -29,6 +34,6 @@ void QNetworkReply::deleteLater()
 
 QByteArray QNetworkReply::readLine(qint64 maxlen)
 {
-    return QByteArray();
+    return data.readLine(maxlen);
 }
 
index d5b0824..7990728 100644 (file)
@@ -2,6 +2,7 @@
 #define QNETWORKREPLY_H
 
 #include <QByteArray>
+#include <QBuffer>
 
 class QNetworkReply
 {
@@ -18,6 +19,7 @@ public:
     void deleteLater();
     QByteArray readLine(qint64 maxlen = 0);
 
+    static QBuffer data;
 };
 
 #endif // QNETWORKREPLY_H
index d221de0..2915f77 100644 (file)
@@ -1,12 +1,13 @@
 #include <QSettings>
 #include "ut_remote.h"
-
-#include <fstream>
+#include "rating.h"
+#include <QNetworkReply>
+#include "qnetworkaccessmanager.h"
 
 #include <QtTest>
 #include <QDebug>
+#include <QMutex>
 
-#include "qnetworkaccessmanager.h"
 
 #define private public
 #include "remote.h"
@@ -16,6 +17,8 @@ void reset()
 {
     QNetworkAccessManager::urls.clear();
     QSettings::values.clear();
+    QNetworkReply::data.close();
+    QNetworkReply::data.setData("");
 }
 
 void Ut_Remote::initTestCase()
@@ -44,14 +47,33 @@ void Ut_Remote::cleanup()
 
 void Ut_Remote::testSaveToFile_normal()
 {
+    connect(subject, SIGNAL(saveFinished()),
+            this, SLOT(wakeTest()));
     subject->m_name = "testname";
+    QSettings settings;
+    settings.setValue("lircConf", "/tmp/irwiTestLircConf");
+    QNetworkReply::data.close();
+    QNetworkReply::data.setData("testdata");
+    QNetworkReply::data.open(QIODevice::ReadOnly);
+
     subject->saveToFile();
+
+    //wait for signal
+    QMutex mutex;
+    mutex.lock();
+    cond.wait(&mutex, 1000);
+    mutex.unlock();
+
     QCOMPARE(QNetworkAccessManager::urls.count(), 1);
     QCOMPARE(QNetworkAccessManager::urls[0], 
             QString("http://mercury.wipsl.com/irwi/uploaded/testname"));
-    QSettings settings;
     QCOMPARE(settings.value("remoteName", "fail").toString(), 
             QString("testname"));
+    QFile f("/tmp/irwiTestLircConf");
+    f.open(QIODevice::ReadOnly);
+    QByteArray testData = f.readAll();
+    f.close();
+    QCOMPARE(testData, QNetworkReply::data.data());
 }
 
 void Ut_Remote::testSaveToFile_emptyname()
@@ -64,14 +86,61 @@ void Ut_Remote::testSaveToFile_emptyname()
             QString("testname"));
 }
 
-void Ut_Remote::testUpdateInfo()
+void Ut_Remote::testUpdateInfo_normal()
 {
+    connect(subject, SIGNAL(infoUpdated()),
+            this, SLOT(wakeTest()));
+    subject->m_name = "testname";
+    QNetworkReply::data.close();
+    QNetworkReply::data.setData("1\n2\ntestmfg\n");
+    QNetworkReply::data.open(QIODevice::ReadOnly);
+    subject->updateInfo();
+
+    //wait for signal
+    QMutex mutex;
+    mutex.lock();
+    cond.wait(&mutex, 1000);
+    mutex.unlock();
+
+    QCOMPARE(QNetworkAccessManager::urls.count(), 1);
+    QCOMPARE(QNetworkAccessManager::urls[0], 
+            QString("http://mercury.wipsl.com/irwi/vote/get?name=testname"));
+    QCOMPARE(subject->rating(), 1);
+    QCOMPARE(subject->voteCount(), 2);
+    QCOMPARE(subject->mfg(), QString("testmfg"));
 }
 
-void Ut_Remote::testSendRating()
+void Ut_Remote::testUpdateInfo_emptyname()
 {
+    subject->m_name = "";
+    subject->updateInfo();
+    QCOMPARE(QNetworkAccessManager::urls.count(), 0);
 }
 
+void Ut_Remote::testSendRating_up()
+{
+    subject->m_name = "testname";
+    subject->sendRating(Rating::Up);
+    QCOMPARE(QNetworkAccessManager::urls.count(), 1);
+    QCOMPARE(QNetworkAccessManager::urls[0], 
+            QString("http://mercury.wipsl.com/irwi/vote/up?name=testname"));
+}
+
+void Ut_Remote::testSendRating_down()
+{
+    subject->m_name = "testname";
+    subject->sendRating(Rating::Down);
+    QCOMPARE(QNetworkAccessManager::urls.count(), 1);
+    QCOMPARE(QNetworkAccessManager::urls[0], 
+            QString("http://mercury.wipsl.com/irwi/vote/down?name=testname"));
+}
+
+void Ut_Remote::wakeTest()
+{
+    cond.wakeAll();
+}
+
+
 QTEST_MAIN(Ut_Remote)
 
 
index d0373c4..9c6c765 100644 (file)
@@ -2,6 +2,7 @@
 #define UT_REMOTE_H
 
 #include <QObject>
+#include <QWaitCondition>
 
 class Remote;
 
@@ -17,11 +18,17 @@ private slots:
 
     void testSaveToFile_normal();
     void testSaveToFile_emptyname();
-    void testUpdateInfo();
-    void testSendRating();
+    void testUpdateInfo_normal();
+    void testUpdateInfo_emptyname();
+    void testSendRating_up();
+    void testSendRating_down();
+
+public slots:
+    void wakeTest();
 
 private:
     Remote *subject;
+    QWaitCondition cond;
 };
 
 #endif // UT_REMOTE_H