/* This file is part of the KDE libraries Copyright (C) 1997 Matthias Kalle Dalheimer (kalle@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 #include "kconfigguitest.h" #include "moc_kconfigguitest.cpp" #include #include #include #include #include QTEST_KDEMAIN( KConfigTest, GUI ) #define COLORENTRY1 QColor("steelblue") #define COLORENTRY2 QColor(235, 235, 100, 125) #define COLORENTRY3 QColor(234, 234, 127) #define FONTENTRY QFont("Times", 16, QFont::Normal) void KConfigTest::initTestCase() { // cheat the linker on windows to link against kdeui KCursor::hideCursorDelay(); KConfig sc( "kconfigtest" ); KConfigGroup cg(&sc, "ComplexTypes"); cg.writeEntry( "colorEntry1", COLORENTRY1 ); cg.writeEntry( "colorEntry2", COLORENTRY2 ); cg.writeEntry( "colorEntry3", (QList() << 234 << 234 << 127)); cg.writeEntry( "colorEntry4", (QList() << 235 << 235 << 100 << 125)); cg.writeEntry( "fontEntry", FONTENTRY ); sc.sync(); KConfig sc1("kdebugrc"); KConfigGroup sg0(&sc1, "0"); sg0.writeEntry("AbortFatal", false); sg0.writeEntry("WarnOutput", 0); sg0.writeEntry("FatalOutput", 0); sc1.sync(); } void KConfigTest::cleanupTestCase() { QDir local(QDir::homePath() + "/.kde-unit-test/share/config"); foreach(const QString &file, local.entryList(QDir::Files)) if(!local.remove(file)) qWarning("%s: removing failed", qPrintable( file )); QCOMPARE((int)local.entryList(QDir::Files).count(), 0); local.cdUp(); local.rmpath("config"); } void KConfigTest::testComplex() { KConfig sc2( "kconfigtest" ); KConfigGroup sc3(&sc2, "ComplexTypes"); QCOMPARE( QVariant(sc3.readEntry( "colorEntry1", QColor(Qt::black) )).toString(), QVariant(COLORENTRY1).toString() ); QCOMPARE( sc3.readEntry( "colorEntry1", QColor() ), COLORENTRY1 ); QCOMPARE( sc3.readEntry( "colorEntry2", QColor() ), COLORENTRY2 ); QCOMPARE( sc3.readEntry( "colorEntry3", QColor() ), COLORENTRY3 ); QCOMPARE( sc3.readEntry( "colorEntry4", QColor() ), COLORENTRY2 ); QCOMPARE( sc3.readEntry( "defaultColorTest", QColor("black") ), QColor("black") ); QCOMPARE( sc3.readEntry( "fontEntry", QFont() ), FONTENTRY ); } void KConfigTest::testInvalid() { KConfig sc( "kconfigtest" ); // all of these should print a message to the kdebug.dbg file KConfigGroup sc3(&sc, "InvalidTypes" ); QList list; // 1 element list list << 1; sc3.writeEntry( QString("badList"), list); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); // 2 element list list << 2; sc3.writeEntry( "badList", list); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); // 3 element list list << 303; sc3.writeEntry( "badList", list); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); // out of bounds // 4 element list list << 4; sc3.writeEntry( "badList", list ); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); // out of bounds list[2] = -3; sc3.writeEntry( "badList", list ); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); // out of bounds // 5 element list list[2] = 3; list << 5; sc3.writeEntry( "badList", list); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); // 6 element list list << 6; sc3.writeEntry( "badList", list); sc.sync(); QVERIFY( sc3.readEntry( "badList", QColor() ) == QColor() ); }