diff options
Diffstat (limited to 'libs/evoral/test/CurveTest.cpp')
-rw-r--r-- | libs/evoral/test/CurveTest.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libs/evoral/test/CurveTest.cpp b/libs/evoral/test/CurveTest.cpp index 07b4184833..01fdda20c2 100644 --- a/libs/evoral/test/CurveTest.cpp +++ b/libs/evoral/test/CurveTest.cpp @@ -39,6 +39,54 @@ using namespace Evoral; } void +CurveTest::trivial () +{ + float vec[1024]; + + boost::shared_ptr<Evoral::ControlList> cl = TestCtrlList(); + + cl->create_curve (); + + // Empty curve + cl->curve().get_vector (1024.0, 2047.0, vec, 1024); + for (int i = 0; i < 1024; ++i) { + CPPUNIT_ASSERT_EQUAL (0.0f, vec[i]); + } + + // Single point curve + cl->fast_simple_add(0.0, 42.0); + cl->curve().get_vector (1024.0, 2047.0, vec, 1024); + for (int i = 0; i < 1024; ++i) { + CPPUNIT_ASSERT_EQUAL (42.0f, vec[i]); + } +} + +void +CurveTest::rtGet () +{ + float vec[1024]; + + // Create simple control list + boost::shared_ptr<Evoral::ControlList> cl = TestCtrlList(); + cl->create_curve (); + cl->fast_simple_add(0.0, 42.0); + + { + // Write-lock list + Glib::Threads::RWLock::WriterLock lm(cl->lock()); + + // Attempt to get vector in RT (expect failure) + CPPUNIT_ASSERT (!cl->curve().rt_safe_get_vector (1024.0, 2047.0, vec, 1024)); + } + + // Attempt to get vector in RT (expect success) + CPPUNIT_ASSERT (cl->curve().rt_safe_get_vector (1024.0, 2047.0, vec, 1024)); + for (int i = 0; i < 1024; ++i) { + CPPUNIT_ASSERT_EQUAL (42.0f, vec[i]); + } +} + +void CurveTest::twoPointLinear () { float vec[1024]; |