summaryrefslogtreecommitdiff
path: root/libs/ardour/test/playlist_overlap_cache_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/test/playlist_overlap_cache_test.cc')
-rw-r--r--libs/ardour/test/playlist_overlap_cache_test.cc119
1 files changed, 0 insertions, 119 deletions
diff --git a/libs/ardour/test/playlist_overlap_cache_test.cc b/libs/ardour/test/playlist_overlap_cache_test.cc
deleted file mode 100644
index 9263d80d3b..0000000000
--- a/libs/ardour/test/playlist_overlap_cache_test.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-#include "pbd/compose.h"
-#include "ardour/playlist.h"
-#include "ardour/playlist_factory.h"
-#include "ardour/source_factory.h"
-#include "ardour/region.h"
-#include "ardour/region_sorters.h"
-#include "ardour/region_factory.h"
-#include "playlist_overlap_cache_test.h"
-
-using namespace std;
-using namespace PBD;
-using namespace ARDOUR;
-
-CPPUNIT_TEST_SUITE_REGISTRATION (PlaylistOverlapCacheTest);
-
-void
-PlaylistOverlapCacheTest::tearDown ()
-{
- _playlist.reset ();
- _source.reset ();
-
- TestNeedingSession::tearDown ();
-}
-
-void
-PlaylistOverlapCacheTest::basicTest ()
-{
- string const test_wav_path = "libs/ardour/test/test.wav";
-
- _playlist = PlaylistFactory::create (DataType::AUDIO, *_session, "test");
- _source = SourceFactory::createWritable (DataType::AUDIO, *_session, test_wav_path, "", false, 44100);
-
- PropertyList plist;
- plist.add (Properties::length, 256);
-
- boost::shared_ptr<Region> regionA = RegionFactory::create (_source, plist);
- regionA->set_name ("A");
- _playlist->add_region (regionA, 0);
-
-
- {
- Playlist::OverlapCache cache (_playlist.get ());
- Playlist::RegionList rl = cache.get (Evoral::Range<framepos_t> (0, 256));
- CPPUNIT_ASSERT_EQUAL (size_t (1), rl.size ());
- CPPUNIT_ASSERT_EQUAL (regionA, rl.front ());
-
- rl = cache.get (Evoral::Range<framepos_t> (-1000, 1000));
- CPPUNIT_ASSERT_EQUAL (size_t (1), rl.size ());
- CPPUNIT_ASSERT_EQUAL (regionA, rl.front ());
- }
-
- boost::shared_ptr<Region> regionB = RegionFactory::create (_source, plist);
- regionA->set_name ("B");
- _playlist->add_region (regionB, 53);
-
- {
- Playlist::OverlapCache cache (_playlist.get ());
- Playlist::RegionList rl = cache.get (Evoral::Range<framepos_t> (0, 256));
- CPPUNIT_ASSERT_EQUAL (size_t (2), rl.size ());
- rl.sort (RegionSortByPosition ());
- CPPUNIT_ASSERT_EQUAL (regionA, rl.front ());
- CPPUNIT_ASSERT_EQUAL (regionB, rl.back ());
-
- rl = cache.get (Evoral::Range<framepos_t> (260, 274));
- CPPUNIT_ASSERT_EQUAL (size_t (1), rl.size ());
- CPPUNIT_ASSERT_EQUAL (regionB, rl.front ());
- }
-}
-
-void
-PlaylistOverlapCacheTest::stressTest ()
-{
- string const test_wav_path = "libs/ardour/test/test.wav";
-
- _playlist = PlaylistFactory::create (DataType::AUDIO, *_session, "test");
- _source = SourceFactory::createWritable (DataType::AUDIO, *_session, test_wav_path, "", false, 44100);
-
- srand (42);
-
- int const num_regions = rand () % 256;
-
- for (int i = 0; i < num_regions; ++i) {
- PropertyList plist;
- plist.add (Properties::length, rand () % 32768);
- boost::shared_ptr<Region> r = RegionFactory::create (_source, plist);
- r->set_name (string_compose ("%1", i));
- _playlist->add_region (r, rand() % 32768);
- }
-
- Playlist::OverlapCache cache (_playlist.get ());
-
- int const tests = rand () % 256;
-
- for (int i = 0; i < tests; ++i) {
- framepos_t const start = rand () % 32768;
- framepos_t const length = rand () % 32768;
- framepos_t const end = start + length;
-
- Playlist::RegionList cached = cache.get (Evoral::Range<framepos_t> (start, end));
-
- Playlist::RegionList actual;
- Playlist::RegionList regions = _playlist->region_list().rlist();
- for (Playlist::RegionList::iterator j = regions.begin(); j != regions.end(); ++j) {
- if ((*j)->coverage (start, end) != OverlapNone) {
- actual.push_back (*j);
- }
- }
-
- cached.sort (RegionSortByPosition ());
- actual.sort (RegionSortByPosition ());
-
- CPPUNIT_ASSERT_EQUAL (actual.size (), cached.size ());
- Playlist::RegionList::iterator j = actual.begin ();
- Playlist::RegionList::iterator k = cached.begin ();
- for (; j != actual.end(); ++j, ++k) {
- CPPUNIT_ASSERT_EQUAL (*j, *k);
- }
- }
-}