Merge branch 'stable-1.2'
# Conflicts: # .gitmodules # .travis.yml # .travis/linux..before_install.sh # .travis/linux..install.sh # CMakeLists.txt # cmake/linux/package_linux.sh.in # cmake/modules/BuildPlugin.cmake # include/AutomatableModel.h # plugins/MidiImport/MidiImport.cpp # plugins/carlapatchbay/CMakeLists.txt # plugins/carlarack/CMakeLists.txt # src/core/Song.cpp # src/core/Track.cpp # src/gui/editors/SongEditor.cpp # tests/src/core/AutomatableModelTest.cpp
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* AutomatableModelTest.cpp
|
||||
*
|
||||
* Copyright (c) 2019-2019 Johannes Lorenz <j.git$$$lorenz-ho.me, $$$=@>
|
||||
* Copyright (c) 2019-2020 Johannes Lorenz <j.git$$$lorenz-ho.me, $$$=@>
|
||||
*
|
||||
* This file is part of LMMS - https://lmms.io
|
||||
*
|
||||
@@ -31,7 +31,14 @@ class AutomatableModelTest : QTestSuite
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private slots:
|
||||
bool m1Changed, m2Changed;
|
||||
void resetChanged() { m1Changed = m2Changed = false; }
|
||||
|
||||
private slots: // helper slots
|
||||
void onM1Changed(Model* ) { m1Changed = true; }
|
||||
void onM2Changed(Model* ) { m2Changed = true; }
|
||||
|
||||
private slots: // tests
|
||||
//! Test that upcast and exact casts work,
|
||||
//! but no downcast or any other casts
|
||||
void CastTests()
|
||||
@@ -50,6 +57,45 @@ private slots:
|
||||
QCOMPARE(&intModel, imPtr->dynamicCast<IntModel>()); // same class
|
||||
QVERIFY(nullptr == imPtr->dynamicCast<ComboBoxModel>()); // child class
|
||||
}
|
||||
|
||||
void LinkTests()
|
||||
{
|
||||
BoolModel m1(false), m2(false);
|
||||
|
||||
QObject::connect(&m1, SIGNAL(dataChanged(Model*)),
|
||||
this, SLOT(onM1Changed(Model*)));
|
||||
QObject::connect(&m2, SIGNAL(dataChanged(Model*)),
|
||||
this, SLOT(onM2Changed(Model*)));
|
||||
|
||||
resetChanged();
|
||||
AutomatableModel::linkModels(&m1, &m1);
|
||||
QVERIFY(!m1Changed); // cannot link to itself
|
||||
QVERIFY(!m2Changed);
|
||||
|
||||
resetChanged();
|
||||
AutomatableModel::linkModels(&m1, &m2);
|
||||
QVERIFY(m1Changed); // since m1 takes the value of m2
|
||||
QVERIFY(!m2Changed); // the second model is the source
|
||||
|
||||
resetChanged();
|
||||
AutomatableModel::linkModels(&m1, &m2);
|
||||
QVERIFY(!m1Changed); // it's already linked
|
||||
QVERIFY(!m2Changed);
|
||||
|
||||
resetChanged();
|
||||
BoolModel m3(false);
|
||||
m1.setValue(1.f);
|
||||
m2.setValue(1.f);
|
||||
AutomatableModel::linkModels(&m1, &m2);
|
||||
QVERIFY(m1.value());
|
||||
QVERIFY(m2.value());
|
||||
QVERIFY(!m3.value());
|
||||
AutomatableModel::linkModels(&m2, &m3); // drag m3, drop on m2
|
||||
// m2 should take m3's (0) value
|
||||
// due to a bug(?), this does not happen
|
||||
QVERIFY(m2.value());
|
||||
QVERIFY(!m3.value());
|
||||
}
|
||||
} AutomatableModelTests;
|
||||
|
||||
#include "AutomatableModelTest.moc"
|
||||
|
||||
Reference in New Issue
Block a user