From 82a0c02af177d640b3876dd24789438ebaecee79 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 23 Oct 2009 04:24:20 +0000 Subject: Fix controller iteration / linear interpolation. Add unit test for controller iteration / linear interpolation. git-svn-id: svn://localhost/ardour2/branches/3.0@5886 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/evoral/test/SequenceTest.cpp | 67 ++++++++++++++++++++++++++++++++++++++- libs/evoral/test/SequenceTest.hpp | 21 +++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) (limited to 'libs/evoral/test') diff --git a/libs/evoral/test/SequenceTest.cpp b/libs/evoral/test/SequenceTest.cpp index 0f6a30e5f1..2c5c17f4d8 100644 --- a/libs/evoral/test/SequenceTest.cpp +++ b/libs/evoral/test/SequenceTest.cpp @@ -1,4 +1,5 @@ #include "SequenceTest.hpp" +#include "evoral/MIDIParameters.hpp" #include CPPUNIT_TEST_SUITE_REGISTRATION(SequenceTest); @@ -62,7 +63,6 @@ SequenceTest::preserveEventOrderingTest () CPPUNIT_ASSERT_EQUAL(size_t(12), test_notes.size()); } - void SequenceTest::iteratorSeekTest () { @@ -89,3 +89,68 @@ SequenceTest::iteratorSeekTest () CPPUNIT_ASSERT_EQUAL(num_notes, size_t(6)); } + +void +SequenceTest::controlInterpolationTest () +{ + seq->clear(); + + for (Notes::const_iterator i = test_notes.begin(); i != test_notes.end(); ++i) { + seq->notes().insert(*i); + } + + static const FrameTime delay = 1000; + static const uint32_t cc_type = 1; + + boost::shared_ptr c = seq->control(MIDI::ContinuousController(cc_type, 1, 1), true); + CPPUNIT_ASSERT(c); + + double min, max, normal; + MIDI::controller_range(min, max, normal); + + // Make a ramp like /\ from min to max and back to min + c->set_float(min, true, 0); + c->set_float(max, true, delay); + c->set_float(min, true, 2*delay); + + CCTestSink