1 #include <QNetworkAccessManager>
4 #include "ut_remotedbmgr.h"
5 #include "qnetworkreply.h"
7 void Ut_RemoteDBMgr::initTestCase()
9 subject = new RemoteDBMgr();
11 connect(subject, SIGNAL(dbReady(RemoteDB *)),
12 this, SLOT(verifyDB(RemoteDB *)));
17 void Ut_RemoteDBMgr::cleanupTestCase()
22 void Ut_RemoteDBMgr::createTestData()
25 ra << new Remote("model_A1", "A_mfg", 1, 9)
26 << new Remote("model_A2", "A_mfg", 2, 10);
28 rb << new Remote("model_B3", "B_mfg", 3, 11)
29 << new Remote("model_B4", "B_mfg", 4, 12)
30 << new Remote("model_B5", "B_mfg", 5, 13);
32 rc1 << new Remote("model_C1_6", "C1_mfg", 6, 14);
34 rc2 << new Remote("model_C2_7", "C2_mfg", 7, 15)
35 << new Remote("model_C2_8", "C2_mfg", 8, 16);
38 ma.insert("A_mfg", ra);
40 mb.insert("B_mfg", rb);
42 mc.insert("C1_mfg", rc1);
43 mc.insert("C2_mfg", rc2);
45 validDB.insert("A", ma);
46 validDB.insert("B", mb);
47 validDB.insert("C", mc);
50 void Ut_RemoteDBMgr::createTestDocument()
52 QDomElement root = document.createElement("db");
53 document.appendChild(root);
55 for (int i = 0; i < validDB.keys().size(); ++i) {
56 QChar letter = validDB.keys()[i][0];
57 QDomElement charEl = document.createElement("char");
58 charEl.setAttribute("id", letter);
59 createMfgElements(letter, charEl);
60 root.appendChild(charEl);
63 QNetworkReply::data.setData(document.toByteArray());
66 void Ut_RemoteDBMgr::createMfgElements(QChar &letter, QDomElement &parent)
68 for (int i = 0; i < validDB[letter].keys().size(); ++i) {
69 QString mfg = validDB[letter].keys()[i];
70 QDomElement mfgEl = document.createElement("mfg");
71 mfgEl.setAttribute("id", mfg);
72 createModelElements(mfg, mfgEl);
73 parent.appendChild(mfgEl);
77 void Ut_RemoteDBMgr::createModelElements(const QString &mfg,
80 for (int i = 0; i < validDB[mfg[0]][mfg].size(); ++i) {
81 Remote *r = validDB[mfg[0]][mfg][i];
82 QDomElement modelEl = document.createElement("model");
83 modelEl.setAttribute("name", r->name());
84 modelEl.setAttribute("rating", r->rating());
85 modelEl.setAttribute("vote_count", r->voteCount());
86 parent.appendChild(modelEl);
90 void Ut_RemoteDBMgr::testGetDBAsync()
92 subject->getDBAsync();
94 dbVerified.wait(&dbMutex, 5000);
99 void Ut_RemoteDBMgr::verifyDB(RemoteDB *db)
104 QCOMPARE(db->isEmpty(), false);
105 QCOMPARE(validDB.size(), db->size());
109 dbVerified.wakeAll();
112 void Ut_RemoteDBMgr::verifyRemotes(RemoteDB *db)
114 for (int i = 0; i < validDB.size(); ++i) {
115 MfgMap &validMfgs = validDB[validDB.keys()[i]];
116 MfgMap &mfgs = (*db)[db->keys()[i]];
117 QCOMPARE(validMfgs.size(), mfgs.size());
118 QCOMPARE(validDB.keys()[i], db->keys()[i]);
120 for (int j = 0; j < validMfgs.size(); ++j) {
121 RemoteList validRemotes = validMfgs[validMfgs.keys()[j]];
122 RemoteList remotes = mfgs[mfgs.keys()[j]];
123 QCOMPARE(validRemotes.size(), remotes.size());
124 QCOMPARE(validMfgs.keys()[j], mfgs.keys()[j]);
126 for (int k = 0; k < validRemotes.size(); ++k) {
127 QCOMPARE(*(validRemotes[k]), *(remotes[k]));
134 QTEST_MAIN(Ut_RemoteDBMgr)