From db063a6eb80f4e23d686e63b2a98fca05dd1ae01 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 5 Sep 2019 22:07:41 +0200 Subject: [PATCH] Unit test all RegionEquivalence options --- .../test/playlist_equivalent_regions_test.cc | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/libs/ardour/test/playlist_equivalent_regions_test.cc b/libs/ardour/test/playlist_equivalent_regions_test.cc index f3b7e1b12e..e7d7117414 100644 --- a/libs/ardour/test/playlist_equivalent_regions_test.cc +++ b/libs/ardour/test/playlist_equivalent_regions_test.cc @@ -19,6 +19,7 @@ #include "ardour/playlist.h" #include "ardour/playlist_factory.h" +#include "ardour/rc_configuration.h" #include "ardour/region.h" #include "playlist_equivalent_regions_test.h" @@ -86,11 +87,39 @@ PlaylistEquivalentRegionsTest::multiLayerTest () _playlist_b->add_region (_r[2], 42); _playlist_b->add_region (_r[3], 42); - /* Look for equivalents to _r[0] on _playlist_b */ + RegionEquivalence re = Config->get_region_equivalence(); + + /* Look for equivalents to _r[0] on _playlist_b + * using different equivalence modes */ + + Config->set_region_equivalence (Exact); vector > e; _playlist_b->get_equivalent_regions (_r[0], e); - /* That should be _r[2] and _r[3] */ CPPUNIT_ASSERT_EQUAL (size_t (2), e.size ()); CPPUNIT_ASSERT ((e.front() == _r[2] && e.back() == _r[3]) || (e.front() == _r[3] && e.back() == _r[2])); + + Config->set_region_equivalence (Enclosed); + e.clear (); + _playlist_b->get_equivalent_regions (_r[0], e); + /* That should be _r[2] and _r[3] */ + CPPUNIT_ASSERT_EQUAL (size_t (2), e.size ()); + CPPUNIT_ASSERT ((e.front() == _r[2] && e.back() == _r[3]) || (e.front() == _r[3] && e.back() == _r[2])); + + Config->set_region_equivalence (Overlap); + e.clear (); + _playlist_b->get_equivalent_regions (_r[0], e); + /* That should be _r[2] and _r[3] */ + CPPUNIT_ASSERT_EQUAL (size_t (2), e.size ()); + CPPUNIT_ASSERT ((e.front() == _r[2] && e.back() == _r[3]) || (e.front() == _r[3] && e.back() == _r[2])); + + Config->set_region_equivalence (LayerTime); + e.clear (); + _playlist_b->get_equivalent_regions (_r[0], e); + /* That should be _r[2] */ + CPPUNIT_ASSERT_EQUAL (size_t (1), e.size ()); + CPPUNIT_ASSERT (e.front() == _r[2]); + + /* restore original setting */ + Config->set_region_equivalence (re); }