[Panel-devel] KDE/kdebase/workspace/libs/plasma
Paolo Capriotti
paolo.capriotti at gmail.com
Sun Dec 2 14:16:40 CET 2007
SVN commit 743970 by capriotti:
Add PackageStructure::read, write and related tests.
CCMAIL:panel-devel at kde.org
M +54 -0 packagestructure.cpp
M +12 -0 packagestructure.h
M +72 -0 tests/packagestructuretest.cpp
M +2 -0 tests/packagestructuretest.h
A tests/plasmoidpackagerc
--- trunk/KDE/kdebase/workspace/libs/plasma/packagestructure.cpp #743969:743970
@@ -20,6 +20,7 @@
#include "packagestructure.h"
#include <QMap>
+#include <KConfigGroup>
namespace Plasma
{
@@ -231,5 +232,58 @@
return it.value().mimetypes;
}
+PackageStructure PackageStructure::read(const KConfigBase *config)
+{
+ QString type = config->group("").readEntry("Type", "");
+ PackageStructure structure(type);
+
+ QStringList groups = config->groupList();
+ foreach (QString groupName, groups) {
+ QByteArray key = groupName.toAscii();
+ KConfigGroup entry = config->group(key);
+
+ QString path = entry.readEntry("Path", QString());
+ QString name = entry.readEntry("Name", QString());
+ QStringList mimetypes = entry.readEntry("Mimetypes", QStringList());
+ bool directory = entry.readEntry("Directory", false);
+ bool required = entry.readEntry("Required", false);
+
+ if (directory) {
+ structure.addDirectoryDefinition(key, path, name);
+ }
+ else {
+ structure.addFileDefinition(key, path, name);
+ }
+
+ structure.setMimetypes(key, mimetypes);
+ structure.setRequired(key, required);
+ }
+
+ return structure;
+}
+
+void PackageStructure::write(KConfigBase *config) const
+{
+ config->group("").writeEntry("Type", type());
+
+ QMap<QByteArray, ContentStructure>::const_iterator it = d->contents.constBegin();
+ while (it != d->contents.constEnd()) {
+ KConfigGroup group = config->group(it.key());
+ group.writeEntry("Path", it.value().path);
+ group.writeEntry("Name", it.value().name);
+ if (!it.value().mimetypes.isEmpty()) {
+ group.writeEntry("Mimetypes", it.value().mimetypes);
+ }
+ if (it.value().directory) {
+ group.writeEntry("Directory", true);
+ }
+ if (it.value().required) {
+ group.writeEntry("Required", true);
+ }
+
+ ++it;
+ }
+}
+
} // Plasma namespace
--- trunk/KDE/kdebase/workspace/libs/plasma/packagestructure.h #743969:743970
@@ -24,6 +24,8 @@
#include <plasma/plasma_export.h>
+class KConfigBase;
+
namespace Plasma
{
@@ -175,6 +177,16 @@
* Assignment operator
**/
PackageStructure& operator=(const PackageStructure& rhs);
+
+ /**
+ * Read a package structure from a config file.
+ */
+ static PackageStructure read(const KConfigBase *config);
+
+ /**
+ * Write this package structure to a config file.
+ */
+ void write(KConfigBase *config) const;
private:
class Private;
--- trunk/KDE/kdebase/workspace/libs/plasma/tests/packagestructuretest.cpp #743969:743970
@@ -19,8 +19,11 @@
#include "packagestructuretest.h"
+#include <KConfig>
+#include <KConfigGroup>
#include <KDebug>
+#include "plasma/packagestructure.h"
#include "plasma/packages.cpp"
void PackageStructureTest::init()
@@ -107,6 +110,75 @@
QCOMPARE(ps->mimetypes("images"), mimetypes);
}
+void PackageStructureTest::read()
+{
+ QString structurePath = QString(KDESRCDIR) + "/plasmoidpackagerc";
+ KConfig config(structurePath);
+ Plasma::PackageStructure structure =
+ Plasma::PackageStructure::read(&config);
+
+ // check some names
+ QCOMPARE(structure.name("config"), i18n("Configuration Definitions"));
+ QCOMPARE(structure.name("mainscript"), i18n("Main Script File"));
+
+ // check some paths
+ QCOMPARE(structure.path("images"), QString("images"));
+ QCOMPARE(structure.path("mainscript"), QString("code/main"));
+
+ // compare files
+ QList<const char *> files;
+ files << "mainconfiggui" << "mainconfigxml" << "mainscript";
+
+ QList<const char *> psFiles = structure.files();
+
+ QCOMPARE(psFiles.count(), files.count());
+ for (int i = 0; i < files.count(); ++i) {
+ QCOMPARE(psFiles[i], files[i]);
+ }
+
+ // compare required files
+ QList<const char *> reqFiles = structure.requiredFiles();
+ QCOMPARE(reqFiles.count(), 1);
+ QCOMPARE(reqFiles[0], "mainscript");
+
+ // compare directories
+ QList <const char *> dirs;
+ dirs << "config" << "configui" << "images" << "scripts";
+ QList <const char *> psDirs = structure.directories();
+ QCOMPARE(psDirs.count(), dirs.count());
+ for (int i = 0; i < dirs.count(); i++) {
+ QCOMPARE(psDirs[i], dirs[i]);
+ }
+ QCOMPARE(structure.requiredDirectories().size(), 0);
+}
+
+void PackageStructureTest::write()
+{
+ QString file1 = QDir::homePath() + "/.kde-unit-test/packagerc";
+ QString file2 = QString(KDESRCDIR) + "/plasmoidpackagerc";
+
+ KConfig config(file1);
+ ps->write(&config);
+
+ // check type
+ QCOMPARE(config.group("").readEntry("Type", QString()), QString("Plasmoid"));
+
+ // check groups
+ QStringList groups;
+ groups << "images" << "config" << "configui" << "scripts"
+ << "mainconfiggui" << "mainconfigxml" << "mainscript";
+ groups.sort();
+ QCOMPARE(config.groupList(), groups);
+
+ // check scripts
+ KConfigGroup scripts = config.group("scripts");
+ QCOMPARE(scripts.readEntry("Path", QString()), QString("code"));
+ QCOMPARE(scripts.readEntry("Name", QString()), QString("Executable Scripts"));
+ QCOMPARE(scripts.readEntry("Mimetypes", QStringList()), QStringList() << "text/*");
+ QCOMPARE(scripts.readEntry("Directory", false), true);
+ QCOMPARE(scripts.readEntry("Required", false), false);
+}
+
QTEST_KDEMAIN(PackageStructureTest, NoGUI)
//#include "packagestructuretest.moc"
--- trunk/KDE/kdebase/workspace/libs/plasma/tests/packagestructuretest.h #743969:743970
@@ -41,6 +41,8 @@
void name();
void required();
void mimetypes();
+ void read();
+ void write();
//TODO: add tests for copy construction
More information about the Panel-devel
mailing list