[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [ruqola] /: Add autotest for serializing code. Found 2 bugs
From:       Montel Laurent <null () kde ! org>
Date:       2017-08-09 5:17:53
Message-ID: E1dfJNR-00089i-5g () code ! kde ! org
[Download RAW message or body]

Git commit ff5b637dd3212e15c35e7f7a5cf48276e1088529 by Montel Laurent.
Committed on 09/08/2017 at 05:17.
Pushed by mlaurent into branch 'master'.

Add autotest for serializing code. Found 2 bugs

M  +24   -0    autotests/roommodeltest.cpp
M  +2    -0    autotests/roommodeltest.h
M  +29   -1    src/room.cpp
M  +5    -1    src/room.h
M  +3    -1    src/roommodel.cpp

https://commits.kde.org/ruqola/ff5b637dd3212e15c35e7f7a5cf48276e1088529

diff --git a/autotests/roommodeltest.cpp b/autotests/roommodeltest.cpp
index be068bb..12adcaa 100644
--- a/autotests/roommodeltest.cpp
+++ b/autotests/roommodeltest.cpp
@@ -20,6 +20,10 @@
 
 
 #include "roommodeltest.h"
+#include "roommodel.h"
+#include "room.h"
+#include <QJsonDocument>
+#include <QJsonObject>
 #include <QTest>
 
 QTEST_MAIN(RoomModelTest)
@@ -29,3 +33,23 @@ RoomModelTest::RoomModelTest(QObject *parent)
 {
 
 }
+
+void RoomModelTest::shouldSerialized()
+{
+    Room input;
+    input.id = QStringLiteral("foo");
+    input.type = QStringLiteral("p");
+    input.name = QStringLiteral("d");
+    input.mAnnouncement = QStringLiteral("AA");
+    input.userName = QStringLiteral("pp");
+    input.userID = QStringLiteral("sdfsdfs");
+    input.topic = QStringLiteral("topic");
+    input.mutedUsers = QStringLiteral("mutedUsers");
+    input.jitsiTimeout = 55;
+    input.ro = true;
+    input.unread = 66;
+    input.selected = true;
+    const QByteArray ba = RoomModel::serialize(input);
+    Room output = RoomModel::fromJSon(QJsonObject(QJsonDocument::fromBinaryData(ba).object()));
+    QVERIFY(input.isEqual(output));
+}
diff --git a/autotests/roommodeltest.h b/autotests/roommodeltest.h
index bed679b..fb410c5 100644
--- a/autotests/roommodeltest.h
+++ b/autotests/roommodeltest.h
@@ -30,6 +30,8 @@ class RoomModelTest : public QObject
 public:
     explicit RoomModelTest(QObject *parent = nullptr);
     ~RoomModelTest() = default;
+private Q_SLOTS:
+    void shouldSerialized();
 };
 
 #endif // ROOMMODELTEST_H
diff --git a/src/room.cpp b/src/room.cpp
index bfe68dd..927a8a6 100644
--- a/src/room.cpp
+++ b/src/room.cpp
@@ -21,8 +21,36 @@
  */
 
 #include "room.h"
-
+#include <QDebug>
 Room::Room()
 {
 
 }
+
+bool Room::isEqual(const Room &other) const
+{
+    qDebug() << " id " << id  << " other " << other.id;
+    qDebug() << " type " << type  << " type " << other.type;
+    qDebug() << " name " << name  << " name " << other.name;
+    qDebug() << " mAnnouncement " << mAnnouncement  << " mAnnouncement " << other.mAnnouncement;
+    qDebug() << " userName " << userName  << " userName " << other.userName;
+    qDebug() << " userID " << userID  << " userID " << other.userID;
+    qDebug() << " topic " << topic  << " topic " << other.topic;
+    qDebug() << " mutedUsers " << mutedUsers  << " mutedUsers " << other.mutedUsers;
+    qDebug() << " jitsiTimeout " << jitsiTimeout  << " jitsiTimeout " << other.jitsiTimeout;
+    qDebug() << " ro " << ro  << " ro " << other.ro;
+    qDebug() << " unread " << unread  << " unread " << other.unread;
+    qDebug() << " selected " << selected  << " selected " << other.selected;
+    return (id == other.id) &&
+            (type == other.type) &&
+            (name == other.name) &&
+            (mAnnouncement == other.mAnnouncement) &&
+            (userName == other.userName) &&
+            (userID == other.userID) &&
+            (topic == other.topic) &&
+            (mutedUsers == other.mutedUsers) &&
+            (jitsiTimeout == other.jitsiTimeout) &&
+            (ro == other.ro) &&
+            (unread == other.unread) &&
+            (selected == other.selected);
+}
diff --git a/src/room.h b/src/room.h
index c6bc842..14c1a96 100644
--- a/src/room.h
+++ b/src/room.h
@@ -25,8 +25,9 @@
 #define ROOM_H
 
 #include <QString>
+#include "libruqola_private_export.h"
 
-class Room
+class LIBRUQOLACORE_TESTS_EXPORT Room
 {
 public:
     Room();
@@ -43,6 +44,9 @@ public:
         return name < other.name;
     }
 
+    //we can't use operator== as it tests only id. We need it for autotest
+    bool isEqual(const Room &other) const;
+
     /**
     * @brief Return room name
     *
diff --git a/src/roommodel.cpp b/src/roommodel.cpp
index 205a3ba..1850740 100644
--- a/src/roommodel.cpp
+++ b/src/roommodel.cpp
@@ -222,7 +222,8 @@ Room RoomModel::fromJSon(const QJsonObject &o)
     r.jitsiTimeout = o[QStringLiteral("jitsiTimeout")].toDouble();
     r.ro = o[QStringLiteral("ro")].toBool();
     r.unread = o[QStringLiteral("unread")].toInt(0);
-    r.mAnnouncement = o[QStringLiteral("announcement")].toInt(0);
+    r.mAnnouncement = o[QStringLiteral("announcement")].toString();
+    r.selected = o[QStringLiteral("selected")].toBool();
 
     return r;
 }
@@ -243,6 +244,7 @@ QByteArray RoomModel::serialize(const Room &r)
     o[QStringLiteral("ro")] = r.ro;
     o[QStringLiteral("unread")] = r.unread;
     o[QStringLiteral("announcement")] = r.mAnnouncement;
+    o[QStringLiteral("selected")] = r.selected;
 
     d.setObject(o);
     return d.toBinaryData();
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic