diff --git a/tests/FilesT.cpp b/tests/FilesT.cpp index c528d4c4..25dff03d 100644 --- a/tests/FilesT.cpp +++ b/tests/FilesT.cpp @@ -429,3 +429,19 @@ TEST_CASE("[Files] Off modes") REQUIRE( !normalVoice->isFree() ); } + +TEST_CASE("[Files] Looped regions taken from files and possibly overriden") +{ + sfz::Synth synth; + synth.setSamplesPerBlock(256); + synth.setSampleRate(44100); + synth.loadSfzFile(fs::current_path() / "tests/TestFiles/looped_regions.sfz"); + REQUIRE( synth.getNumRegions() == 3 ); + REQUIRE( synth.getRegionView(0)->loopMode == SfzLoopMode::loop_continuous ); + REQUIRE( synth.getRegionView(1)->loopMode == SfzLoopMode::no_loop ); + REQUIRE( synth.getRegionView(2)->loopMode == SfzLoopMode::loop_continuous ); + + REQUIRE( synth.getRegionView(0)->loopRange == sfz::Range{ 77554, 186582 } ); + REQUIRE( synth.getRegionView(1)->loopRange == sfz::Range{ 77554, 186582 } ); + REQUIRE( synth.getRegionView(2)->loopRange == sfz::Range{ 4, 124 } ); +} diff --git a/tests/TestFiles/looped_flute.wav b/tests/TestFiles/looped_flute.wav new file mode 100755 index 00000000..972a9f1a Binary files /dev/null and b/tests/TestFiles/looped_flute.wav differ diff --git a/tests/TestFiles/looped_regions.sfz b/tests/TestFiles/looped_regions.sfz new file mode 100644 index 00000000..38588633 --- /dev/null +++ b/tests/TestFiles/looped_regions.sfz @@ -0,0 +1,3 @@ + sample=looped_flute.wav + loop_mode=no_loop sample=looped_flute.wav + loop_start=4 loop_end=124 sample=looped_flute.wav