Added missing model.h and some tests for remotelist
authorJari Jarvi <t7jaja00@students.oamk.fi>
Fri, 11 Jun 2010 09:09:59 +0000 (12:09 +0300)
committerJari Jarvi <t7jaja00@students.oamk.fi>
Fri, 11 Jun 2010 09:09:59 +0000 (12:09 +0300)
src/model.h [new file with mode: 0644]
src/remotelist.cpp
src/remotelist.h
ut/ut_remotelist/notxml [new file with mode: 0644]
ut/ut_remotelist/remotes.xml [new file with mode: 0644]
ut/ut_remotelist/ut_remotelist.cpp
ut/ut_remotelist/ut_remotelist.h

diff --git a/src/model.h b/src/model.h
new file mode 100644 (file)
index 0000000..0b0b127
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _MODEL_H_
+#define _MODEL_H_
+
+struct Model
+{
+    Model(const QString &name, const QString &file)
+        : name(name)
+        , file(file)
+    {
+    }
+
+    Model(const Model &m)
+        : name(m.name)
+        , file(m.file)
+    {
+    }
+
+    QString name;
+    QString file;
+};
+
+#endif // _MODEL_H_
+
index e5352bf..7cfd34d 100644 (file)
@@ -26,11 +26,11 @@ RemoteList::RemoteList(const QString &xmlFile)
     parse(xmlFile);   
 }
 
-RemoteList::RemoteList(QIODevice in)
+RemoteList::RemoteList(QIODevice &in)
 {
     QDomDocument doc;
-    doc.setContent(&in);
-    parse(doc);
+    if (doc.setContent(&in))
+        parse(doc);
 }
 
 RemoteList::~RemoteList()
@@ -56,12 +56,12 @@ bool RemoteList::isValid()
     return valid;
 }
 
-QList<QChar> RemoteList::letters()
+QStringList RemoteList::letters()
 {
     return mfgMap.keys();
 }
 
-QStringList RemoteList::manufacturers(const QChar &letter)
+QStringList RemoteList::manufacturers(const QString &letter)
 {
     return mfgMap.value(letter);
 }
@@ -107,9 +107,9 @@ void RemoteList::parse(QDomDocument &doc)
         }
     }
 
+    // TODO: more error handling
     valid = (mfgMap.size() > 0 &&
-             modelMap.size() > 0 &&
-             mfgMap.values().size() == modelMap.keys().size());
+             modelMap.size() > 0);
 }
 
 QStringList RemoteList::parseMfgs(QDomElement &charEl)
index a1249f5..4650c09 100644 (file)
@@ -14,7 +14,7 @@ public:
     RemoteList(const RemoteList &);
     RemoteList(QDomDocument &);
     RemoteList(const QString &xmlFile);
-    RemoteList(QIODevice);
+    RemoteList(QIODevice &);
     ~RemoteList();
     
     void setContent(QDomDocument &);
@@ -32,7 +32,6 @@ private:
     void parse(QDomDocument &doc);
     QStringList parseMfgs(QDomElement &charEl);
     QList<Model> parseModels(QDomElement &mfgEl);
-    void printMaps();
     
 private:
     bool valid;
diff --git a/ut/ut_remotelist/notxml b/ut/ut_remotelist/notxml
new file mode 100644 (file)
index 0000000..9d1eb4c
--- /dev/null
@@ -0,0 +1,2 @@
+This is just a plain text file.
+
diff --git a/ut/ut_remotelist/remotes.xml b/ut/ut_remotelist/remotes.xml
new file mode 100644 (file)
index 0000000..30266da
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" ?>
+<db>
+<char id="P">
+    <mfg id="Philips">
+        <model file="15PF4121_00" name="15PF4121"/>
+    </mfg>
+</char>
+<char id="L">
+    <mfg id="Lg">
+        <model file="AKB69680_00" name="AKB69680403"/>
+    </mfg>
+    <mfg id="Leadtek">
+        <model file="Y04G0004_00" name="Y04G0004"/>
+    </mfg>
+</char>
+<char id="T">
+    <mfg id="Topfield">
+        <model file="PVR_5000_00" name="PVR5000"/>
+    </mfg>
+</char>
+<char id="M">
+    <mfg id="Microsoft">
+        <model file="Xbox360_00" name="Xbox360"/>
+    </mfg>
+</char>
+</db>
+
index 16b9daa..b8dac76 100644 (file)
@@ -5,6 +5,22 @@
 
 void Ut_RemoteList::initTestCase()
 {
+    // TODO rewrite
+    validLetters << "L" << "M" << "P" << "T";
+
+    QStringList ll;
+    ll << "Lg" << "Leadtek";
+
+    validMfgs.insert(validLetters.at(0), ll);
+    validMfgs.insert(validLetters.at(1), QStringList("Microsoft"));
+    validMfgs.insert(validLetters.at(2), QStringList("Philips"));
+    validMfgs.insert(validLetters.at(3), QStringList("Topfield"));
+
+    validModels.insert("Lg", QStringList("AKB69680403"));
+    validModels.insert("Leadtek", QStringList("Y04G0004"));
+    validModels.insert("Microsoft", QStringList("Xbox360"));
+    validModels.insert("Philips", QStringList("15PF4121"));
+    validModels.insert("Topfield", QStringList("PVR5000"));
 }
 
 void Ut_RemoteList::cleanupTestCase()
@@ -27,24 +43,39 @@ void Ut_RemoteList::testIsValid()
 
 void Ut_RemoteList::testIsValid_InvalidFile()
 {
-//    RemoteList subject("notxmlfile");
-//    QCOMPARE(subject.isValid(), false);
+    RemoteList subject("notxml");
+    QCOMPARE(subject.isValid(), false);
 }
 
 void Ut_RemoteList::testIsValid_FileNotFound()
 {
-//    RemoteList subject("thisdoesnotexist");
-//    QCOMPARE(subject.isValid(), false);
+    RemoteList subject("thisdoesnotexist");
+    QCOMPARE(subject.isValid(), false);
 }
  
 void Ut_RemoteList::testLetters()
 {
+    QStringList letters = RemoteList("remotes.xml").letters();
+    QCOMPARE(validLetters.size(), letters.size());
 
+    for (int i = 0; i < letters.size(); ++i)
+    {
+        QCOMPARE(validLetters.at(i), letters.at(i));
+    }
 }
 
 void Ut_RemoteList::testManufacturers()
 {
+    RemoteList subject("remotes.xml");
 
+    for (int i = 0; i < validMfgs.keys().size(); ++i)
+    {
+        for (int j = 0; j < validMfgs.value(validLetters.at(i)).size(); ++j)
+        {
+            QCOMPARE(validMfgs.value(validLetters.at(i)).at(j), 
+                     subject.manufacturers(validLetters.at(i)).at(j));
+        }
+    }
 }
 
 void Ut_RemoteList::testModels()
@@ -53,8 +84,6 @@ void Ut_RemoteList::testModels()
 }
 
 
-
-
 QTEST_MAIN(Ut_RemoteList)
 
 
index 939e234..0560529 100644 (file)
@@ -2,6 +2,8 @@
 #define _UT_REMOTELIST_H_
 
 #include <QObject>
+#include <QStringList>
+#include <QMap>
 
 class Ut_RemoteList: public QObject
 {
@@ -19,6 +21,11 @@ private slots:
     void testLetters();
     void testManufacturers();
     void testModels();
+
+private:
+    QStringList validLetters;
+    QMap<QString, QStringList> validMfgs;
+    QMap<QString, QStringList> validModels;
 };
 
 #endif // UT_REMOTELIST_H