From ac2721e954142e534e3acced8a90ef6cf876efa7 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer Date: Sat, 14 Dec 2013 14:53:18 +0100 Subject: Framework for some tests --- tests/tst_UpdateChecker.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/tst_UpdateChecker.cpp (limited to 'tests/tst_UpdateChecker.cpp') diff --git a/tests/tst_UpdateChecker.cpp b/tests/tst_UpdateChecker.cpp new file mode 100644 index 00000000..dd31f253 --- /dev/null +++ b/tests/tst_UpdateChecker.cpp @@ -0,0 +1,22 @@ +#include + +#include "TestUtil.h" + +class UpdateCheckerTest : public QObject +{ + Q_OBJECT +private +slots: + void initTestCase() + { + + } + void cleanupTestCase() + { + + } +}; + +QTEST_GUILESS_MAIN(UpdateCheckerTest) + +#include "tst_UpdateChecker.moc" -- cgit v1.2.3 From a02e62f17f7b51c489e209ab6937ad717fbcfb07 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer Date: Sat, 14 Dec 2013 16:02:51 +0100 Subject: Tests for parsing of channel lists in UpdateChecker --- tests/tst_UpdateChecker.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) (limited to 'tests/tst_UpdateChecker.cpp') diff --git a/tests/tst_UpdateChecker.cpp b/tests/tst_UpdateChecker.cpp index dd31f253..a73dc1fd 100644 --- a/tests/tst_UpdateChecker.cpp +++ b/tests/tst_UpdateChecker.cpp @@ -1,6 +1,18 @@ #include +#include #include "TestUtil.h" +#include "logic/updater/UpdateChecker.h" + +Q_DECLARE_METATYPE(UpdateChecker::ChannelListEntry) + +bool operator==(const UpdateChecker::ChannelListEntry &e1, const UpdateChecker::ChannelListEntry &e2) +{ + return e1.id == e2.id && + e1.name == e2.name && + e1.description == e2.description && + e1.url == e2.url; +} class UpdateCheckerTest : public QObject { @@ -15,8 +27,63 @@ slots: { } + + static QString findTestDataUrl(const char *file) + { + return QUrl::fromLocalFile(QFINDTESTDATA(file)).toString(); + } + void tst_ChannelListParsing_data() + { + QTest::addColumn("channel"); + QTest::addColumn("channelUrl"); + QTest::addColumn("hasChannels"); + QTest::addColumn >("result"); + + QTest::newRow("no channels") + << QString() + << findTestDataUrl("tests/data/noChannels.json") + << false + << QList(); + QTest::newRow("one channel") + << QString("develop") + << findTestDataUrl("tests/data/oneChannel.json") + << true + << (QList() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"}); + QTest::newRow("several channels") + << QString("develop") + << findTestDataUrl("tests/data/channels.json") + << true + << (QList() + << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"} + << UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", "ftp://username@host/path/to/stuff"} + << UpdateChecker::ChannelListEntry{"42", "The Channel", "This is the channel that is going to answer all of your questions", "https://dent.me/tea"}); + } + void tst_ChannelListParsing() + { + QFETCH(QString, channel); + QFETCH(QString, channelUrl); + QFETCH(bool, hasChannels); + QFETCH(QList, result); + + UpdateChecker checker; + + QSignalSpy spy(&checker, SIGNAL(channelListLoaded())); + QVERIFY(spy.isValid()); + + checker.setCurrentChannel(channel); + checker.setChannelListUrl(channelUrl); + + checker.updateChanList(); + + QVERIFY(spy.wait()); + + QCOMPARE(spy.size(), 1); + + QCOMPARE(checker.hasChannels(), hasChannels); + QCOMPARE(checker.getChannelList(), result); + } }; -QTEST_GUILESS_MAIN(UpdateCheckerTest) +QTEST_GUILESS_MAIN_MULTIMC(UpdateCheckerTest) #include "tst_UpdateChecker.moc" -- cgit v1.2.3 From f273334212274b1f1c7da376ef186314de8c4428 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer Date: Sat, 14 Dec 2013 19:19:14 +0100 Subject: More tests for the UpdateChecker class. It should be done for now. --- tests/tst_UpdateChecker.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) (limited to 'tests/tst_UpdateChecker.cpp') diff --git a/tests/tst_UpdateChecker.cpp b/tests/tst_UpdateChecker.cpp index a73dc1fd..302473f7 100644 --- a/tests/tst_UpdateChecker.cpp +++ b/tests/tst_UpdateChecker.cpp @@ -37,22 +37,38 @@ slots: QTest::addColumn("channel"); QTest::addColumn("channelUrl"); QTest::addColumn("hasChannels"); + QTest::addColumn("valid"); QTest::addColumn >("result"); + QTest::newRow("garbage") + << QString() + << findTestDataUrl("tests/data/garbageChannels.json") + << false + << false + << QList(); + QTest::newRow("errors") + << QString() + << findTestDataUrl("tests/data/errorChannels.json") + << false + << true + << QList(); QTest::newRow("no channels") << QString() << findTestDataUrl("tests/data/noChannels.json") << false + << true << QList(); QTest::newRow("one channel") << QString("develop") << findTestDataUrl("tests/data/oneChannel.json") << true + << true << (QList() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"}); QTest::newRow("several channels") << QString("develop") << findTestDataUrl("tests/data/channels.json") << true + << true << (QList() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"} << UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", "ftp://username@host/path/to/stuff"} @@ -63,25 +79,78 @@ slots: QFETCH(QString, channel); QFETCH(QString, channelUrl); QFETCH(bool, hasChannels); + QFETCH(bool, valid); QFETCH(QList, result); UpdateChecker checker; - QSignalSpy spy(&checker, SIGNAL(channelListLoaded())); - QVERIFY(spy.isValid()); + QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded())); + QVERIFY(channelListLoadedSpy.isValid()); checker.setCurrentChannel(channel); checker.setChannelListUrl(channelUrl); checker.updateChanList(); - QVERIFY(spy.wait()); + if (valid) + { + QVERIFY(channelListLoadedSpy.wait()); + QCOMPARE(channelListLoadedSpy.size(), 1); + } + else + { + channelListLoadedSpy.wait(); + QCOMPARE(channelListLoadedSpy.size(), 0); + } - QCOMPARE(spy.size(), 1); QCOMPARE(checker.hasChannels(), hasChannels); QCOMPARE(checker.getChannelList(), result); } + + void tst_UpdateChecking_data() + { + QTest::addColumn("channel"); + QTest::addColumn("channelUrl"); + QTest::addColumn("currentBuild"); + QTest::addColumn >("result"); + + QTest::newRow("valid channel") + << "develop" << findTestDataUrl("tests/data/channels.json") + << 2 + << (QList() << QString() << "1.0.3" << 3); + } + + void tst_UpdateChecking() + { + QFETCH(QString, channel); + QFETCH(QString, channelUrl); + QFETCH(int, currentBuild); + QFETCH(QList, result); + + MMC->m_version.build = currentBuild; + + UpdateChecker checker; + checker.setCurrentChannel(channel); + checker.setChannelListUrl(channelUrl); + + QSignalSpy updateAvailableSpy(&checker, SIGNAL(updateAvailable(QString,QString,int))); + QVERIFY(updateAvailableSpy.isValid()); + QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded())); + QVERIFY(channelListLoadedSpy.isValid()); + + checker.updateChanList(); + QVERIFY(channelListLoadedSpy.wait()); + + checker.m_channels[0].url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("tests/data/")).toString(); + + checker.checkForUpdate(); + + QVERIFY(updateAvailableSpy.wait()); + QList res = result; + res[0] = checker.m_channels[0].url; + QCOMPARE(updateAvailableSpy.first(), res); + } }; QTEST_GUILESS_MAIN_MULTIMC(UpdateCheckerTest) -- cgit v1.2.3