Branch 'mimeobject' - 2 commits - CMakeLists.txt kolabformat/kolabobject.i kolabformat/mimeobject.cpp kolabformat/mimeobject.h tests/formattest.cpp tests/mimeobjecttest.cpp tests/mimeobjecttest.h tests/testutils.h
Sofia Balicka
balicka at kolabsys.com
Fri Dec 14 22:39:25 CET 2012
CMakeLists.txt | 1 +
kolabformat/kolabobject.i | 2 ++
kolabformat/mimeobject.cpp | 39 +++++++++++++++++++++++++++++++++++++++
kolabformat/mimeobject.h | 27 +++++++++++++++++++++++++++
tests/formattest.cpp | 3 ++-
tests/mimeobjecttest.cpp | 32 ++++++++++++++++++++++++++++++++
tests/mimeobjecttest.h | 13 +++++++++++++
tests/testutils.h | 16 ++++++++++++++++
8 files changed, 132 insertions(+), 1 deletion(-)
New commits:
commit 9c1dc3ca7d5744df4bf501c75aac69ec22187404
Author: Sofia Balicka <balicka at kolabsys.com>
Date: Fri Dec 14 22:38:35 2012 +0100
added testcase
diff --git a/kolabformat/mimeobject.cpp b/kolabformat/mimeobject.cpp
index 1d588d1..681d40b 100644
--- a/kolabformat/mimeobject.cpp
+++ b/kolabformat/mimeobject.cpp
@@ -1,17 +1,39 @@
#include "mimeobject.h"
#include "conversion/kcalconversion.h"
#include "kolabformat/kolabobject.h"
+#include <QString>
+#include <iostream>
-Kolab::Event MIMEObject::readEvent(const std::string &s){
+namespace Kolab
+{
- KMime:Message::Ptr msg(new KMime::Message);
- msg.setContent(QByteArray(s.c_str()));
- msg.parse();
-
- KCalCore::Event::Ptr event = Kolab::KolabObjectReader(msg).getEvent();
+MIMEObject::MIMEObject()
+{
- return Kolab::Conversion::fromKCalCore(*event);
}
-Kolab::Event MIMEObject::writeEvent(const KMime::Message::Ptr &message){
+Event MIMEObject::readEvent(const std::string &s)
+{
+
+ KMime::Message::Ptr msg(new KMime::Message);
+ msg->setContent(QByteArray(s.c_str()));
+ msg->parse();
+
+ KCalCore::Event::Ptr event = KolabObjectReader(msg).getEvent();
+
+ return Conversion::fromKCalCore(*event);
+}
+
+std::string MIMEObject::writeEvent(const Event &event, Version version, const std::string &productId)
+{
+
+ KCalCore::Event::Ptr KEvent = Conversion::toKCalCore(event);
+
+ KMime::Message::Ptr msg = KolabObjectWriter().writeEvent(KEvent, version, QString::fromStdString(productId));
+ msg->assemble();
+
+ return msg->encodedContent().data();
+}
+
+}
diff --git a/kolabformat/mimeobject.h b/kolabformat/mimeobject.h
index 9a9474f..ac4bd97 100644
--- a/kolabformat/mimeobject.h
+++ b/kolabformat/mimeobject.h
@@ -8,17 +8,20 @@
#define KOLAB_EXPORT
#endif
-//#include <qstring.h>
#include <kolabformat.h>
+#include "kolabdefinitions.h"
+namespace Kolab
+{
+
class KOLAB_EXPORT MIMEObject
{
public:
explicit MIMEObject();
Kolab::Event readEvent(const std::string &s);
- std::string MIMEObject::writeEvent(const Todo &event, Version version, const std::string& productId);
+ std::string writeEvent(const Kolab::Event &event, Version version, const std::string& productId = std::string());
};
-
+}
#endif
diff --git a/tests/formattest.cpp b/tests/formattest.cpp
index 346c6e8..9e2613c 100644
--- a/tests/formattest.cpp
+++ b/tests/formattest.cpp
@@ -36,6 +36,7 @@
#include "kolabformat/errorhandler.h"
#include "kolabformat/kolabdefinitions.h"
+/*
void normalizeMimemessage(QString &content)
{
content.replace(QRegExp("\\bLibkolab-\\d.\\d.\\d\\b", Qt::CaseSensitive), "Libkolab-x.x.x");
@@ -49,7 +50,7 @@ void normalizeMimemessage(QString &content)
content.replace(QRegExp("\\bboundary=\"nextPart[^\\n]*", Qt::CaseSensitive), "boundary");
content.replace(QRegExp("Date[^\\n]*", Qt::CaseSensitive), "Date");
}
-
+*/
static bool compareMimeMessage( const KMime::Message::Ptr &msg, const KMime::Message::Ptr &expectedMsg )
{
// headers
diff --git a/tests/mimeobjecttest.cpp b/tests/mimeobjecttest.cpp
new file mode 100644
index 0000000..5aff4bb
--- /dev/null
+++ b/tests/mimeobjecttest.cpp
@@ -0,0 +1,32 @@
+#include <QTest>
+#include "mimeobjecttest.h"
+#include "kolabformat/kolabobject.h"
+#include "testutils.h"
+#include "kolabformat/mimeobject.h"
+#include <fstream>
+#include <sstream>
+#include <QString>
+
+void MIMEObjectTest::testEvent(){
+
+ Kolab::MIMEObject mimeobject;
+
+ std::ifstream t((TESTFILEDIR.toStdString()+"v3/event/simple.ics.mime").c_str());
+ std::stringstream buffer;
+ buffer << t.rdbuf();
+
+ Kolab::Event event = mimeobject.readEvent(buffer.str());
+
+ std::string message = mimeobject.writeEvent(event, Kolab::KolabV3);
+
+ QString qMessage = QString::fromStdString(message);
+ QString input = QString::fromStdString(buffer.str());
+
+ normalizeMimemessage(qMessage);
+ normalizeMimemessage(input);
+ QCOMPARE(input, qMessage);
+}
+
+QTEST_MAIN( MIMEObjectTest )
+
+#include "mimeobjecttest.moc"
diff --git a/tests/mimeobjecttest.h b/tests/mimeobjecttest.h
new file mode 100644
index 0000000..74619b9
--- /dev/null
+++ b/tests/mimeobjecttest.h
@@ -0,0 +1,13 @@
+#ifndef MIMEOBJECTTEST_H
+#define MIMEOBJECTTEST_H
+#include <QObject>
+
+class MIMEObjectTest: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void testEvent();
+};
+#endif // MIMEOBJECTTEST_H
+
diff --git a/tests/testutils.h b/tests/testutils.h
index e6bb15c..24f1db5 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -87,6 +87,22 @@ KMime::Message::Ptr readMimeFile( const QString &fileName, bool &ok)
return msg;
}
+
+void normalizeMimemessage(QString &content)
+{
+ content.replace(QRegExp("\\bLibkolab-\\d.\\d.\\d\\b", Qt::CaseSensitive), "Libkolab-x.x.x");
+ content.replace(QRegExp("\\bLibkolabxml-\\d.\\d.\\d\\b", Qt::CaseSensitive), "Libkolabxml-x.x.x");
+ content.replace(QRegExp("\\bLibkolab-\\d.\\d\\b", Qt::CaseSensitive), "Libkolab-x.x.x");
+ content.replace(QRegExp("\\bLibkolabxml-\\d.\\d\\b", Qt::CaseSensitive), "Libkolabxml-x.x.x");
+ content.replace(QRegExp("<uri>cid:*@kolab.resource.akonadi</uri>", Qt::CaseSensitive, QRegExp::Wildcard), "<uri>cid:id at kolab.resource.akonadi</uri>");
+ content.replace(QRegExp("<last-modification-date>*</last-modification-date>", Qt::CaseSensitive, QRegExp::Wildcard), "<last-modification-date></last-modification-date>");
+
+ content.replace(QRegExp("--nextPart\\S*", Qt::CaseSensitive), "--part");
+ content.replace(QRegExp("\\bboundary=\"nextPart[^\\n]*", Qt::CaseSensitive), "boundary");
+ content.replace(QRegExp("Date[^\\n]*", Qt::CaseSensitive), "Date");
+}
+
+
//Normalize incidences for comparison
void normalizeIncidence( KCalCore::Incidence::Ptr incidence)
{
commit d83437de791a4413725212b6f467b18ed0ff7fbb
Author: Sofia Balicka <balicka at kolabsys.com>
Date: Fri Dec 14 00:11:31 2012 +0100
started mimeobject
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5a459d3..6b6210d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -123,6 +123,7 @@ set(KOLAB_SRCS
kolabformat/formathelpers.cpp
kolabformat/errorhandler.cpp
kolabformat/v2helpers.cpp
+ kolabformat/mimeobject.cpp
mime/mimeutils.cpp
${CONVERSION_SRCS}
${kolabformatv2_SRCS}
diff --git a/kolabformat/kolabobject.i b/kolabformat/kolabobject.i
index 73c19be..6de018d 100644
--- a/kolabformat/kolabobject.i
+++ b/kolabformat/kolabobject.i
@@ -4,6 +4,7 @@
#include "../kolabformat/xmlobject.h"
#include "../kolabformat/kolabdefinitions.h"
+ #include "../kolabformat/mimeobject.h"
%}
%include "std_string.i"
@@ -14,3 +15,4 @@
%include "../kolabformat/xmlobject.h"
%include "../kolabformat/kolabdefinitions.h"
+%include "../kolabformat/mimeobject.h"
diff --git a/kolabformat/mimeobject.cpp b/kolabformat/mimeobject.cpp
new file mode 100644
index 0000000..1d588d1
--- /dev/null
+++ b/kolabformat/mimeobject.cpp
@@ -0,0 +1,17 @@
+#include "mimeobject.h"
+#include "conversion/kcalconversion.h"
+#include "kolabformat/kolabobject.h"
+
+Kolab::Event MIMEObject::readEvent(const std::string &s){
+
+ KMime:Message::Ptr msg(new KMime::Message);
+ msg.setContent(QByteArray(s.c_str()));
+ msg.parse();
+
+ KCalCore::Event::Ptr event = Kolab::KolabObjectReader(msg).getEvent();
+
+ return Kolab::Conversion::fromKCalCore(*event);
+}
+
+Kolab::Event MIMEObject::writeEvent(const KMime::Message::Ptr &message){
+
diff --git a/kolabformat/mimeobject.h b/kolabformat/mimeobject.h
new file mode 100644
index 0000000..9a9474f
--- /dev/null
+++ b/kolabformat/mimeobject.h
@@ -0,0 +1,24 @@
+#ifndef MIMEOBJECT_H
+#define MIMEOBJECT_H
+
+#ifndef SWIG
+#include "kolab_export.h"
+#else
+/* No export/import SWIG interface files */
+#define KOLAB_EXPORT
+#endif
+
+//#include <qstring.h>
+#include <kolabformat.h>
+
+
+class KOLAB_EXPORT MIMEObject
+{
+public:
+ explicit MIMEObject();
+
+ Kolab::Event readEvent(const std::string &s);
+ std::string MIMEObject::writeEvent(const Todo &event, Version version, const std::string& productId);
+};
+
+#endif
More information about the commits
mailing list