Merge branch 'master' into refac/memory
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() { m1Changed = true; }
|
||||
void onM2Changed() { 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()),
|
||||
this, SLOT(onM1Changed()));
|
||||
QObject::connect(&m2, SIGNAL(dataChanged()),
|
||||
this, SLOT(onM2Changed()));
|
||||
|
||||
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"
|
||||
|
||||
@@ -186,12 +186,12 @@ private slots:
|
||||
QVERIFY(! bbContainer->automatedValuesAt(5, bbTrack2.index()).size());
|
||||
|
||||
BBTCO tco(&bbTrack);
|
||||
tco.changeLength(MidiTime::ticksPerTact() * 2);
|
||||
tco.changeLength(MidiTime::ticksPerBar() * 2);
|
||||
tco.movePosition(0);
|
||||
|
||||
QCOMPARE(song->automatedValuesAt(0)[&model], 0.0f);
|
||||
QCOMPARE(song->automatedValuesAt(5)[&model], 0.5f);
|
||||
QCOMPARE(song->automatedValuesAt(MidiTime::ticksPerTact() + 5)[&model], 0.5f);
|
||||
QCOMPARE(song->automatedValuesAt(MidiTime::ticksPerBar() + 5)[&model], 0.5f);
|
||||
}
|
||||
|
||||
void testGlobalAutomation()
|
||||
|
||||
Reference in New Issue
Block a user