From 9dbc524060221b8c72c4d5adf7cfb3a9c0423111 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 4 Dec 2016 15:17:08 -0500 Subject: Improve coverage of evoral tests --- libs/evoral/test/CurveTest.cpp | 48 ++++++++++++++++++++++++++++++++++++ libs/evoral/test/CurveTest.hpp | 4 +++ libs/evoral/test/SequenceTest.cpp | 51 ++++++++++++++++++++++++++++++++++----- libs/evoral/test/SequenceTest.hpp | 3 +++ 4 files changed, 100 insertions(+), 6 deletions(-) (limited to 'libs') 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 @@ -38,6 +38,54 @@ using namespace Evoral; ); \ } +void +CurveTest::trivial () +{ + float vec[1024]; + + boost::shared_ptr 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 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 () { diff --git a/libs/evoral/test/CurveTest.hpp b/libs/evoral/test/CurveTest.hpp index 9867edc8c6..60c0cb788c 100644 --- a/libs/evoral/test/CurveTest.hpp +++ b/libs/evoral/test/CurveTest.hpp @@ -6,6 +6,8 @@ class CurveTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE (CurveTest); + CPPUNIT_TEST (trivial); + CPPUNIT_TEST (rtGet); CPPUNIT_TEST (twoPointLinear); CPPUNIT_TEST (threePointLinear); CPPUNIT_TEST (threePointDiscete); @@ -14,6 +16,8 @@ class CurveTest : public CppUnit::TestFixture CPPUNIT_TEST_SUITE_END (); public: + void trivial (); + void rtGet (); void twoPointLinear (); void threePointLinear (); void threePointDiscete (); diff --git a/libs/evoral/test/SequenceTest.cpp b/libs/evoral/test/SequenceTest.cpp index d360af8b91..53bd8a4fdf 100644 --- a/libs/evoral/test/SequenceTest.cpp +++ b/libs/evoral/test/SequenceTest.cpp @@ -14,6 +14,18 @@ SequenceTest::createTest () CPPUNIT_ASSERT(seq->notes().begin() == seq->notes().end()); } +void +SequenceTest::copyTest () +{ + DummyTypeMap map; + MySequence