diff options
author | Kevin Wu Won <kevin.wu-won@nokia.com> | 2010-06-01 17:48:50 +1000 |
---|---|---|
committer | Kevin Wu Won <kevin.wu-won@nokia.com> | 2010-06-02 10:19:38 +1000 |
commit | 3d74e2d39af154d8cdf6bcf9b383defc72b2d70d (patch) | |
tree | 2245cb0139841029f43b2dd35510f7b2400673fa | |
parent | 2c53fda222b7989fab86a7b6080c41d801e1b3f2 (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.
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 |