2 commits - tests/formattest.cpp tests/testutils.h tests/upgradetest.cpp

Christian Mollekopf mollekopf at kolabsys.com
Tue May 1 11:23:29 CEST 2012


 tests/formattest.cpp  |   82 +-----------------------------------------
 tests/testutils.h     |   96 ++++++++++++++++++++++++++++++++++++++++++++------
 tests/upgradetest.cpp |   32 +++++++++-------
 3 files changed, 106 insertions(+), 104 deletions(-)

New commits:
commit 33bfbb161979a9ab339295728cdd09e0ce81535a
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Apr 27 20:19:22 2012 +0200

    "fixed" another couple of tests but something with allDay() is fishy...

diff --git a/tests/formattest.cpp b/tests/formattest.cpp
index 9bbd085..335aeb2 100644
--- a/tests/formattest.cpp
+++ b/tests/formattest.cpp
@@ -140,12 +140,7 @@ void FormatTest::testIncidence()
     // fix up the converted incidence for comparisson
     normalizeIncidence(convertedIncidence);
     normalizeIncidence(realIncidence);
-    if ( type == Kolab::TodoObject ) {
-        KCalCore::Todo::Ptr todo = realIncidence.dynamicCast<KCalCore::Todo>();
-        QVERIFY(todo);
-        if ( !todo->hasDueDate() && !todo->hasStartDate() )
-            convertedIncidence->setAllDay( realIncidence->allDay() ); // all day has no meaning if there are no start and due dates but may differ nevertheless
-    }
+
     // recurrence objects are created on demand, but KCalCore::Incidence::operator==() doesn't take that into account
     // so make sure both incidences have one
     realIncidence->recurrence();
@@ -162,19 +157,7 @@ void FormatTest::testIncidence()
     
     //Write
     Kolab::overrideTimestamp(Kolab::cDateTime(2012, 5, 5, 5,5,5, true));
-    KMime::Message::Ptr convertedMime;
-    switch ( realIncidence->type() ) {
-        case KCalCore::IncidenceBase::TypeEvent: 
-            convertedMime = Kolab::KolabObjectWriter::writeEvent(realIncidence.dynamicCast<KCalCore::Event>(), version);
-            break;
-        case KCalCore::IncidenceBase::TypeTodo: 
-            convertedMime = Kolab::KolabObjectWriter::writeTodo(realIncidence.dynamicCast<KCalCore::Todo>(), version);
-            break;
-        case KCalCore::IncidenceBase::TypeJournal:
-            convertedMime = Kolab::KolabObjectWriter::writeJournal(realIncidence.dynamicCast<KCalCore::Journal>(), version);
-            break;
-        default: QFAIL( "incidence type not supported" );
-    }
+    KMime::Message::Ptr convertedMime = Kolab::KolabObjectWriter::writeIncidence(realIncidence, version);
         
     if ( !compareMimeMessage( convertedMime, msg )) {
         showDiff(msg->encodedContent(), convertedMime->encodedContent());
diff --git a/tests/testutils.h b/tests/testutils.h
index 5257fff..82c4541 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -90,6 +90,14 @@ static void normalizeIncidence( KCalCore::Incidence::Ptr incidence)
     foreach(KCalCore::Attendee::Ptr attendee, incidence->attendees()) {
         attendee->setUid(QString());
     }
+
+    //FIXME even if hasDueDate can differ, it shouldn't because it breaks equality. Check why they differ in the first place.
+    if ( incidence->type() == KCalCore::IncidenceBase::TypeTodo ) {
+        KCalCore::Todo::Ptr todo = incidence.dynamicCast<KCalCore::Todo>();
+        Q_ASSERT(todo.data());
+        if ( !todo->hasDueDate() && !todo->hasStartDate() )
+            todo->setAllDay( false ); // all day has no meaning if there are no start and due dates but may differ nevertheless
+    }
 }
 
 template <template <typename> class Op, typename T>
diff --git a/tests/upgradetest.cpp b/tests/upgradetest.cpp
index 022a8b4..5b06b39 100644
--- a/tests/upgradetest.cpp
+++ b/tests/upgradetest.cpp
@@ -40,10 +40,10 @@ void UpgradeTest::testIncidence_data()
     QTest::newRow( "v2eventHorde" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/horde.ics.mime");
     
     //Still broken, although it seems that rather the event comparison is implemented wrong (not using equals)
-//     QTest::newRow( "v2taskSimple" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics.mime");
-//     QTest::newRow( "v2taskComplex" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/complex.ics.mime");
-//     QTest::newRow( "v2taskPrio1" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest1.ics.mime");
-//     QTest::newRow( "v2taskPrio2" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest2.ics.mime");
+    QTest::newRow( "v2taskSimple" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics.mime");
+    QTest::newRow( "v2taskComplex" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/complex.ics.mime");
+    QTest::newRow( "v2taskPrio1" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest1.ics.mime");
+    QTest::newRow( "v2taskPrio2" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest2.ics.mime");
     
     QTest::newRow( "v2journalSimple" ) << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v2/journal/simple.ics.mime");
     QTest::newRow( "v2journalComplex" ) << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v2/journal/complex.ics.mime");
@@ -69,19 +69,7 @@ void UpgradeTest::testIncidence()
     
     //write KCalCore V3
     Kolab::overrideTimestamp(Kolab::cDateTime(2012, 5, 5, 5,5,5, true));
-    KMime::Message::Ptr v3message;
-    switch ( v2result->type() ) {
-        case KCalCore::IncidenceBase::TypeEvent: 
-            v3message = Kolab::KolabObjectWriter::writeEvent(v2result.dynamicCast<KCalCore::Event>(), Kolab::KolabV3);
-            break;
-        case KCalCore::IncidenceBase::TypeTodo: 
-            v3message = Kolab::KolabObjectWriter::writeTodo(v2result.dynamicCast<KCalCore::Todo>(), Kolab::KolabV3);
-            break;
-        case KCalCore::IncidenceBase::TypeJournal:
-            v3message = Kolab::KolabObjectWriter::writeJournal(v2result.dynamicCast<KCalCore::Journal>(), Kolab::KolabV3);
-            break;
-        default: QFAIL( "incidence type not supported" );
-    }
+    KMime::Message::Ptr v3message = Kolab::KolabObjectWriter::writeIncidence(v2result, Kolab::KolabV3);
     QVERIFY(Kolab::error() == Kolab::NoError);
 //     kDebug() << v3message->encodedContent();
     //load KCalCore V3
@@ -106,6 +94,22 @@ void UpgradeTest::testIncidence()
     QVERIFY(!v3.isEmpty());
     QCOMPARE(v2, v3);
     kDebug() <<"--------------------------------------------------------";
+
+//     if (v2result->type() == KCalCore::IncidenceBase::TypeTodo) {
+//         KCalCore::Todo::Ptr t1 = v2result.dynamicCast<KCalCore::Todo>();
+//         KCalCore::Todo::Ptr t2 = v3result.dynamicCast<KCalCore::Todo>();
+//         QCOMPARE(t1->percentComplete(), t2->percentComplete());
+//         QCOMPARE(t1->priority(), t2->priority());
+//         QCOMPARE(t1->uid(), t2->uid());
+//         QCOMPARE(t1->dtStart(), t2->dtStart());
+//         QCOMPARE(t1->dtDue(), t2->dtDue());
+//         QCOMPARE(*t1->organizer().data(), *t2->organizer().data());
+//         QCOMPARE(t1->uid(), t2->uid());
+//         QCOMPARE(t1->allDay(), t2->allDay());
+//         QCOMPARE(t1->duration(), t2->duration());
+//         QCOMPARE(t1->hasDuration(), t2->hasDuration());
+//         qDebug() << "V2: " << v2;
+//     }
     //Test comparator
     QCOMPARE(*v2result, *v3result);
 }


commit 2b96555080014f919b1e639f9d676b6da3d9f892
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Fri Apr 27 17:43:34 2012 +0200

    make upgradetest pass

diff --git a/tests/formattest.cpp b/tests/formattest.cpp
index f1c7527..9bbd085 100644
--- a/tests/formattest.cpp
+++ b/tests/formattest.cpp
@@ -83,67 +83,6 @@ static bool compareMimeMessage( const KMime::Message::Ptr &msg, const KMime::Mes
     return true;
 }
 
-template <template <typename> class Op, typename T>
-static bool LexicographicalCompare( const T &_x, const T &_y )
-{
-    T x( _x );
-    x.setId( QString() );
-    T y( _y );
-    y.setId( QString() );
-    Op<QString> op;
-    return op( x.toString(), y.toString() );
-}
-
-static bool normalizePhoneNumbers( KABC::Addressee &addressee, KABC::Addressee &refAddressee )
-{
-    KABC::PhoneNumber::List phoneNumbers = addressee.phoneNumbers();
-    KABC::PhoneNumber::List refPhoneNumbers = refAddressee.phoneNumbers();
-    if ( phoneNumbers.size() != refPhoneNumbers.size() )
-        return false;
-    std::sort( phoneNumbers.begin(), phoneNumbers.end(), LexicographicalCompare<std::less, KABC::PhoneNumber> );
-    std::sort( refPhoneNumbers.begin(), refPhoneNumbers.end(), LexicographicalCompare<std::less, KABC::PhoneNumber> );
-    
-    for ( int i = 0; i < phoneNumbers.size(); ++i ) {
-        KABC::PhoneNumber phoneNumber = phoneNumbers.at( i );
-        const KABC::PhoneNumber refPhoneNumber = refPhoneNumbers.at( i );
-        KCOMPARE( LexicographicalCompare<std::equal_to>( phoneNumber, refPhoneNumber ), true );
-        addressee.removePhoneNumber( phoneNumber );
-        phoneNumber.setId( refPhoneNumber.id() );
-        addressee.insertPhoneNumber( phoneNumber );
-        //Make sure that both have the same sorted order
-        refAddressee.removePhoneNumber( refPhoneNumber );
-        refAddressee.insertPhoneNumber( refPhoneNumber );
-    }
-//     for ( int i = 0; i < phoneNumbers.size(); ++i ) {
-//         kDebug() << "--------------------------------------";
-//         kDebug() << addressee.phoneNumbers().at(i).toString();
-//         kDebug() << refAddressee.phoneNumbers().at(i).toString();
-//     }
-    
-    return true;
-}
-
-static bool normalizeAddresses( KABC::Addressee &addressee, const KABC::Addressee &refAddressee )
-{
-    KABC::Address::List addresses = addressee.addresses();
-    KABC::Address::List refAddresses = refAddressee.addresses();
-    if ( addresses.size() != refAddresses.size() )
-        return false;
-    std::sort( addresses.begin(), addresses.end(), LexicographicalCompare<std::less, KABC::Address> );
-    std::sort( refAddresses.begin(), refAddresses.end(), LexicographicalCompare<std::less, KABC::Address> );
-    
-    for ( int i = 0; i < addresses.size(); ++i ) {
-        KABC::Address address = addresses.at( i );
-        const KABC::Address refAddress = refAddresses.at( i );
-        KCOMPARE( LexicographicalCompare<std::equal_to>( address, refAddress ), true );
-        addressee.removeAddress( address );
-        address.setId( refAddress.id() );
-        addressee.insertAddress( address );
-    }
-    
-    return true;
-}
-
 
 void FormatTest::testIncidence_data()
 {
diff --git a/tests/testutils.h b/tests/testutils.h
index ae3dd34..5257fff 100644
--- a/tests/testutils.h
+++ b/tests/testutils.h
@@ -31,6 +31,17 @@
 Q_DECLARE_METATYPE(Kolab::ObjectType);
 Q_DECLARE_METATYPE(Kolab::Version);
 
+#define KCOMPARE(actual, expected) \
+do {\
+    if ( !(actual == expected) ) { \
+        qDebug() << __FILE__ << ':' << __LINE__ << "Actual: " #actual ": " << actual << "\nExpceted: " #expected ": " << expected; \
+        return false; \
+    } \
+    } while (0)
+
+
+#endif
+
 void showDiff(const QString &expected, const QString &converted)
 {
     if (expected.isEmpty() || converted.isEmpty()) {
@@ -81,6 +92,67 @@ static void normalizeIncidence( KCalCore::Incidence::Ptr incidence)
     }
 }
 
+template <template <typename> class Op, typename T>
+static bool LexicographicalCompare( const T &_x, const T &_y )
+{
+    T x( _x );
+    x.setId( QString() );
+    T y( _y );
+    y.setId( QString() );
+    Op<QString> op;
+    return op( x.toString(), y.toString() );
+}
+
+bool normalizePhoneNumbers( KABC::Addressee &addressee, KABC::Addressee &refAddressee )
+{
+    KABC::PhoneNumber::List phoneNumbers = addressee.phoneNumbers();
+    KABC::PhoneNumber::List refPhoneNumbers = refAddressee.phoneNumbers();
+    if ( phoneNumbers.size() != refPhoneNumbers.size() )
+        return false;
+    std::sort( phoneNumbers.begin(), phoneNumbers.end(), LexicographicalCompare<std::less, KABC::PhoneNumber> );
+    std::sort( refPhoneNumbers.begin(), refPhoneNumbers.end(), LexicographicalCompare<std::less, KABC::PhoneNumber> );
+
+    for ( int i = 0; i < phoneNumbers.size(); ++i ) {
+        KABC::PhoneNumber phoneNumber = phoneNumbers.at( i );
+        const KABC::PhoneNumber refPhoneNumber = refPhoneNumbers.at( i );
+        KCOMPARE( LexicographicalCompare<std::equal_to>( phoneNumber, refPhoneNumber ), true );
+        addressee.removePhoneNumber( phoneNumber );
+        phoneNumber.setId( refPhoneNumber.id() );
+        addressee.insertPhoneNumber( phoneNumber );
+        //Make sure that both have the same sorted order
+        refAddressee.removePhoneNumber( refPhoneNumber );
+        refAddressee.insertPhoneNumber( refPhoneNumber );
+    }
+//     for ( int i = 0; i < phoneNumbers.size(); ++i ) {
+//         kDebug() << "--------------------------------------";
+//         kDebug() << addressee.phoneNumbers().at(i).toString();
+//         kDebug() << refAddressee.phoneNumbers().at(i).toString();
+//     }
+
+    return true;
+}
+
+bool normalizeAddresses( KABC::Addressee &addressee, const KABC::Addressee &refAddressee )
+{
+    KABC::Address::List addresses = addressee.addresses();
+    KABC::Address::List refAddresses = refAddressee.addresses();
+    if ( addresses.size() != refAddresses.size() )
+        return false;
+    std::sort( addresses.begin(), addresses.end(), LexicographicalCompare<std::less, KABC::Address> );
+    std::sort( refAddresses.begin(), refAddresses.end(), LexicographicalCompare<std::less, KABC::Address> );
+
+    for ( int i = 0; i < addresses.size(); ++i ) {
+        KABC::Address address = addresses.at( i );
+        const KABC::Address refAddress = refAddresses.at( i );
+        KCOMPARE( LexicographicalCompare<std::equal_to>( address, refAddress ), true );
+        addressee.removeAddress( address );
+        address.setId( refAddress.id() );
+        addressee.insertAddress( address );
+    }
+
+    return true;
+}
+
 void normalizeContact(KABC::Addressee &addressee)
 {
     KABC::Address::List addresses = addressee.addresses();
@@ -93,16 +165,10 @@ void normalizeContact(KABC::Addressee &addressee)
     addressee.setSound(KABC::Sound()); //Sound is not supported
     
     addressee.removeCustom("KOLAB", "CreationDate"); //The creation date is no longer existing
-    
-}
-
-#define KCOMPARE(actual, expected) \
-do {\
-    if ( !(actual == expected) ) { \
-        qDebug() << __FILE__ << ':' << __LINE__ << "Actual: " #actual ": " << actual << "\nExpceted: " #expected ": " << expected; \
-        return false; \
-    } \
-    } while (0)
 
+    //Attachment names are no longer required because we identify the parts by cid and no longer by name
+    addressee.removeCustom("KOLAB", "LogoAttachmentName");
+    addressee.removeCustom("KOLAB", "PictureAttachmentName");
+    addressee.removeCustom("KOLAB", "SoundAttachmentName");
     
-#endif
\ No newline at end of file
+}
diff --git a/tests/upgradetest.cpp b/tests/upgradetest.cpp
index 7e25642..022a8b4 100644
--- a/tests/upgradetest.cpp
+++ b/tests/upgradetest.cpp
@@ -40,10 +40,10 @@ void UpgradeTest::testIncidence_data()
     QTest::newRow( "v2eventHorde" ) << Kolab::EventObject << TESTFILEDIR+QString::fromLatin1("v2/event/horde.ics.mime");
     
     //Still broken, although it seems that rather the event comparison is implemented wrong (not using equals)
-    QTest::newRow( "v2taskSimple" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics.mime");
-    QTest::newRow( "v2taskComplex" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/complex.ics.mime");
-    QTest::newRow( "v2taskPrio1" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest1.ics.mime");
-    QTest::newRow( "v2taskPrio2" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest2.ics.mime");
+//     QTest::newRow( "v2taskSimple" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/simple.ics.mime");
+//     QTest::newRow( "v2taskComplex" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/complex.ics.mime");
+//     QTest::newRow( "v2taskPrio1" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest1.ics.mime");
+//     QTest::newRow( "v2taskPrio2" ) << Kolab::TodoObject << TESTFILEDIR+QString::fromLatin1("v2/task/prioritytest2.ics.mime");
     
     QTest::newRow( "v2journalSimple" ) << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v2/journal/simple.ics.mime");
     QTest::newRow( "v2journalComplex" ) << Kolab::JournalObject << TESTFILEDIR+QString::fromLatin1("v2/journal/complex.ics.mime");
@@ -155,6 +155,8 @@ void UpgradeTest::testContact()
     QVERIFY(!v3result.isEmpty());
     
     normalizeContact(v2Addressee);
+    QVERIFY( normalizePhoneNumbers( v3result, v2Addressee ) ); // phone number ids are random
+    QVERIFY( normalizeAddresses( v3result, v2Addressee ) ); // same here
     
     KABC::VCardConverter converter;
     if ( v2Addressee != v3result ) {





More information about the commits mailing list