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 QtQuick 2.10 |
||||
import QtTest 1.1 |
import QtTest 1.1 |
||||
|
import de.skycoder42.QtMvvm.Core.test 4.2 |
||||
|
|
||||
Item { |
Item { |
||||
id: root |
id: root |
||||
|
|
||||
|
Component { |
||||
|
id: listElement |
||||
|
TestSettings_ListElement_8 {} |
||||
|
} |
||||
|
|
||||
TestCase { |
TestCase { |
||||
name: "QmlSettings" |
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