6 changed files with 171 additions and 6 deletions
			
			
		@ -0,0 +1,11 @@ | 
				
			|||
TEMPLATE = app | 
				
			|||
 | 
				
			|||
QT += testlib mvvmcore | 
				
			|||
QT -= gui | 
				
			|||
CONFIG += console | 
				
			|||
CONFIG -= app_bundle | 
				
			|||
 | 
				
			|||
TARGET = tst_binding | 
				
			|||
 | 
				
			|||
SOURCES += \ | 
				
			|||
    tst_binding.cpp | 
				
			|||
@ -0,0 +1,147 @@ | 
				
			|||
#include <QString> | 
				
			|||
#include <QtTest> | 
				
			|||
#include <QCoreApplication> | 
				
			|||
#include <QtMvvmCore/Binding> | 
				
			|||
using namespace QtMvvm; | 
				
			|||
 | 
				
			|||
class BindingTest : public QObject | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
 | 
				
			|||
	Q_PROPERTY(int vmProp MEMBER vmProp NOTIFY vmPropChanged) | 
				
			|||
	Q_PROPERTY(int vProp MEMBER vProp NOTIFY vPropChanged) | 
				
			|||
 | 
				
			|||
Q_SIGNALS: | 
				
			|||
	void vmPropChanged(int vmProp); | 
				
			|||
	void vPropChanged(int vProp); | 
				
			|||
 | 
				
			|||
	void triggerVm(); | 
				
			|||
	void triggerV(); | 
				
			|||
 | 
				
			|||
private Q_SLOTS: | 
				
			|||
	void testSingleInit(); | 
				
			|||
	void testOneWayToView(); | 
				
			|||
	void testOneWayToViewModel(); | 
				
			|||
	void testTwoWay(); | 
				
			|||
	void testCustomChangeSignals(); | 
				
			|||
 | 
				
			|||
private: | 
				
			|||
	int vmProp = 0; | 
				
			|||
	int vProp = 0; | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
void BindingTest::testSingleInit() | 
				
			|||
{ | 
				
			|||
	vmProp = 42; | 
				
			|||
	vProp = 0; | 
				
			|||
	auto binding = bind(this, "vmProp", this, "vProp", Binding::SingleInit); | 
				
			|||
	QVERIFY(binding); | 
				
			|||
	QCOMPARE(vmProp, 42); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vmProp = 33; | 
				
			|||
	emit vmPropChanged(vmProp); | 
				
			|||
	QCOMPARE(vProp, 42); | 
				
			|||
 | 
				
			|||
	emit vPropChanged(vProp); | 
				
			|||
	QCOMPARE(vmProp, 33); | 
				
			|||
 | 
				
			|||
	binding.unbind(); | 
				
			|||
	QVERIFY(!binding.isValid()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void BindingTest::testOneWayToView() | 
				
			|||
{ | 
				
			|||
	vmProp = 13; | 
				
			|||
	vProp = 0; | 
				
			|||
	auto binding = bind(this, "vmProp", this, "vProp", Binding::OneWayToView); | 
				
			|||
	QVERIFY(binding); | 
				
			|||
	QCOMPARE(vmProp, 13); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vmProp = 33; | 
				
			|||
	emit vmPropChanged(vmProp); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vProp = 13; | 
				
			|||
	emit vPropChanged(vProp); | 
				
			|||
	QCOMPARE(vmProp, 33); | 
				
			|||
 | 
				
			|||
	binding.unbind(); | 
				
			|||
	QVERIFY(!binding.isValid()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void BindingTest::testOneWayToViewModel() | 
				
			|||
{ | 
				
			|||
	vmProp = 0; | 
				
			|||
	vProp = 11; | 
				
			|||
	auto binding = bind(this, "vmProp", this, "vProp", Binding::OneWayToViewModel); | 
				
			|||
	QVERIFY(binding); | 
				
			|||
	QCOMPARE(vmProp, 0); | 
				
			|||
	QCOMPARE(vProp, 11); | 
				
			|||
 | 
				
			|||
	vmProp = 55; | 
				
			|||
	emit vmPropChanged(vmProp); | 
				
			|||
	QCOMPARE(vProp, 11); | 
				
			|||
 | 
				
			|||
	vProp = 5; | 
				
			|||
	emit vPropChanged(vProp); | 
				
			|||
	QCOMPARE(vmProp, vProp); | 
				
			|||
 | 
				
			|||
	binding.unbind(); | 
				
			|||
	QVERIFY(!binding.isValid()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void BindingTest::testTwoWay() | 
				
			|||
{ | 
				
			|||
	vmProp = 77; | 
				
			|||
	vProp = 0; | 
				
			|||
	auto binding = bind(this, "vmProp", this, "vProp", Binding::TwoWay); | 
				
			|||
	QVERIFY(binding); | 
				
			|||
	QCOMPARE(vmProp, 77); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vmProp = 12; | 
				
			|||
	emit vmPropChanged(vmProp); | 
				
			|||
	QCOMPARE(vProp, 12); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vProp = 9; | 
				
			|||
	emit vPropChanged(vProp); | 
				
			|||
	QCOMPARE(vmProp, 9); | 
				
			|||
	QCOMPARE(vmProp, vProp); | 
				
			|||
 | 
				
			|||
	binding.unbind(); | 
				
			|||
	QVERIFY(!binding.isValid()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void BindingTest::testCustomChangeSignals() | 
				
			|||
{ | 
				
			|||
	vmProp = 16; | 
				
			|||
	vProp = 0; | 
				
			|||
	auto binding = bind(this, "vmProp", this, "vProp", Binding::TwoWay, "triggerVm()", "triggerV()"); | 
				
			|||
	QVERIFY(binding); | 
				
			|||
	QCOMPARE(vmProp, 16); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vmProp = 8; | 
				
			|||
	emit vmPropChanged(vmProp); | 
				
			|||
	QCOMPARE(vProp, 16); | 
				
			|||
	emit triggerVm(); | 
				
			|||
	QCOMPARE(vProp, 8); | 
				
			|||
	QCOMPARE(vProp, vmProp); | 
				
			|||
 | 
				
			|||
	vProp = 99; | 
				
			|||
	emit vPropChanged(vProp); | 
				
			|||
	QCOMPARE(vmProp, 8); | 
				
			|||
	emit triggerV(); | 
				
			|||
	QCOMPARE(vmProp, 99); | 
				
			|||
	QCOMPARE(vmProp, vProp); | 
				
			|||
 | 
				
			|||
	binding.unbind(); | 
				
			|||
	QVERIFY(!binding.isValid()); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
QTEST_MAIN(BindingTest) | 
				
			|||
 | 
				
			|||
#include "tst_binding.moc" | 
				
			|||
					Loading…
					
					
				
		Reference in new issue