Skip to content
Snippets Groups Projects
Commit e356c173 authored by Paul Kaplan's avatar Paul Kaplan
Browse files

Add tests for the audio effects

parent d1014d29
No related branches found
No related tags found
No related merge requests found
/* eslint-env jest */
/* global AudioNode AudioContext WebAudioTestAPI */
import 'web-audio-test-api';
WebAudioTestAPI.setState({
'OfflineAudioContext#startRendering': 'promise'
});
import AudioEffects from '../../../src/lib/audio/audio-effects';
import RobotEffect from '../../../src/lib/audio/effects/robot-effect';
import EchoEffect from '../../../src/lib/audio/effects/echo-effect';
import VolumeEffect from '../../../src/lib/audio/effects/volume-effect';
describe('Audio Effects manager', () => {
let audioContext = new AudioContext();
let audioBuffer = audioContext.createBuffer(1, 400, 44100);
test('changes buffer length and playback rate for faster effect', () => {
const audioEffects = new AudioEffects(audioBuffer, 'faster');
expect(audioEffects.audioContext._.length).toEqual(Math.floor(400 / 1.5));
expect(audioEffects.source.playbackRate.value).toEqual(1.5);
});
test('changes buffer length and playback rate for slower effect', () => {
const audioEffects = new AudioEffects(audioBuffer, 'slower');
expect(audioEffects.audioContext._.length).toEqual(Math.floor(400 / 0.5));
expect(audioEffects.source.playbackRate.value).toEqual(0.5);
});
test('changes buffer length for echo effect', () => {
const audioEffects = new AudioEffects(audioBuffer, 'echo');
expect(audioEffects.audioContext._.length).toBeGreaterThan(400);
});
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
});
});
describe('Effects', () => {
let audioContext;
beforeEach(() => {
audioContext = new AudioContext();
});
test('all effects provide an input and output that are connected', () => {
const robotEffect = new RobotEffect(audioContext, 0.5);
expect(robotEffect.input).toBeInstanceOf(AudioNode);
expect(robotEffect.output).toBeInstanceOf(AudioNode);
const echoEffect = new EchoEffect(audioContext, 0.5);
expect(echoEffect.input).toBeInstanceOf(AudioNode);
expect(echoEffect.output).toBeInstanceOf(AudioNode);
const volumeEffect = new VolumeEffect(audioContext, 0.5);
expect(volumeEffect.input).toBeInstanceOf(AudioNode);
expect(volumeEffect.output).toBeInstanceOf(AudioNode);
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment