From 2890609053d9480133a21728a369f7ffbbe2847c Mon Sep 17 00:00:00 2001
From: Eric Rosenbaum <eric.rosenbaum@gmail.com>
Date: Tue, 30 Jul 2019 11:38:52 -0400
Subject: [PATCH] Add unit test for audio effect adjustedTrim times

---
 test/unit/util/audio-effects.test.js | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/test/unit/util/audio-effects.test.js b/test/unit/util/audio-effects.test.js
index ba6ea6b8f..330fe12a1 100644
--- a/test/unit/util/audio-effects.test.js
+++ b/test/unit/util/audio-effects.test.js
@@ -28,6 +28,22 @@ describe('Audio Effects manager', () => {
         expect(audioEffects.audioContext._.length).toBeGreaterThan(400);
     });
 
+    test('updates the trim positions after an effect has changed the length of selection', () => {
+        const slowerEffect = new AudioEffects(audioBuffer, 'slower', 0.25, 0.75);
+        expect(slowerEffect.adjustedTrimStartSeconds).toEqual(slowerEffect.trimStartSeconds);
+        expect(slowerEffect.adjustedTrimEndSeconds).toBeGreaterThan(slowerEffect.trimEndSeconds);
+
+        const fasterEffect = new AudioEffects(audioBuffer, 'faster', 0.25, 0.75);
+        expect(fasterEffect.adjustedTrimStartSeconds).toEqual(fasterEffect.trimStartSeconds);
+        expect(fasterEffect.adjustedTrimEndSeconds).toBeLessThan(fasterEffect.trimEndSeconds);
+
+        // Some effects do not change the length of the selection
+        const fadeEffect = new AudioEffects(audioBuffer, 'fade in', 0.25, 0.75);
+        expect(fadeEffect.adjustedTrimStartSeconds).toEqual(fadeEffect.trimStartSeconds);
+        // Should be within one millisecond (flooring can change the duration by one sample)
+        expect(fadeEffect.adjustedTrimEndSeconds).toBeCloseTo(fadeEffect.trimEndSeconds, 3);
+    });
+
     test.skip('process starts the offline rendering context and returns a promise', () => {
         // @todo haven't been able to get web audio test api to actually run render
     });
-- 
GitLab