Fix for RemoteDBMgr unit tests
[irwi] / ut / ut_remotelist / ut_remotelist.cpp
1 #include "ut_remotelist.h"
2
3 #include <QtTest>
4
5 void Ut_RemoteList::initTestCase()
6 {
7     QStringList mfgs;
8     mfgs << "Lg" << "Leadtek" << "Microsoft" << "Philips" << "Topfield";
9
10     for (int i = 0; i < mfgs.size(); ++i)
11     {
12         QChar letter = mfgs.at(i).at(0);
13         QStringList l;
14
15         for (int j = 0; j < mfgs.size(); ++j)
16         {
17             if (mfgs.at(j).at(0) == letter)
18                 l << mfgs.at(j);
19         }
20         validMfgs.insert(letter, l);
21         l.clear();
22     }
23
24     // TODO rewrite
25     validModels.insert("Lg", QList<Model>());
26     validModels["Lg"].append(Model("AKB69680403", "AKB69680_00"));
27
28     validModels.insert("Leadtek", QList<Model>()); 
29     validModels["Leadtek"].append(Model("Y04G0004", "Y04G0004_00"));
30
31     validModels.insert("Microsoft", QList<Model>()); 
32     validModels["Microsoft"].append(Model("Xbox360", "Xbox360_00"));
33
34     validModels.insert("Philips", QList<Model>()); 
35     validModels["Philips"].append(Model("15PF4121", "15PF4121_00"));
36     validModels["Philips"].append(Model("modelname", "filename"));
37
38     validModels.insert("Topfield", QList<Model>()); 
39     validModels["Topfield"].append(Model("PVR5000", "PVR_5000_00"));
40
41     createDocument();
42 }
43
44 void Ut_RemoteList::cleanupTestCase()
45 {
46 }
47
48 void Ut_RemoteList::createDocument()
49 {
50     QDomElement root = document.createElement("db");
51     document.appendChild(root);
52
53     for (int i = 0; i < validMfgs.keys().size(); ++i)
54     {
55         QChar letter = validMfgs.keys().at(i).at(0);
56         QDomElement charEl = document.createElement("char");
57         charEl.setAttribute("id", letter);
58         createMfgElements(letter, charEl);
59         root.appendChild(charEl);
60     }
61 }
62
63 void Ut_RemoteList::createMfgElements(QChar &letter, QDomElement &parent)
64 {
65     for (int i = 0; i < validMfgs[letter].size(); ++i)
66     {
67         QString mfg = validMfgs[letter].at(i);
68         QDomElement mfgEl = document.createElement("mfg");
69         mfgEl.setAttribute("id", mfg);
70         createModelElements(mfg, mfgEl);
71         parent.appendChild(mfgEl);
72     }
73 }
74
75 void Ut_RemoteList::createModelElements(const QString &mfg, QDomElement &parent)
76 {
77     for (int i = 0; i < validModels[mfg].size(); ++i)
78     {
79         Model m = validModels[mfg].at(i);
80         QDomElement modelEl = document.createElement("model");
81         modelEl.setAttribute("file", m.file);
82         modelEl.setAttribute("name", m.name);
83         parent.appendChild(modelEl);
84     }
85 }
86
87 void Ut_RemoteList::testIsValid()
88 {
89     RemoteList subject(document);
90     QCOMPARE(subject.isValid(), true);
91 }
92
93 void Ut_RemoteList::testIsValid_setContent()
94 {
95     RemoteList subject;
96     QCOMPARE(subject.isValid(), false);
97     subject.setContent(document);
98     QCOMPARE(subject.isValid(), true);
99 }
100
101 void Ut_RemoteList::testLetters()
102 {
103     RemoteList subject(document);
104     compareLetters(subject);
105 }
106
107 void Ut_RemoteList::testManufacturers()
108 {
109     RemoteList subject(document);
110     compareManufacturers(subject);
111 }
112
113 void Ut_RemoteList::testModels()
114 {
115     RemoteList subject(document);
116     compareModels(subject);
117 }
118
119 void Ut_RemoteList::testLetters_setContent()
120 {
121     RemoteList subject;
122     subject.setContent(document);
123     compareLetters(subject);
124 }
125
126 void Ut_RemoteList::testManufacturers_setContent()
127 {
128     RemoteList subject;
129     subject.setContent(document);
130     compareManufacturers(subject);
131 }
132
133 void Ut_RemoteList::testModels_setContent()
134 {
135     RemoteList subject;
136     subject.setContent(document);
137     compareModels(subject);
138 }
139
140 void Ut_RemoteList::compareLetters(RemoteList &subject)
141 {
142     QStringList letters = subject.letters();
143     QStringList validLetters = validMfgs.keys();
144
145     QCOMPARE(validLetters.size(), letters.size());
146
147     for (int i = 0; i < letters.size(); ++i)
148     {
149         QCOMPARE(validLetters.at(i), letters.at(i));
150     }
151 }
152
153 void Ut_RemoteList::compareManufacturers(RemoteList &subject)
154 {
155     for (int i = 0; i < validMfgs.keys().size(); ++i)
156     {
157         QString letter = validMfgs.keys().at(i);
158         for (int j = 0; j < validMfgs.value(letter).size(); ++j)
159         {
160             QCOMPARE(validMfgs.value(letter).at(j), 
161                      subject.manufacturers(letter).at(j));
162         }
163     }
164 }
165
166 void Ut_RemoteList::compareModels(RemoteList &subject)
167 {
168     for (int i = 0; i < validModels.keys().size(); ++i)
169     {
170         QString mfg = validModels.keys().at(i);
171         for (int j = 0; j < validModels.value(mfg).size(); ++j)
172         {
173             QCOMPARE(validModels.value(mfg).at(j).name,
174                      subject.models(mfg).at(j).name);
175             QCOMPARE(validModels.value(mfg).at(j).file,
176                     subject.models(mfg).at(j).file);
177         }
178     }
179 }
180
181
182 QTEST_MAIN(Ut_RemoteList)
183
184