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