2008-11-04 00:08:39 +01:00
|
|
|
/******************************************************************************
|
|
|
|
* Copyright 2007 by Aaron Seigo <aseigo@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 as published by the Free Software Foundation; either *
|
|
|
|
* version 2 of the License, or (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
* 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 "packagestructuretest.h"
|
|
|
|
|
2008-11-04 10:36:00 +01:00
|
|
|
#include <kconfig.h>
|
|
|
|
#include <kconfiggroup.h>
|
2013-07-29 19:05:59 +02:00
|
|
|
#include <QDebug>
|
2012-09-17 18:56:56 +02:00
|
|
|
#include <klocalizedstring.h>
|
2008-11-04 00:08:39 +01:00
|
|
|
|
2011-07-21 14:48:12 +02:00
|
|
|
#include "applet.h"
|
2013-02-08 14:40:30 +01:00
|
|
|
#include "packagestructure.h"
|
2011-07-21 14:48:12 +02:00
|
|
|
#include "pluginloader.h"
|
2008-11-04 00:08:39 +01:00
|
|
|
|
2011-07-15 12:58:56 +02:00
|
|
|
class NoPrefixes : public Plasma::Package
|
2010-12-15 08:14:43 +01:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
explicit NoPrefixes()
|
2013-02-08 14:40:30 +01:00
|
|
|
: Plasma::Package(new Plasma::PackageStructure)
|
2010-12-15 08:14:43 +01:00
|
|
|
{
|
|
|
|
setContentsPrefixPaths(QStringList());
|
|
|
|
addDirectoryDefinition("bin", "bin", "bin");
|
2012-11-01 17:39:16 +01:00
|
|
|
addFileDefinition("MultiplePaths", "first", "Description proper");
|
|
|
|
addFileDefinition("MultiplePaths", "second", "Description proper");
|
2011-07-19 21:37:08 +02:00
|
|
|
setPath("/");
|
2010-12-15 08:14:43 +01:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2013-02-15 15:16:54 +01:00
|
|
|
void PackageStructureTest::initTestCase()
|
2008-11-04 00:08:39 +01:00
|
|
|
{
|
2013-06-19 02:06:55 +02:00
|
|
|
m_packagePath = QFINDTESTDATA("data/testpackage");
|
2013-02-15 15:16:54 +01:00
|
|
|
ps = Plasma::PluginLoader::self()->loadPackage("Plasma/Generic");
|
2011-07-19 21:37:08 +02:00
|
|
|
ps.setPath(m_packagePath);
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
|
2011-07-22 17:24:10 +02:00
|
|
|
void PackageStructureTest::copyPerformance()
|
|
|
|
{
|
|
|
|
// seed the cache first
|
|
|
|
ps.filePath("mainscript");
|
|
|
|
|
|
|
|
QTime t;
|
|
|
|
t.start();
|
|
|
|
|
|
|
|
for (int i = 0; i < 100000; ++i) {
|
|
|
|
Plasma::Package foo(ps);
|
|
|
|
const QString bar = foo.filePath("mainscript");
|
|
|
|
}
|
|
|
|
|
2013-08-05 17:59:32 +02:00
|
|
|
QVERIFY(t.elapsed() < 400);
|
2011-07-22 17:24:10 +02:00
|
|
|
}
|
|
|
|
|
2010-12-15 08:14:43 +01:00
|
|
|
void PackageStructureTest::emptyContentsPrefix()
|
|
|
|
{
|
2011-07-15 12:58:56 +02:00
|
|
|
NoPrefixes package;
|
2010-12-15 08:14:43 +01:00
|
|
|
QString path(package.filePath("bin", "ls"));
|
2011-07-19 21:37:08 +02:00
|
|
|
//qDebug() << path;
|
2010-12-15 08:14:43 +01:00
|
|
|
QCOMPARE(path, QString("/bin/ls"));
|
|
|
|
}
|
|
|
|
|
2012-11-01 17:39:16 +01:00
|
|
|
void PackageStructureTest::multiplePaths()
|
|
|
|
{
|
|
|
|
NoPrefixes package;
|
|
|
|
QCOMPARE(package.name("MultiplePaths"), QString("Description proper"));
|
|
|
|
}
|
|
|
|
|
2008-11-04 00:08:39 +01:00
|
|
|
void PackageStructureTest::directories()
|
|
|
|
{
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> dirs;
|
2013-05-11 13:25:35 +02:00
|
|
|
dirs << "config" << "data" << "images" << "theme" << "scripts" << "translations" << "ui";
|
2008-11-04 00:08:39 +01:00
|
|
|
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> psDirs = ps.directories();
|
2008-11-04 00:08:39 +01:00
|
|
|
|
|
|
|
QCOMPARE(dirs.count(), psDirs.count());
|
2010-10-13 18:02:19 +02:00
|
|
|
|
2011-07-22 17:24:10 +02:00
|
|
|
foreach (const char *dir, psDirs) {
|
|
|
|
bool found = false;
|
|
|
|
foreach (const char *check, dirs) {
|
|
|
|
if (qstrcmp(dir, check)) {
|
|
|
|
found = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
QVERIFY(found);
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (const char *dir, dirs) {
|
|
|
|
bool found = false;
|
|
|
|
foreach (const char *check, psDirs) {
|
|
|
|
if (qstrcmp(dir, check)) {
|
|
|
|
found = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
QVERIFY(found);
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void PackageStructureTest::requiredDirectories()
|
|
|
|
{
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> dirs;
|
2011-07-15 12:58:56 +02:00
|
|
|
QCOMPARE(ps.requiredDirectories(), dirs);
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
void PackageStructureTest::files()
|
|
|
|
{
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> files;
|
2012-10-05 18:08:33 +02:00
|
|
|
files << "mainconfigui" << "mainconfigxml" << "mainscript";
|
2008-11-04 00:08:39 +01:00
|
|
|
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> psFiles = ps.files();
|
2008-11-04 00:08:39 +01:00
|
|
|
|
2009-09-15 15:08:07 +02:00
|
|
|
//for (int i = 0; i < psFiles.count(); ++i) {
|
|
|
|
// qDebug() << psFiles[i];
|
|
|
|
//}
|
2011-07-22 17:24:10 +02:00
|
|
|
foreach (const char *file, psFiles) {
|
|
|
|
bool found = false;
|
|
|
|
foreach (const char *check, files) {
|
|
|
|
if (qstrcmp(file, check)) {
|
|
|
|
found = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
QVERIFY(found);
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void PackageStructureTest::requiredFiles()
|
|
|
|
{
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> files;
|
2008-11-04 00:08:39 +01:00
|
|
|
files << "mainscript";
|
|
|
|
|
2014-04-26 01:45:47 +02:00
|
|
|
QList<const char *> psFiles = ps.requiredFiles();
|
2008-11-04 00:08:39 +01:00
|
|
|
|
|
|
|
QCOMPARE(files.count(), psFiles.count());
|
|
|
|
for (int i = 0; i < files.count(); ++i) {
|
|
|
|
QCOMPARE(files[i], psFiles[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void PackageStructureTest::path()
|
|
|
|
{
|
2013-02-15 15:16:54 +01:00
|
|
|
QCOMPARE(ps.filePath("images"), QDir(m_packagePath + QString("/contents/images")).canonicalPath());
|
2013-05-11 13:25:35 +02:00
|
|
|
QCOMPARE(ps.filePath("theme"), QDir(m_packagePath + QString("/contents/theme")).canonicalPath());
|
2013-02-15 15:16:54 +01:00
|
|
|
QCOMPARE(ps.filePath("mainscript"), QFileInfo(m_packagePath + QString("/contents/ui/main.qml")).canonicalFilePath());
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
void PackageStructureTest::name()
|
|
|
|
{
|
2011-07-15 12:58:56 +02:00
|
|
|
QCOMPARE(ps.name("config"), i18n("Configuration Definitions"));
|
|
|
|
QCOMPARE(ps.name("mainscript"), i18n("Main Script File"));
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
void PackageStructureTest::required()
|
|
|
|
{
|
2011-07-15 12:58:56 +02:00
|
|
|
QVERIFY(ps.isRequired("mainscript"));
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
|
2011-05-06 12:26:39 +02:00
|
|
|
void PackageStructureTest::mimeTypes()
|
2008-11-04 00:08:39 +01:00
|
|
|
{
|
2011-05-06 12:26:39 +02:00
|
|
|
QStringList mimeTypes;
|
|
|
|
mimeTypes << "image/svg+xml" << "image/png" << "image/jpeg";
|
2011-07-15 12:58:56 +02:00
|
|
|
QCOMPARE(ps.mimeTypes("images"), mimeTypes);
|
2013-05-11 13:25:35 +02:00
|
|
|
QCOMPARE(ps.mimeTypes("theme"), mimeTypes);
|
2008-11-04 00:08:39 +01:00
|
|
|
}
|
|
|
|
|
2012-12-18 12:18:08 +01:00
|
|
|
QTEST_MAIN(PackageStructureTest)
|
2008-11-04 00:08:39 +01:00
|
|
|
|