diff --git a/libs/evoral/test/CurveTest.cpp b/libs/evoral/test/CurveTest.cpp index 36c4d808d2..32c6fa2d64 100644 --- a/libs/evoral/test/CurveTest.cpp +++ b/libs/evoral/test/CurveTest.cpp @@ -227,3 +227,183 @@ CurveTest::ctrlListEval () CPPUNIT_ASSERT_EQUAL(8.5, cl->unlocked_eval(350.)); CPPUNIT_ASSERT_EQUAL(9.0, cl->unlocked_eval(999.)); } + +void +CurveTest::constrainedCubic () +{ + + struct point { + int x, y; + }; + + static const struct point data[] = { + /* values from worked example in www.korf.co.uk/spline.pdf */ + { 0, 30 }, + { 10, 130 }, + { 30, 150 }, + { 50, 150 }, + { 70, 170 }, + { 90, 220 }, + { 100, 320 }, + }; + + int32_t type = 0; + Evoral::Parameter p(type); + Evoral::ParameterDescriptor pd; + Evoral::ControlList l(p,pd); + + size_t i; + l.set_interpolation(Evoral::ControlList::Curved); + + for (i=0; i