added audioplayer contrib module

This commit is contained in:
Bachir Soussi Chiadmi
2017-11-25 16:05:32 +01:00
parent ff23c45e43
commit 0942e9a212
174 changed files with 21682 additions and 0 deletions
+108
View File
@@ -0,0 +1,108 @@
import PeakCache from '../src/peakcache';
describe('PeakCache:', function() {
var peakcache;
var test_length = 200;
var test_length2 = 300;
var test_start = 50;
var test_end = 100;
var test_start2 = 100;
var test_end2 = 120;
var test_start3 = 120;
var test_end3 = 150;
var window_size = 20;
function __createPeakCache() {
peakcache = new PeakCache();
}
beforeEach(function (done) {
__createPeakCache();
done();
});
/** @test {PeakCache#addRangeToPeakCache} */
it('empty cache returns full range', function() {
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_start);
expect(newranges[0][1]).toEqual(test_end);
});
/** @test {PeakCache#addRangeToPeakCache} */
it('different length clears cache', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
var newranges = peakcache.addRangeToPeakCache(test_length2, test_start, test_end);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_start);
expect(newranges[0][1]).toEqual(test_end);
});
/** @test {PeakCache#addRangeToPeakCache} */
it('consecutive calls return no ranges', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end);
expect(newranges.length).toEqual(0);
});
/** @test {PeakCache#addRangeToPeakCache} */
it('sliding window returns window sized range', function() {
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_start);
expect(newranges[0][1]).toEqual(test_end);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start + window_size, test_end + window_size);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end);
expect(newranges[0][1]).toEqual(test_end + window_size);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start + window_size * 2, test_end + window_size * 2);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end + window_size);
expect(newranges[0][1]).toEqual(test_end + window_size * 2);
});
/** @test {PeakCache#addRangeToPeakCache} */
/** @test {PeakCache#getCacheRanges} */
it('disjoint set creates two ranges', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
peakcache.addRangeToPeakCache(test_length, test_start3, test_end3);
var ranges = peakcache.getCacheRanges();
expect(ranges.length).toEqual(2);
expect(ranges[0][0]).toEqual(test_start);
expect(ranges[0][1]).toEqual(test_end);
expect(ranges[1][0]).toEqual(test_start3);
expect(ranges[1][1]).toEqual(test_end3);
});
/** @test {PeakCache#addRangeToPeakCache} */
/** @test {PeakCache#getCacheRanges} */
it('filling in disjoint sets coalesces', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
peakcache.addRangeToPeakCache(test_length, test_start3, test_end3);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start, test_end3);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end);
expect(newranges[0][1]).toEqual(test_start3);
var ranges = peakcache.getCacheRanges();
expect(ranges.length).toEqual(1);
expect(ranges[0][0]).toEqual(test_start);
expect(ranges[0][1]).toEqual(test_end3);
});
/** @test {PeakCache#addRangeToPeakCache} */
/** @test {PeakCache#getCacheRanges} */
it('filling in disjoint sets coalesces / edge cases', function() {
peakcache.addRangeToPeakCache(test_length, test_start, test_end);
peakcache.addRangeToPeakCache(test_length, test_start3, test_end3);
var newranges = peakcache.addRangeToPeakCache(test_length, test_start2, test_end2);
expect(newranges.length).toEqual(1);
expect(newranges[0][0]).toEqual(test_end);
expect(newranges[0][1]).toEqual(test_start3);
var ranges = peakcache.getCacheRanges();
expect(ranges.length).toEqual(1);
expect(ranges[0][0]).toEqual(test_start);
expect(ranges[0][1]).toEqual(test_end3);
});
});
@@ -0,0 +1,118 @@
import WaveSurfer from '../src/wavesurfer.js';
/** @test {WaveSurfer} */
describe('WaveSurfer/plugin API:', () => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
let waveformDiv;
let dummyPlugin;
let wavesurfer;
// clean up after each test
afterEach(done => {
wavesurfer.destroy();
waveformDiv.parentNode.removeChild(waveformDiv);
done();
});
// utility function to generate a mock plugin object
function mockPlugin(name, deferInit = false) {
class MockPlugin {
constructor(params, ws) {
this.ws = ws;
// using the instance factory unfortunately makes it
// difficult to use the spyOn function, so we use this
// instead
this.isInitialised = false;
}
init() {
this.isInitialised = true;
}
destroy() { }
}
return {
name,
deferInit,
staticProps: {
[`${name}Static`]: 'static property value'
},
instance: MockPlugin
};
}
// utility function to generate wavesurfer instances for testing
function __createWaveform(options = {}) {
waveformDiv = document.createElement('div');
document.getElementsByTagName('body')[0].appendChild(waveformDiv);
wavesurfer = WaveSurfer.create(Object.assign({
container: waveformDiv
}, options));
wavesurfer.load('/base/spec/support/demo.wav');
}
// plugin methods
/** @test {WaveSurfer#addPlugin} */
it('addPlugin adds staticProps and correctly builds and instantiates plugin class', () => {
dummyPlugin = mockPlugin('dummy');
__createWaveform();
wavesurfer.addPlugin(dummyPlugin);
expect(wavesurfer.dummyStatic).toEqual(dummyPlugin.staticProps.dummyStatic);
expect(wavesurfer.dummy.ws).toEqual(wavesurfer);
expect(typeof Object.getPrototypeOf(wavesurfer.dummy).on).toEqual('function');
});
/** @test {WaveSurfer#initPlugin} */
it('initPlugin calls init function of the plugin and adds its name to the initialisedPluginList', () => {
dummyPlugin = mockPlugin('dummy');
__createWaveform();
wavesurfer.addPlugin(dummyPlugin);
spyOn(wavesurfer.dummy, 'init');
wavesurfer.initPlugin('dummy');
expect(wavesurfer.dummy.init).toHaveBeenCalled();
expect(wavesurfer.initialisedPluginList.dummy).toBeTrue();
});
/** @test {WaveSurfer#destroyPlugin} */
it('destroyPlugin calls plugin destroy function and removes the plugin name from the initialisedPluginList', () => {
dummyPlugin = mockPlugin('dummy');
__createWaveform();
wavesurfer.addPlugin(dummyPlugin);
wavesurfer.initPlugin('dummy');
spyOn(wavesurfer.dummy, 'destroy');
wavesurfer.destroyPlugin('dummy');
expect(wavesurfer.dummy.destroy).toHaveBeenCalled();
expect(wavesurfer.initialisedPluginList.dummy).toBeUndefined();
});
// auto-adding and initialising of plugins (registerPlugins)
/** @test {WaveSurfer#registerPlugins} */
it('registerPlugin adds a plugin but does not call plugin init function if the plugin property deferInit is truethy', () => {
dummyPlugin = mockPlugin('dummy', true);
__createWaveform({
plugins: [
dummyPlugin
]
});
expect(wavesurfer.dummyStatic).toEqual(dummyPlugin.staticProps.dummyStatic);
expect(wavesurfer.dummy.ws).toEqual(wavesurfer);
expect(wavesurfer.dummy.isInitialised).toBeFalse();
});
/** @test {WaveSurfer#registerPlugins} */
it('registerPlugin adds a plugin ands calls plugin init function if the plugin property deferInit is falsey', () => {
dummyPlugin = mockPlugin('dummy');
__createWaveform({
plugins: [
dummyPlugin
]
});
expect(wavesurfer.dummyStatic).toEqual(dummyPlugin.staticProps.dummyStatic);
expect(wavesurfer.dummy.ws).toEqual(wavesurfer);
expect(wavesurfer.dummy.isInitialised).toBeTrue();
});
});
Binary file not shown.
+29
View File
@@ -0,0 +1,29 @@
import WaveSurfer from '../src/wavesurfer.js';
/** @test {util} */
describe('util:', function() {
/** @test {getId} */
it('getId returns a random string', function() {
expect(WaveSurfer.util.getId()).toStartWith('wavesurfer_');
});
/** @test {min} */
it('min returns the smallest number in the provided array', function() {
expect(WaveSurfer.util.min([0, 1, 1.1, 100, -1])).toEqual(-1);
});
/** @test {min} */
it('min returns +Infinity for an empty array', function() {
expect(WaveSurfer.util.min([])).toEqual(+Infinity);
});
/** @test {max} */
it('max returns the largest number in the provided array', function() {
expect(WaveSurfer.util.max([0, 1, 1.1, 100, -1])).toEqual(100);
});
/** @test {max} */
it('max returns -Infinity for an empty array', function() {
expect(WaveSurfer.util.max([])).toEqual(-Infinity);
});
});
+113
View File
@@ -0,0 +1,113 @@
import WaveSurfer from '../src/wavesurfer.js';
/** @test {WaveSurfer} */
describe('WaveSurfer/playback:', function () {
var wavesurfer;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
/*
* Handle creating wavesurfer ui requirements
*/
function __createWaveform() {
var waveformDiv = document.createElement('div');
waveformDiv.id = 'waveform';
document.getElementsByTagName('body')[0].appendChild(waveformDiv);
return WaveSurfer.create({
container: '#waveform',
waveColor: 'violet',
progressColor: 'purple'
});
}
beforeAll(function (done) {
wavesurfer = __createWaveform();
wavesurfer.load('/base/spec/support/demo.wav');
wavesurfer.on('ready', function () {
done();
});
});
beforeEach(function () {
wavesurfer.seekTo(0);
});
afterAll(function () {
wavesurfer.destroy();
});
/**
* @test {WaveSurfer#play}
* @test {WaveSurfer#isPlaying}
*/
it('should play', function () {
wavesurfer.play();
expect(wavesurfer.isPlaying()).toBeTrue();
});
/**
* @test {WaveSurfer#play}
* @test {WaveSurfer#isPlaying}
* @test {WaveSurfer#pause}
*/
it('should pause', function () {
wavesurfer.play();
expect(wavesurfer.isPlaying()).toBeTrue();
wavesurfer.pause();
expect(wavesurfer.isPlaying()).toBeFalse();
});
/**
* @test {WaveSurfer#playPause}
* @test {WaveSurfer#isPlaying}
*/
it('should play or pause', function () {
wavesurfer.playPause();
expect(wavesurfer.isPlaying()).toBeTrue();
wavesurfer.playPause();
expect(wavesurfer.isPlaying()).toBeFalse();
});
/** @test {WaveSurfer#getDuration} */
it('should get duration', function () {
var duration = parseInt(wavesurfer.getDuration(), 10);
expect(duration).toBeNumber();
});
/** @test {WaveSurfer#toggleMute} */
it('should toggle mute', function () {
wavesurfer.toggleMute();
expect(wavesurfer.isMuted).toBeTrue();
wavesurfer.toggleMute();
expect(wavesurfer.isMuted).toBeFalse();
});
/** @test {WaveSurfer#setMute} */
it('should set mute', function () {
wavesurfer.setMute(true);
expect(wavesurfer.isMuted).toBeTrue();
wavesurfer.setMute(false);
expect(wavesurfer.isMuted).toBeFalse();
});
/** @test {WaveSurfer#zoom} */
it('should set zoom parameters', function () {
wavesurfer.zoom(20);
expect(wavesurfer.params.minPxPerSec).toEqual(20);
expect(wavesurfer.params.scrollParent).toBe(true);
});
/** @test {WaveSurfer#zoom} */
it('should set unzoom parameters', function () {
wavesurfer.zoom(false);
expect(wavesurfer.params.minPxPerSec).toEqual(wavesurfer.defaultParams.minPxPerSec);
expect(wavesurfer.params.scrollParent).toBe(false);
});
});