From 5e48caca508c3296c2ed4571af1b4634bb0bac11 Mon Sep 17 00:00:00 2001 From: Sema Date: Fri, 30 Aug 2019 22:55:04 -0400 Subject: [PATCH] Added clone tests --- test/engine3.js | 2 ++ test/tests.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/test/engine3.js b/test/engine3.js index 61d5156..a3fb50b 100644 --- a/test/engine3.js +++ b/test/engine3.js @@ -19,6 +19,8 @@ describe('Engine: webmidi', function() { test.virtual_midi_out(); test.virtual_midi_in_busy(); test.virtual_midi_out_busy(); + test.clone_midi_in(); + test.clone_midi_out(); test.add_midi_in(); test.add_midi_out(); test.remove_midi_in(); diff --git a/test/tests.js b/test/tests.js index 349eedb..e084149 100644 --- a/test/tests.js +++ b/test/tests.js @@ -168,7 +168,7 @@ module.exports = function(JZZ, PARAMS, DRIVER) { var src = DRIVER.MidiSrc(name); src.connect(); src.busy = true; - engine.openMidiIn(name).or(function() { src.connect(); done(); }); + engine.openMidiIn(name).or(function() { src.disconnect(); done(); }); }); }, @@ -178,7 +178,66 @@ module.exports = function(JZZ, PARAMS, DRIVER) { var dst = DRIVER.MidiDst(name); dst.connect(); dst.busy = true; - engine.openMidiOut(name).or(function() { dst.connect(); done(); }); + engine.openMidiOut(name).or(function() { dst.disconnect(); done(); }); + }); + }, + + clone_midi_in: function() { + it('Clone MIDI-In', function(done) { + var port1, port2; + var name = 'Virtual MIDI-In clone'; + var src = DRIVER.MidiSrc(name); + src.connect(); + port1 = engine.openMidiIn(name); + port2 = engine.openMidiIn(name); + assert.notEqual(port1, port2); + var count = 3; + function onmidi(msg) { + count--; + if (!count) { + port2.close(); + src.disconnect(); + done(); + } + } + port1.connect(onmidi); + port2.connect(onmidi); + setTimeout(function() { + src.emit([0x90, 0x40, 0x7f]); + setTimeout(function() { + port1.close(); + src.emit([0x80, 0x40, 0x7f]); + }, 10); + }, 10); + }); + }, + + clone_midi_out: function() { + it('Clone MIDI-Out', function(done) { + var port1, port2; + var name = 'Virtual MIDI-Out clone'; + var dst = DRIVER.MidiDst(name); + dst.connect(); + port1 = engine.openMidiOut(name); + port2 = engine.openMidiOut(name); + assert.notEqual(port1, port2); + var count = 3; + dst.receive = function(msg) { + count--; + if (!count) { + port2.close(); + dst.disconnect(); + done(); + } + } + setTimeout(function() { + port1.send([0x90, 0x40, 0x7f]); + port2.send([0x90, 0x50, 0x7f]); + setTimeout(function() { + port1.close(); + port2.send([0x80, 0x50, 0x7f]); + }, 10); + }, 10); }); },