diff options
author | Jenkins CI <null@kde.org> | 2013-12-18 00:45:18 +0000 |
---|---|---|
committer | Jenkins CI <null@kde.org> | 2013-12-18 00:45:18 +0000 |
commit | 867e7a50e6396338ab4fe9aa22ad141e4cd344d2 (patch) | |
tree | 1d6f8d6c912fa04dc268b5580bcfe696fa538743 /autotests/kentrymaptest.cpp | |
parent | c38b88497a833e482e6892b72c8f52adec6de857 (diff) | |
download | kconfig-867e7a50e6396338ab4fe9aa22ad141e4cd344d2.tar.gz kconfig-867e7a50e6396338ab4fe9aa22ad141e4cd344d2.tar.bz2 |
Move kconfig code to the root directory.
Diffstat (limited to 'autotests/kentrymaptest.cpp')
-rw-r--r-- | autotests/kentrymaptest.cpp | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/autotests/kentrymaptest.cpp b/autotests/kentrymaptest.cpp new file mode 100644 index 00000000..9e926d65 --- /dev/null +++ b/autotests/kentrymaptest.cpp @@ -0,0 +1,202 @@ +/* This file is part of the KDE libraries + Copyright (C) 2007 Thomas Braxton (kde.braxton@gmail.com) + + 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 "kentrymaptest.h" + +#include <QtTest> +#include "kconfigdata.h" + + +const QByteArray group1("A Group"); +const QByteArray key1("A Key"); +const QByteArray key2("Another Key"); +const QByteArray value1("A value"); +const QByteArray value2("A different value"); + +QTEST_MAIN( KEntryMapTest ) + +void KEntryMapTest::testKeyOrder() +{ + const KEntryKey groupMarker(group1); + const KEntryKey entry(group1, key1); + const KEntryKey localized(group1, key1, true, false); + const KEntryKey localizedDefault(group1, key1, true, true); + const KEntryKey defaultEntry(group1, key1, false, true); + + // group marker should come before all entries + QVERIFY(groupMarker < entry); + QVERIFY(groupMarker < defaultEntry); + QVERIFY(groupMarker < localized); + QVERIFY(groupMarker < localizedDefault); + + // localized should come before entry + QVERIFY(localized < entry); + + // localized-default should come after localized entry + QVERIFY(localized < localizedDefault); + + // localized-default should come before non-localized entry + QVERIFY(localizedDefault < entry); + + // default should come after entry + QVERIFY(entry < defaultEntry); +} + +void KEntryMapTest::testSimple() +{ + KEntryMap map; + + map.setEntry(group1, key1, value1, EntryOptions()); + QCOMPARE(map.size(), 2); // the group marker & 1 key + map.setEntry(group1, key2, value2, EntryOptions()); + QCOMPARE(map.size(), 3); // the group marker & 2 keys + + QVERIFY(map.findEntry(group1) != map.end()); + QVERIFY(map.findEntry(group1.toLower()) == map.end()); + + QVERIFY(map.findEntry(group1, key1) != map.end()); + QVERIFY(map.findEntry(group1, key1.toLower()) == map.end()); + QVERIFY(map.findEntry(group1, key2) != map.end()); + QVERIFY(map.findEntry(group1, key2.toUpper()) == map.end()); + + QByteArray found = map.findEntry(group1, key1)->mValue; + QVERIFY(found == value1); + QVERIFY(found != value2); + + found = map.findEntry(group1, key2)->mValue; + QVERIFY(found != value1); + QVERIFY(found == value2); +} + +void KEntryMapTest::testDirty() +{ + KEntryMap map; + bool ret = map.setEntry(group1, key1, value1, EntryDefault); + QCOMPARE(ret, true); + ret = map.setEntry(group1, key1, value1, EntryDefault); + QCOMPARE(ret, false); + ret = map.setEntry(group1, key2, value2, EntryOptions()); + QCOMPARE(ret, true); + ret = map.setEntry(group1, key2, value2, EntryOptions()); + QCOMPARE(ret, false); +} + +void KEntryMapTest::testDefault() +{ + KEntryMap map; + + map.setEntry(group1, key1, value1, EntryDefault); + QCOMPARE(map.size(), 3); // group marker, default, entry + map.setEntry(group1, key2, value2, EntryOptions()); + QCOMPARE(map.size(), 4); // group marker, default1, entry1, entry2 + + const KEntryMap::ConstIterator defaultEntry(map.findEntry(group1, key1, SearchDefaults)); + const KEntryMap::ConstIterator entry1(map.findEntry(group1, key1)); + const KEntryMap::ConstIterator entry2(map.findEntry(group1, key2)); + + // default set for entry1 + QVERIFY(defaultEntry != map.constEnd()); + QCOMPARE(defaultEntry->mValue, entry1->mValue); + + // no default set for entry2 + QVERIFY(map.findEntry(group1, key2, SearchDefaults) == map.end()); + + // change from default + map.setEntry(group1, key1, value2, EntryOptions()); + QVERIFY(defaultEntry->mValue != entry1->mValue); + QVERIFY(entry1 != entry2); + QCOMPARE(entry1->mValue, entry2->mValue); + + // revert entry1 + map.revertEntry(group1, key1); + QCOMPARE(defaultEntry->mValue, entry1->mValue); + + // revert entry2, no default --> should be marked as deleted + map.revertEntry(group1, key2); + QCOMPARE(entry2->mValue, QByteArray()); + QVERIFY(entry2->bDirty); + QVERIFY(entry2->bReverted); +} + +void KEntryMapTest::testDelete() +{ + KEntryMap map; + + map.setEntry(group1, key1, value1, EntryDefault); + map.setEntry(group1, key2, value2, EntryDefault); + QCOMPARE(map.size(), 5); + + map.setEntry(group1, key2, QByteArray(), EntryDeleted|EntryDirty); + QCOMPARE(map.size(), 5); // entry should still be in map, so it can override merged entries later + QCOMPARE(map.findEntry(group1, key2)->mValue, QByteArray()); +} + +void KEntryMapTest::testGlobal() +{ + KEntryMap map; + + map.setEntry(group1, key1, value1, EntryGlobal); + QCOMPARE(map.findEntry(group1, key1)->bGlobal, true); + + // this should create a new key that is not "global" + map.setEntry(group1, key1, value2, EntryOptions()); + QVERIFY(!map.findEntry(group1, key1)->bGlobal); +} + +void KEntryMapTest::testImmutable() +{ + KEntryMap map; + + map.setEntry(group1, key1, value1, EntryImmutable); + QCOMPARE(map.findEntry(group1, key1)->bImmutable, true); // verify the immutable bit was set + + map.setEntry(group1, key1, value2, EntryOptions()); + QCOMPARE(map.findEntry(group1, key1)->mValue, value1); // verify the value didn't change + + map.clear(); + + map.setEntry(group1, QByteArray(), QByteArray(), EntryImmutable); + QCOMPARE(map.findEntry(group1)->bImmutable, true); // verify the group is immutable + + map.setEntry(group1, key1, value1, EntryOptions()); // should be ignored since the group is immutable + QVERIFY(map.findEntry(group1, key1) == map.end()); +} + +void KEntryMapTest::testLocale() +{ + const QByteArray translatedDefault("hola"); + const QByteArray translated("bonjour"); + const QByteArray untranslated("hello"); + KEntryMap map; + + map.setEntry(group1, key1, untranslated, EntryDefault); + QCOMPARE(map.findEntry(group1, key1)->mValue, untranslated); + QCOMPARE(map.findEntry(group1, key1, SearchLocalized)->mValue, untranslated); // no localized value yet + + map.setEntry(group1, key1, translated, EntryLocalized); + + QCOMPARE(map.findEntry(group1, key1, SearchLocalized)->mValue, translated); // has localized value now + QVERIFY(map.findEntry(group1, key1, SearchLocalized)->mValue != map.findEntry(group1, key1)->mValue); + QCOMPARE(map.findEntry(group1, key1, SearchDefaults|SearchLocalized)->mValue, untranslated); // default should still be untranslated + + map.setEntry(group1, key1, translatedDefault, EntryDefault|EntryLocalized); + QCOMPARE(map.findEntry(group1, key1, SearchLocalized)->mValue, translatedDefault); + map.setEntry(group1, key1, translated, EntryLocalized); // set the translated entry to a different locale + QCOMPARE(map.findEntry(group1, key1, SearchLocalized)->mValue, translated); +} |