8 changed files with 219 additions and 24 deletions
@ -0,0 +1,38 @@ |
|||
#include "testbackend.h" |
|||
|
|||
TestBackend::TestBackend(QObject *parent) : |
|||
ISettingsAccessor{parent} |
|||
{} |
|||
|
|||
bool TestBackend::contains(const QString &key) const |
|||
{ |
|||
return _data.contains(key); |
|||
} |
|||
|
|||
QVariant TestBackend::load(const QString &key, const QVariant &defaultValue) const |
|||
{ |
|||
return _data.value(key, defaultValue); |
|||
} |
|||
|
|||
void TestBackend::save(const QString &key, const QVariant &value) |
|||
{ |
|||
_data.insert(key, value); |
|||
emit entryChanged(key, value); |
|||
} |
|||
|
|||
void TestBackend::remove(const QString &key) |
|||
{ |
|||
for(auto it = _data.begin(); it != _data.end();) { |
|||
if(it.key().startsWith(key + QLatin1Char('/'))) { |
|||
it = _data.erase(it); |
|||
emit entryRemoved(key); |
|||
} else |
|||
++it; |
|||
} |
|||
_data.remove(key); |
|||
emit entryRemoved(key); |
|||
} |
|||
|
|||
void TestBackend::sync() |
|||
{ |
|||
} |
@ -0,0 +1,30 @@ |
|||
#ifndef TESTBACKEND_H |
|||
#define TESTBACKEND_H |
|||
|
|||
#include <QtCore/QVariantHash> |
|||
#include <QtMvvmCore/ISettingsAccessor> |
|||
|
|||
class TestBackend : public QtMvvm::ISettingsAccessor |
|||
{ |
|||
Q_OBJECT |
|||
|
|||
public: |
|||
explicit TestBackend(QObject *parent = nullptr); |
|||
|
|||
// ISettingsAccessor interface
|
|||
public: |
|||
bool contains(const QString &key) const override; |
|||
QVariant load(const QString &key, const QVariant &defaultValue) const override; |
|||
void save(const QString &key, const QVariant &value) override; |
|||
void remove(const QString &key) override; |
|||
|
|||
public slots: |
|||
void sync() override; |
|||
|
|||
public: |
|||
QVariantHash _data; |
|||
}; |
|||
|
|||
#define SOME_EXPORT |
|||
|
|||
#endif // TESTBACKEND_H
|
@ -1,11 +1,67 @@ |
|||
import QtQuick 2.10 |
|||
import QtTest 1.1 |
|||
import de.skycoder42.QtMvvm.Core.test 4.2 |
|||
|
|||
Item { |
|||
id: root |
|||
|
|||
Component { |
|||
id: listElement |
|||
TestSettings_ListElement_8 {} |
|||
} |
|||
|
|||
TestCase { |
|||
name: "QmlSettings" |
|||
|
|||
function test_0_instance() { |
|||
verify(TestSettings); |
|||
verify(TestSettings.accessor); |
|||
} |
|||
|
|||
function test_1_defaults() { |
|||
compare(TestSettings.emptyEntry, false); |
|||
compare(TestSettings.advancedEntry, "Hello World"); |
|||
compare(TestSettings.codeEntry, "file:///path/to/something"); |
|||
compare(TestSettings.parentNode.fullChildNode.replaceEntry, 42); |
|||
compare(TestSettings.parentNode.parentEntry, true); |
|||
compare(TestSettings.parentNode.parentEntryGroup.nodeWithCodeEntry, 43); |
|||
compare(TestSettings.parentNode.parentEntryGroup.leafEntry, qsTr("translate me")); |
|||
compare(TestSettings.variantEntry, undefined); |
|||
compare(TestSettings.simpleListEntry, [42]); |
|||
compare(TestSettings.listEntryGroup.dummyChild, false); |
|||
} |
|||
|
|||
function test_2_listEntry() { |
|||
// test reading |
|||
compare(TestSettings.listEntry.length, 3); |
|||
verify(TestSettings.listEntry[0]); |
|||
compare(TestSettings.listEntry[0].value, "test1"); |
|||
verify(TestSettings.listEntry[1]); |
|||
compare(TestSettings.listEntry[1].value, "test2"); |
|||
verify(TestSettings.listEntry[2]); |
|||
compare(TestSettings.listEntry[2].value, "test3"); |
|||
verify(!TestSettings.listEntry[3]); |
|||
|
|||
// test appending |
|||
var elem = listElement.createObject(root, {value: "baum42"}); |
|||
verify(elem); |
|||
compare(elem.value, "baum42"); |
|||
TestSettings.listEntry.push(elem); |
|||
compare(TestSettings.listEntry.length, 4); |
|||
verify(TestSettings.listEntry[3]); |
|||
compare(TestSettings.listEntry[3].value, "baum42"); |
|||
verify(!TestSettings.listEntry[4]); |
|||
|
|||
// test resetting |
|||
var elem2 = TestSettings.create_listEntry_element("newElem"); |
|||
verify(elem2); |
|||
compare(elem2.value, "newElem"); |
|||
TestSettings.listEntry = [elem2] |
|||
compare(TestSettings.listEntry.length, 1); |
|||
verify(TestSettings.listEntry[0]); |
|||
compare(TestSettings.listEntry[0].value, "newElem"); |
|||
verify(!TestSettings.listEntry[1]); |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
Binary file not shown.
Loading…
Reference in new issue