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