diff options
Diffstat (limited to 'kio/tests/ksycocatest.cpp')
-rw-r--r-- | kio/tests/ksycocatest.cpp | 360 |
1 files changed, 360 insertions, 0 deletions
diff --git a/kio/tests/ksycocatest.cpp b/kio/tests/ksycocatest.cpp new file mode 100644 index 000000000..fe2c22d94 --- /dev/null +++ b/kio/tests/ksycocatest.cpp @@ -0,0 +1,360 @@ +/* + * Copyright (C) 2002, 2003 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 <kdebug.h> +#include <kuserprofile.h> +#include <ktrader.h> +#include <kservice.h> +#include <kmimetype.h> +#include <assert.h> +#include <kstandarddirs.h> +#include <kservicegroup.h> +#include <kimageio.h> +#include <kprotocolinfo.h> +#include <kiconloader.h> + +#include <kapplication.h> + +#include <stdio.h> +#include <stdlib.h> + +bool check(QString txt, QString a, QString b) +{ + if (a.isEmpty()) + a = QString::null; + if (b.isEmpty()) + b = QString::null; + if (a == b) { + kdDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'... " << "ok" << endl; + } + else { + kdDebug() << txt << " : checking '" << a << "' against expected value '" << b << "'... " << "KO !" << endl +; + exit(1); + } + return true; +} + +void debug(QString txt) +{ + fprintf(stderr, "%s\n", txt.ascii()); +} + +void debug(const char *txt) +{ + fprintf(stderr, "%s\n", txt); +} +void debug(const char *format, const char *txt) +{ + fprintf(stderr, format, txt); + fprintf(stderr, "\n"); +} + +int main(int argc, char *argv[]) +{ + KApplication k(argc,argv,"whatever",false/*noGUI*/); // KMessageBox needs KApp for makeStdCaption + + QCString instname = "kword"; + QString desktopPath = QString::fromLatin1( "Office/%1.desktop" ).arg( instname ); + qDebug( "Looking for %s", desktopPath.latin1() ); + KService::Ptr service = KService::serviceByDesktopPath( desktopPath ); + if ( service ) + qDebug( "found: %s", service->desktopEntryPath().latin1() ); + else + qDebug( "not found" ); + + qDebug( "Looking for desktop name = %s", instname.data() ); + service = KService::serviceByDesktopName( instname ); + if ( service ) + qDebug( "found: %s", service->desktopEntryPath().latin1() ); + else + qDebug( "not found" ); + + debug("Trying to look for text/plain"); + KMimeType::Ptr s1 = KMimeType::mimeType("text/plain"); + if ( s1 ) + { + debug("Found it !"); + debug(QString("Comment is %1").arg(s1->comment(KURL(),false))); + } + else + { + debug("Not found !"); + exit(1); + } + + debug("Trying to look for application/x-zerosize"); + KMimeType::Ptr s0 = KMimeType::mimeType("application/x-zerosize"); + if ( s0 ) + { + debug("Found it !"); + debug(QString("Comment is %1").arg(s0->comment(KURL(),false))); + } + else + { + debug("Not found !"); + exit(1); + } + + debug("Trying to look for Desktop Pager"); + KService::Ptr se = KService::serviceByName("Desktop Pager"); + if ( se ) + { + debug("Found it !"); + debug(QString("Comment is %1").arg(se->comment())); + } + else + { + debug("Not found !"); + } + + debug("Trying to look for kpager"); + se = KService::serviceByDesktopName("kpager"); + if ( se ) + { + debug("Found it !"); + debug(QString("Comment is %1").arg(se->comment())); + QVariant qv = se->property("DocPath"); + debug(QString("Property type is %1").arg(qv.typeName())); + debug(QString("Property value is %1").arg(qv.toString())); + } + else + { + debug("Not found !"); + } + + debug("Trying to look for System/kpager.desktop"); + se = KService::serviceByDesktopPath("System/kpager.desktop"); + if ( se ) + { + debug("Found it !"); + debug(QString("Comment is %1").arg(se->comment())); + } + else + { + debug("Not found !"); + } + + debug("Trying to look for System/fake-entry.desktop"); + se = KService::serviceByDesktopPath("System/fake-entry.desktop"); + if ( se ) + { + debug("Found it !"); + debug(QString("Comment is %1").arg(se->comment())); + } + else + { + debug("Not found !"); + } + +#if 1 + debug("Querying userprofile for services associated with text/plain"); + KServiceTypeProfile::OfferList offers = KServiceTypeProfile::offers("text/plain"); + debug(QString("got %1 offers").arg(offers.count())); + KServiceTypeProfile::OfferList::Iterator it = offers.begin(); + for ( ; it != offers.end() ; it++ ) + { + debug((*it).service()->name()); + } + + debug("Querying userprofile for services associated with KOfficeFilter"); + offers = KServiceTypeProfile::offers("KOfficeFilter"); + debug(QString("got %1 offers").arg(offers.count())); + it = offers.begin(); + for ( ; it != offers.end() ; it++ ) + { + debug((*it).service()->name()); + } + + debug("Querying trader for Konqueror/Plugin"); + KTrader::OfferList traderoffers = KTrader::self()->query("Konqueror/Plugin"); + debug(QString("got %1 offers").arg(traderoffers.count())); + KTrader::OfferList::Iterator trit = traderoffers.begin(); + for ( ; trit != traderoffers.end() ; trit++ ) + { + debug((*trit)->name()); + } +#endif + + + // + debug("\nTrying findByURL for $KDEDIR/bin/kdesktop"); + KMimeType::Ptr mf = KMimeType::findByURL( KStandardDirs::findExe( "kdesktop" ), 0, + true, false ); + assert( mf ); + check( "A binary's mimetype", mf->name(), "application/x-executable" ); + + // + debug("\nTrying findByURL for folder_home.png"); + QString fh; + (void)k.iconLoader()->loadIcon("folder_home.png",KIcon::Desktop,0,KIcon::DefaultState,&fh); + mf = KMimeType::findByURL( fh, 0, true, false ); + assert( mf ); + check( "A PNG's mimetype", mf->name(), "image/png" ); + + // + //debug("\nTrying findByURL for Makefile.am"); + //mf = KMimeType::findByURL( KURL("/tmp/Makefile.am"), 0, true, false ); + //assert( mf ); + //debug(QString("Name is %1").arg(mf->name())); + //debug(QString("Comment is %1").arg(mf->comment(KURL(),false))); + + debug("\nTrying findByURL for man:/ls"); + mf = KMimeType::findByURL( KURL("man:/ls") ); + assert( mf ); + check( "man:/ls", mf->name(), "text/html" ); + check( "man:/ls/", mf->name(), "text/html" ); + + mf = KMimeType::findByURL( KURL("http://foo/bar.png") ); + check( "HTTP URL", mf->name(), "application/octet-stream" ); // HTTP can't know before downloading + +#if 1 + KMimeType::List mtl; + + mtl = KMimeType::allMimeTypes( ); + assert( mtl.count() ); + debug(QString("Found %1 mime types.").arg(mtl.count())); + for(int i = 0; i < (int)mtl.count(); i++) + { + debug(QString("Mime type %1: %2.").arg(i).arg(mtl[i]->name())); + } + + KService::List sl; + + sl = KService::allServices( ); + assert( sl.count() ); + debug(QString("Found %1 services.").arg(sl.count())); + + KServiceGroup::Ptr root = KServiceGroup::root(); + KServiceGroup::List list = root->entries(); + //KServiceGroup::Ptr topGroup = KServiceGroup::childGroup( "kview" ); + //Q_ASSERT( topGroup ); + //KServiceGroup::List list = topGroup->entries(); + + KServiceGroup::Ptr first; + + debug(QString("Found %1 entries").arg(list.count())); + for( KServiceGroup::List::ConstIterator it = list.begin(); + it != list.end(); it++) + { + KSycocaEntry *p = (*it); + if (p->isType(KST_KService)) + { + KService *service = static_cast<KService *>(p); + debug(service->name()); + debug(service->desktopEntryPath()); + } + else if (p->isType(KST_KServiceGroup)) + { + KServiceGroup *serviceGroup = static_cast<KServiceGroup *>(p); + debug(QString(" %1 -->").arg(serviceGroup->caption())); + if (!first) first = serviceGroup; + } + else + { + debug("KServiceGroup: Unexpected object in list!"); + } + } + + if (first) + { + list = first->entries(); + debug(QString("Found %1 entries").arg(list.count())); + for( KServiceGroup::List::ConstIterator it = list.begin(); + it != list.end(); it++) + { + KSycocaEntry *p = (*it); + if (p->isType(KST_KService)) + { + KService *service = static_cast<KService *>(p); + debug(QString(" %1").arg(service->name())); + } + else if (p->isType(KST_KServiceGroup)) + { + KServiceGroup *serviceGroup = static_cast<KServiceGroup *>(p); + debug(QString(" %1 -->").arg(serviceGroup->caption())); + } + else + { + debug("KServiceGroup: Unexpected object in list!"); + } + } + } + + debug("--services that require initialisation--"); + sl = KService::allInitServices(); + for( KService::List::ConstIterator it = sl.begin(); + it != sl.end(); it++) + { + KService *service = static_cast<KService *>(*it); + debug(service->name()); + } + debug("--End of list--"); + + debug("--protocols--"); + QStringList stringL = KProtocolInfo::protocols(); + for( QStringList::ConstIterator it = stringL.begin(); + it != stringL.end(); it++) + { + debug((*it).ascii()); + } + debug("--End of list--"); +#endif + +#if 0 + KImageIO::registerFormats(); + + QStringList types; + types = KImageIO::types(KImageIO::Reading); + debug("Can read:"); + for(QStringList::ConstIterator it = types.begin(); + it != types.end(); ++it) + debug(QString(" %1").arg((*it))); + + types = KImageIO::types(KImageIO::Writing); + debug("Can write:"); + for(QStringList::ConstIterator it = types.begin(); + it != types.end(); ++it) + debug(QString(" %1").arg((*it))); + + + QString rPattern = KImageIO::pattern( KImageIO::Reading ); + debug("Read pattern:\n%s", rPattern.ascii()); + + QString wPattern = KImageIO::pattern( KImageIO::Writing ); + debug("Write pattern:\n%s", wPattern.ascii()); + + QString suffix = KImageIO::suffix("JPEG"); + debug("Standard suffix for JPEG: %s", suffix.ascii()); + + types = KImageIO::mimeTypes(KImageIO::Reading); + debug("Can read (mimetypes):"); + for(QStringList::ConstIterator it = types.begin(); + it != types.end(); ++it) + debug(" %s", (*it).ascii()); + + types = KImageIO::mimeTypes(KImageIO::Writing); + debug("Can write (mimetypes):"); + for(QStringList::ConstIterator it = types.begin(); + it != types.end(); ++it) + debug(" %s", (*it).ascii()); + + debug("done"); +#endif + return 0; +} |