From 72d33696181770b772a7ab64878a1ff19ffe94aa Mon Sep 17 00:00:00 2001 From: Torste Aikio Date: Tue, 29 Jun 2010 15:45:45 +0300 Subject: [PATCH] More tests for Remote class --- src/remote.cpp | 2 +- ut/stubs/qnetworkreply.cpp | 9 +++-- ut/stubs/qnetworkreply.h | 2 ++ ut/ut_remote/ut_remote.cpp | 81 ++++++++++++++++++++++++++++++++++++++++---- ut/ut_remote/ut_remote.h | 11 ++++-- 5 files changed, 94 insertions(+), 11 deletions(-) diff --git a/src/remote.cpp b/src/remote.cpp index 1f41978..28a3131 100644 --- a/src/remote.cpp +++ b/src/remote.cpp @@ -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(); diff --git a/ut/stubs/qnetworkreply.cpp b/ut/stubs/qnetworkreply.cpp index 553bf9e..9ea8f5f 100644 --- a/ut/stubs/qnetworkreply.cpp +++ b/ut/stubs/qnetworkreply.cpp @@ -1,17 +1,21 @@ #include #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); } diff --git a/ut/stubs/qnetworkreply.h b/ut/stubs/qnetworkreply.h index d5b0824..7990728 100644 --- a/ut/stubs/qnetworkreply.h +++ b/ut/stubs/qnetworkreply.h @@ -2,6 +2,7 @@ #define QNETWORKREPLY_H #include +#include class QNetworkReply { @@ -18,6 +19,7 @@ public: void deleteLater(); QByteArray readLine(qint64 maxlen = 0); + static QBuffer data; }; #endif // QNETWORKREPLY_H diff --git a/ut/ut_remote/ut_remote.cpp b/ut/ut_remote/ut_remote.cpp index d221de0..2915f77 100644 --- a/ut/ut_remote/ut_remote.cpp +++ b/ut/ut_remote/ut_remote.cpp @@ -1,12 +1,13 @@ #include #include "ut_remote.h" - -#include +#include "rating.h" +#include +#include "qnetworkaccessmanager.h" #include #include +#include -#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) diff --git a/ut/ut_remote/ut_remote.h b/ut/ut_remote/ut_remote.h index d0373c4..9c6c765 100644 --- a/ut/ut_remote/ut_remote.h +++ b/ut/ut_remote/ut_remote.h @@ -2,6 +2,7 @@ #define UT_REMOTE_H #include +#include 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 -- 1.7.9.5