diff --git a/test/engine2.js b/test/engine2.js index a80ef6e..75d4d09 100644 --- a/test/engine2.js +++ b/test/engine2.js @@ -125,5 +125,9 @@ describe('Engine: extension', function() { test.widget_midi_out(); test.virtual_midi_in(); test.virtual_midi_out(); + test.add_midi_in(); + test.add_midi_out(); + test.remove_midi_in(); + test.remove_midi_out(); it('Dummy AudioContext', function() { DOM.dispatchEvent({ name: 'keydown' }); }); }); diff --git a/test/tests.js b/test/tests.js index 3f9220a..8d44caf 100644 --- a/test/tests.js +++ b/test/tests.js @@ -101,5 +101,69 @@ module.exports = function(JZZ, PARAMS, DRIVER) { }); }, + add_midi_in: function() { + it('Add MIDI-In', function(done) { + var name = 'Virtual MIDI-In to add'; + var src = DRIVER.MidiSrc(name); + engine.refresh().onChange(function(arg) { + assert.equal(arg.inputs.added[0].name, name); + engine.onChange().disconnect(); + src.disconnect(); + done(); + }); + engine.refresh().and(function() { + src.connect(); + }); + }); + }, + + add_midi_out: function() { + it('Add MIDI-Out', function(done) { + var name = 'Virtual MIDI-Out to add'; + var dst = DRIVER.MidiDst(name); + engine.refresh().onChange(function(arg) { + assert.equal(arg.outputs.added[0].name, name); + engine.onChange().disconnect(); + dst.disconnect(); + done(); + }); + engine.refresh().and(function() { + dst.connect(); + }); + }); + }, + + remove_midi_in: function() { + it('Remove MIDI-In', function(done) { + var name = 'Virtual MIDI-In to remove'; + var src = DRIVER.MidiSrc(name); + src.connect(); + engine.refresh().onChange(function(arg) { + assert.equal(arg.inputs.removed[0].name, name); + engine.onChange().disconnect(); + done(); + }); + engine.refresh().and(function() { + src.disconnect(); + }); + }); + }, + + remove_midi_out: function() { + it('Remove MIDI-Out', function(done) { + var name = 'Virtual MIDI-Out to remove'; + var dst = DRIVER.MidiDst(name); + dst.connect(); + engine.refresh().onChange(function(arg) { + assert.equal(arg.outputs.removed[0].name, name); + engine.onChange().disconnect(); + done(); + }); + engine.refresh().and(function() { + dst.disconnect(); + }); + }); + } + }; };