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:
Hyunjin Song
2020-04-04 12:08:55 +09:00
40 changed files with 329 additions and 160 deletions

View File

@@ -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"