Merge branch 'master' into refac/memory

This commit is contained in:
Lukas W
2020-05-04 20:28:32 +02:00
420 changed files with 9554 additions and 4702 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() { 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"

View File

@@ -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()