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