summaryrefslogtreecommitdiffstats
path: root/libkdepim/tests/testdistrlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libkdepim/tests/testdistrlist.cpp')
-rw-r--r--libkdepim/tests/testdistrlist.cpp332
1 files changed, 0 insertions, 332 deletions
diff --git a/libkdepim/tests/testdistrlist.cpp b/libkdepim/tests/testdistrlist.cpp
deleted file mode 100644
index f588f9a93..000000000
--- a/libkdepim/tests/testdistrlist.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 2004 David Faure <faure@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "testdistrlist.h"
-
-#include <distributionlist.h>
-using KPIM::DistributionList;
-
-#include <config.h>
-
-#include <kabc/stdaddressbook.h>
-#include <kurl.h>
-#include <kapplication.h>
-#include <kio/netaccess.h>
-#include <kio/job.h>
-#include <kdebug.h>
-#include <kcmdlineargs.h>
-
-#include <tqdir.h>
-#include <tqfileinfo.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <assert.h>
-
-int main(int argc, char *argv[])
-{
- // Use another directory than the real one, just to keep things clean
- // KDEHOME needs to be writable though, for a ksycoca database
- setenv( "KDEHOME", TQFile::encodeName( TQDir::homeDirPath() + "/.kde-testdistrlist" ), true );
- setenv( "KDE_FORK_SLAVES", "yes", true ); // simpler, for the final cleanup
-
- KApplication::disableAutoDcopRegistration();
- KCmdLineArgs::init(argc,argv,"testdistrlist", 0, 0, 0, 0);
- KApplication app( false, false );
-
- TestDistrList test;
- test.setup();
- test.runAll();
- test.cleanup();
- kdDebug() << "All tests OK." << endl;
- return 0;
-}
-
-void TestDistrList::setup()
-{
- // We need a std addressbook
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- KABC::StdAddressBook::setAutomaticSave( false );
-
- // and two contacts
- KABC::Addressee addr1;
- addr1.setName( "addr1" );
- addr1.setFormattedName( "addr1" );
- addr1.insertEmail( "addr1@kde.org", true );
- addr1.insertEmail( "addr1-alternate@kde.org" );
- ab->insertAddressee( addr1 );
- assert( addr1.emails().count() == 2 );
-
- KABC::Addressee addr2;
- addr2.setName( "addr2" );
- addr2.insertEmail( "addr2@kde.org", true );
- addr2.insertEmail( "addr2-alternate@kde.org" );
- ab->insertAddressee( addr2 );
- assert( addr2.emails().count() == 2 );
-
- assert( !ab->findByName( "addr1" ).isEmpty() );
- assert( !ab->findByName( "addr2" ).isEmpty() );
-}
-
-void TestDistrList::runAll()
-{
- testEmpty();
- testNewList();
- testInsertEntry();
- testRemoveEntry();
- testDuplicate();
- testDeleteList();
-}
-
-bool TestDistrList::check(const TQString& txt, TQString a, TQString b)
-{
- if (a.isEmpty())
- a = TQString();
- if (b.isEmpty())
- b = TQString();
- if (a == b) {
- kdDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'... " << "ok" << endl;
- }
- else {
- kdDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'... " << "KO !" << endl;
- cleanup();
- exit(1);
- }
- return true;
-}
-
-// taken from KMail
-#include <sys/types.h>
-#include <dirent.h>
-static bool removeDirAndContentsRecursively( const TQString & path )
-{
- kdDebug() << k_funcinfo << path << endl;
- bool success = true;
-
- TQDir d;
- d.setPath( path );
- d.setFilter( TQDir::Files | TQDir::Dirs | TQDir::Hidden );
-
- const TQFileInfoList *list = d.entryInfoList();
- TQFileInfoListIterator it( *list );
- TQFileInfo *fi;
-
- while ( (fi = it.current()) != 0 ) {
- if( fi->isDir() && !fi->isSymLink() ) {
- if ( fi->fileName() != "." && fi->fileName() != ".." )
- success = success && removeDirAndContentsRecursively( fi->absFilePath() );
- } else {
- success = success && d.remove( fi->absFilePath() );
- }
- ++it;
- }
-
- if ( success ) {
- success = success && d.rmdir( path ); // nuke ourselves, we should be empty now
- }
- return success;
-}
-
-void TestDistrList::cleanup()
-{
- kdDebug() << k_funcinfo << endl;
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- ab->clear();
- KABC::StdAddressBook::close();
-
- TQString kdehome = TQFile::decodeName( getenv("KDEHOME") );
- KURL urlkdehome; urlkdehome.setPath( kdehome );
- // don't use KIO::NetAccess here since it needs X
- // KIO::NetAccess::del( urlkdehome, 0 )i;
- assert( removeDirAndContentsRecursively( kdehome ) );
-}
-
-void TestDistrList::testEmpty()
-{
- kdDebug() << k_funcinfo << endl;
- DistributionList dl;
- assert( dl.isEmpty() );
-}
-
-void TestDistrList::testNewList()
-{
- kdDebug() << k_funcinfo << endl;
- DistributionList dl;
- dl.setName( "foo" );
- assert( !dl.isEmpty() );
- check( "name set", dl.formattedName(), "foo" );
- assert( DistributionList::isDistributionList( dl ) );
-
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- ab->insertAddressee( dl );
-#if 0 // can't do that until we have KABC::AddressBook::findByFormattedName, or we use setName()
- KABC::Addressee::List addrList = ab->findByName( "foo" );
- assert( addrList.count() == 1 );
- KABC::Addressee addr = addrList.first();
- assert( !addr.isEmpty() );
- check( "correct name", addr.name(), "foo" );
- assert( DistributionList::isDistributionList( addr ) );
-#else
- KABC::Addressee addr = dl;
-#endif
-
- DistributionList dl2 = DistributionList::findByName( ab, "foo" );
- assert( !dl2.isEmpty() );
- check( "correct name", dl2.formattedName(), "foo" );
- assert( DistributionList::isDistributionList( dl2 ) );
-
- // Test the ctor that takes an addressee
- DistributionList dl3( addr );
- assert( !dl3.isEmpty() );
- assert( DistributionList::isDistributionList( dl3 ) );
- check( "correct name", dl3.formattedName(), "foo" );
-}
-
-void TestDistrList::testInsertEntry()
-{
- kdDebug() << k_funcinfo << endl;
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- DistributionList dl = DistributionList::findByName( ab, "foo" );
- assert( !dl.isEmpty() );
-
-#if 0 // the usual method
- KABC::Addressee addr1 = ab->findByName( "addr1" ).first();
- assert( !addr1.isEmpty() );
- dl.insertEntry( addr1 );
-#else // the kolab-resource method
- dl.insertEntry( "addr1" );
-#endif
-
- KABC::Addressee addr2 = ab->findByName( "addr2" ).first();
- assert( !addr2.isEmpty() );
- dl.insertEntry( addr2, "addr2-alternate@kde.org" );
-
- // Try inserting it again, should do nothing
- dl.insertEntry( addr2, "addr2-alternate@kde.org" );
-
- // And insert it with another email address
- dl.insertEntry( addr2, "addr2@kde.org" );
-
- // Test entries()
- DistributionList::Entry::List entries = dl.entries( ab );
- check( "entries count", TQString::number( entries.count() ), "3" );
- check( "first entry", entries[0].addressee.name(), "addr1" );
- check( "first entry", entries[0].email, TQString() );
- check( "second entry", entries[1].addressee.name(), "addr2" );
- check( "second entry", entries[1].email, "addr2-alternate@kde.org" );
- check( "third entry", entries[2].addressee.name(), "addr2" );
- check( "third entry", entries[2].email, "addr2@kde.org" );
-
- // Test emails()
- TQStringList emails = dl.emails( ab );
- kdDebug() << emails << endl;
- assert( emails.count() == 3 );
- check( "first email", emails[0], "addr1 <addr1@kde.org>" );
- check( "second email", emails[1], "addr2 <addr2-alternate@kde.org>" );
- check( "third email", emails[2], "addr2 <addr2@kde.org>" );
-
- // Commit changes to the addressbook !!
- ab->insertAddressee( dl );
-}
-
-void TestDistrList::testRemoveEntry()
-{
- kdDebug() << k_funcinfo << endl;
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- DistributionList dl = DistributionList::findByName( ab, "foo" );
- assert( !dl.isEmpty() );
- DistributionList::Entry::List entries = dl.entries( ab );
- check( "entries count before removeEntry", TQString::number( entries.count() ), "3" );
-
- // Removing an empty entry shouldn't do anything
- dl.removeEntry( KABC::Addressee() );
- check( "entries count after removing empty entry", TQString::number( dl.entries(ab).count() ), "3" );
-
- KABC::Addressee addr1 = ab->findByName( "addr1" ).first();
- assert( !addr1.isEmpty() );
- // Removing an entry with the wrong email passed, shouldn't do anything
- dl.removeEntry( addr1, "foo@foobar.com" );
- check( "entries count after removing entry with invalid email", TQString::number( dl.entries(ab).count() ), "3" );
-
- // Now remove entry correctly
- dl.removeEntry( addr1 );
- check( "removeEntry(addr1) worked", TQString::number( dl.entries(ab).count() ), "2" );
- TQStringList emails = dl.emails( ab );
- assert( emails.count() == 2 );
- check( "first email", emails[0], "addr2 <addr2-alternate@kde.org>" );
-
- // Now move on to addr2. First remove with no or a wrong email (nothing should happen)
- KABC::Addressee addr2 = ab->findByName( "addr2" ).first();
- assert( !addr2.isEmpty() );
- dl.removeEntry( addr2 );
- check( "entries count after removing entry with no email", TQString::number( dl.entries(ab).count() ), "2" );
-
- // Now remove addr2 correctly
- dl.removeEntry( addr2, "addr2@kde.org" );
- check( "entries count after removing addr2", TQString::number( dl.entries(ab).count() ), "1" );
- dl.removeEntry( addr2, "addr2-alternate@kde.org" );
- check( "entries count after removing alternate addr2", TQString::number( dl.entries(ab).count() ), "0" );
- assert( dl.entries(ab).isEmpty() );
- assert( dl.emails(ab).isEmpty() );
- assert( DistributionList::isDistributionList( dl ) );
-
- ab->insertAddressee( dl );
-}
-
-void TestDistrList::testDuplicate()
-{
- kdDebug() << k_funcinfo << endl;
- // This is a special test for the case where we have a contact and a distr list with the same name
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- KABC::Addressee addr;
- addr.setName( "foo" );
- addr.insertEmail( "foo@kde.org", true );
- ab->insertAddressee( addr );
-
-#if 0 // we need a findByFormattedName
- KABC::Addressee::List addrList = ab->findByName( "foo" );
- assert( addrList.count() == 2 );
-
- bool a = DistributionList::isDistributionList( addrList.first() );
- bool b = DistributionList::isDistributionList( addrList.last() );
- // one is a distr list, but not both
- assert( a || b );
- //
- assert( ! ( a && b ) );
-#endif
-
- DistributionList dl = DistributionList::findByName( ab, "foo" );
- assert( !dl.isEmpty() );
- assert( DistributionList::isDistributionList( dl ) );
- assert( dl.formattedName() == "foo" );
-}
-
-void TestDistrList::testDeleteList()
-{
- kdDebug() << k_funcinfo << endl;
-
- KABC::AddressBook *ab = KABC::StdAddressBook::self();
- DistributionList dl = DistributionList::findByName( ab, "foo" );
- assert( !dl.isEmpty() );
- ab->removeAddressee( dl );
- dl = DistributionList::findByName( ab, "foo" );
- assert( dl.isEmpty() );
-}
-
-#include "testdistrlist.moc"