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