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