summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Wu Won <kevin.wu-won@nokia.com>2010-06-01 17:48:50 +1000
committerKevin Wu Won <kevin.wu-won@nokia.com>2010-06-02 10:19:38 +1000
commit3d74e2d39af154d8cdf6bcf9b383defc72b2d70d (patch)
tree2245cb0139841029f43b2dd35510f7b2400673fa
parent2c53fda222b7989fab86a7b6080c41d801e1b3f2 (diff)
Added more unit tests for QVersitOrganizer{Importer,Exporter}
These tests operate on the detail/property level so should make it easy to implement support for new details/properties.
-rw-r--r--tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.cpp73
-rw-r--r--tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.h6
-rw-r--r--tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.cpp71
-rw-r--r--tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.h4
4 files changed, 153 insertions, 1 deletions
diff --git a/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.cpp b/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.cpp
index 9a460aebfa..3bd8a495bf 100644
--- a/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.cpp
+++ b/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.cpp
@@ -42,7 +42,11 @@
#include "tst_qversitorganizerexporter.h"
#include <QtTest/QtTest>
+QTM_USE_NAMESPACE
+
Q_DECLARE_METATYPE(QList<QOrganizerItem>);
+Q_DECLARE_METATYPE(QList<QOrganizerItemDetail>);
+Q_DECLARE_METATYPE(QList<QVersitProperty>);
void tst_QVersitOrganizerExporter::testExport()
{
@@ -92,4 +96,73 @@ void tst_QVersitOrganizerExporter::testExport_data()
QTest::newRow("sample event") << items << document;
}
+void tst_QVersitOrganizerExporter::testExportEventDetails()
+{
+ QFETCH(QList<QOrganizerItemDetail>, details);
+ QFETCH(QList<QVersitProperty>, expectedProperties);
+
+ QVersitOrganizerExporter exporter;
+ QOrganizerEvent item;
+ foreach (QOrganizerItemDetail detail, details) {
+ item.saveDetail(&detail);
+ }
+ QVERIFY(exporter.exportItems(QList<QOrganizerItem>() << item, QVersitDocument::ICalendar20Type));
+ QVERIFY(exporter.errors().isEmpty());
+ QVersitDocument document = exporter.document();
+ QList<QVersitDocument> subDocuments = document.subDocuments();
+ QCOMPARE(subDocuments.size(), 1);
+
+ foreach(const QVersitProperty& expectedProperty, expectedProperties) {
+ QVersitProperty actualProperty = findPropertyByName(subDocuments.first(), expectedProperty.name());
+ if (actualProperty != expectedProperty) {
+ qDebug() << "Actual:" << actualProperty;
+ qDebug() << "Expected:" << expectedProperty;
+ QCOMPARE(actualProperty, expectedProperty);
+ }
+ }
+}
+
+void tst_QVersitOrganizerExporter::testExportEventDetails_data()
+{
+ QTest::addColumn<QList<QOrganizerItemDetail> >("details");
+ QTest::addColumn<QList<QVersitProperty> >("expectedProperties");
+
+ {
+ QVersitProperty property;
+ property.setName(QLatin1String("SUMMARY"));
+ property.setValue(QLatin1String("jabberwocky"));
+ QOrganizerItemDisplayLabel displayLabel;
+ displayLabel.setLabel(QLatin1String("jabberwocky"));
+ QTest::newRow("one summary") << (QList<QOrganizerItemDetail>() << displayLabel)
+ << (QList<QVersitProperty>() << property);
+ }
+
+ {
+ QList<QVersitProperty> properties;
+ QVersitProperty dtstart;
+ dtstart.setName(QLatin1String("DTSTART"));
+ dtstart.setValue(QLatin1String("20100102T030405"));
+ properties << dtstart;
+ QVersitProperty dtend;
+ dtend.setName(QLatin1String("DTEND"));
+ dtend.setValue(QLatin1String("20100102T030406"));
+ properties << dtend;
+ QOrganizerItemEventTimeRange etr;
+ etr.setStartDateTime(QDateTime(QDate(2010, 1, 2), QTime(3, 4, 5)));
+ etr.setEndDateTime(QDateTime(QDate(2010, 1, 2), QTime(3, 4, 6)));
+ QTest::newRow("dtstart and dtend") << (QList<QOrganizerItemDetail>() << etr)
+ << properties;
+ }
+}
+
+QVersitProperty tst_QVersitOrganizerExporter::findPropertyByName(
+ const QVersitDocument &document, const QString &propertyName)
+{
+ foreach (const QVersitProperty& property, document.properties()) {
+ if (property.name() == propertyName)
+ return property;
+ }
+ return QVersitProperty();
+}
+
QTEST_MAIN(tst_QVersitOrganizerExporter)
diff --git a/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.h b/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.h
index 3e352b6084..41a782298d 100644
--- a/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.h
+++ b/tests/auto/qversitorganizerexporter/tst_qversitorganizerexporter.h
@@ -50,6 +50,7 @@
QTM_BEGIN_NAMESPACE
QTM_END_NAMESPACE
+
QTM_USE_NAMESPACE
class tst_QVersitOrganizerExporter : public QObject
@@ -59,6 +60,11 @@ class tst_QVersitOrganizerExporter : public QObject
private slots:
void testExport();
void testExport_data();
+
+ void testExportEventDetails();
+ void testExportEventDetails_data();
+
+ static QVersitProperty findPropertyByName(const QVersitDocument &document, const QString &propertyName);
};
#endif
diff --git a/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.cpp b/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.cpp
index fd56d6291b..785e717331 100644
--- a/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.cpp
+++ b/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.cpp
@@ -42,7 +42,10 @@
#include "tst_qversitorganizerimporter.h"
#include <QtTest/QtTest>
+QTM_USE_NAMESPACE
Q_DECLARE_METATYPE(QList<QOrganizerItem>);
+Q_DECLARE_METATYPE(QList<QOrganizerItemDetail>);
+Q_DECLARE_METATYPE(QList<QVersitProperty>);
void tst_QVersitOrganizerImporter::testImport()
{
@@ -95,4 +98,72 @@ void tst_QVersitOrganizerImporter::testImport_data()
QTest::newRow("sample event") << document << items;
}
+void tst_QVersitOrganizerImporter::testImportEventProperties()
+{
+ QFETCH(QList<QVersitProperty>, properties);
+ QFETCH(QList<QOrganizerItemDetail>, expectedDetails);
+
+ QVersitDocument document(QVersitDocument::ICalendar20Type);
+ document.setComponentType(QLatin1String("VCALENDAR"));
+ QVersitDocument nested(QVersitDocument::ICalendar20Type);
+ nested.setComponentType(QLatin1String("VEVENT"));
+ foreach (const QVersitProperty& property, properties) {
+ nested.addProperty(property);
+ }
+ document.addSubDocument(nested);
+
+ QVersitOrganizerImporter importer;
+ QVERIFY(importer.importDocument(document));
+ QVERIFY(importer.errors().isEmpty());
+ QList<QOrganizerItem> items = importer.items();
+ QCOMPARE(items.size(), 1);
+
+ foreach (const QOrganizerItemDetail& expectedDetail, expectedDetails) {
+ QOrganizerItemDetail actualDetail = items.first().detail(expectedDetail.definitionName());
+ if (actualDetail != expectedDetail) {
+ qDebug() << "Actual:" << actualDetail;
+ qDebug() << "Expected:" << expectedDetail;
+ QCOMPARE(actualDetail, expectedDetail);
+ }
+ }
+}
+
+void tst_QVersitOrganizerImporter::testImportEventProperties_data()
+{
+ QTest::addColumn<QList<QVersitProperty> >("properties");
+ QTest::addColumn<QList<QOrganizerItemDetail> >("expectedDetails");
+
+ {
+ QVersitProperty property;
+ property.setName(QLatin1String("SUMMARY"));
+ property.setValue(QLatin1String("jabberwocky"));
+ QOrganizerItemDisplayLabel displayLabel;
+ displayLabel.setLabel(QLatin1String("jabberwocky"));
+ QTest::newRow("one summary") << (QList<QVersitProperty>() << property)
+ << (QList<QOrganizerItemDetail>() << displayLabel);
+ }
+
+ {
+ QList<QVersitProperty> properties;
+ QVersitProperty dtstart;
+ dtstart.setName(QLatin1String("DTSTART"));
+ dtstart.setValue(QLatin1String("20100102T030405"));
+ properties << dtstart;
+ QVersitProperty dtend;
+ dtend.setName(QLatin1String("DTEND"));
+ dtend.setValue(QLatin1String("20100102T030406"));
+ properties << dtend;
+ QOrganizerItemEventTimeRange etr;
+ etr.setStartDateTime(QDateTime(QDate(2010, 1, 2), QTime(3, 4, 5)));
+ etr.setEndDateTime(QDateTime(QDate(2010, 1, 2), QTime(3, 4, 6)));
+ QTest::newRow("dtstart and dtend") << properties
+ << (QList<QOrganizerItemDetail>() << etr);
+
+ dtend.setValue(QLatin1String("20100102T235959"));
+ properties.prepend(dtend);
+ QTest::newRow("multiple dtstart and dtend") << properties
+ << (QList<QOrganizerItemDetail>() << etr); // last takes precedence
+ }
+}
+
QTEST_MAIN(tst_QVersitOrganizerImporter)
diff --git a/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.h b/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.h
index b66c8fc105..f0dd76b3fe 100644
--- a/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.h
+++ b/tests/auto/qversitorganizerimporter/tst_qversitorganizerimporter.h
@@ -50,7 +50,6 @@
QTM_BEGIN_NAMESPACE
QTM_END_NAMESPACE
-QTM_USE_NAMESPACE
class tst_QVersitOrganizerImporter : public QObject
{
@@ -59,6 +58,9 @@ class tst_QVersitOrganizerImporter : public QObject
private slots:
void testImport();
void testImport_data();
+
+ void testImportEventProperties();
+ void testImportEventProperties_data();
};
#endif