UNPKG

audiokeys

Version:

A utility for creating QWERTY keyboards with support for different monophonic and polyphonic behaviors.

144 lines (108 loc) 4.16 kB
var assert = require('assert'); var AudioKeys = require('../src/AudioKeys.js'); describe('Priority', function() { describe('`last`', function() { it('should prioritize the last notes in the _keys array', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 2); keyboard.set('priority', 'last'); keyboard._addKey({ keyCode: 65 }); keyboard._addKey({ keyCode: 87 }); keyboard._addKey({ keyCode: 83 }); assert.equal(keyboard._state.buffer.length, 2); assert.equal(keyboard._state.buffer[0].keyCode, 87); assert.equal(keyboard._state.buffer[1].keyCode, 83); }); it('should retrigger an inactive note when it becomes active again', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 1); keyboard.set('priority', 'last'); keyboard._addKey({ keyCode: 65 }); keyboard._addKey({ keyCode: 87 }); var flag = false; keyboard.up( function() { flag = true; }); keyboard._removeKey({ keyCode: 87 }); assert.equal(flag, true); }); }); describe('`first`', function() { it('should prioritize the first notes in the _keys array', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 2); keyboard.set('priority', 'first'); keyboard._addKey({ keyCode: 65 }); keyboard._addKey({ keyCode: 87 }); keyboard._addKey({ keyCode: 83 }); assert.equal(keyboard._state.buffer.length, 2); assert.equal(keyboard._state.buffer[0].keyCode, 65); assert.equal(keyboard._state.buffer[1].keyCode, 87); }); it('should retrigger an inactive note when it becomes active again', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 1); keyboard.set('priority', 'first'); keyboard._addKey({ keyCode: 65 }); keyboard._addKey({ keyCode: 87 }); var flag = false; keyboard.up( function() { flag = true; }); keyboard._removeKey({ keyCode: 65 }); assert.equal(flag, true); }); }); describe('`highest`', function() { it('should prioritize the highest notes in the _keys array', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 2); keyboard.set('priority', 'highest'); keyboard._addKey({ keyCode: 79 }); // note = 73 keyboard._addKey({ keyCode: 84 }); // note = 66 keyboard._addKey({ keyCode: 89 }); // note = 68 assert.equal(keyboard._state.buffer.length, 2); assert.equal(keyboard._state.buffer[0].keyCode, 79); assert.equal(keyboard._state.buffer[1].keyCode, 89); }); it('should retrigger an inactive note when it becomes active again', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 1); keyboard.set('priority', 'highest'); keyboard._addKey({ keyCode: 65 }); keyboard._addKey({ keyCode: 87 }); var flag = false; keyboard.up( function() { flag = true; }); keyboard._removeKey({ keyCode: 87 }); assert.equal(flag, true); }); }); describe('`lowest`', function() { it('should prioritize the lowest notes in the _keys array', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 2); keyboard.set('priority', 'lowest'); keyboard._addKey({ keyCode: 84 }); keyboard._addKey({ keyCode: 79 }); keyboard._addKey({ keyCode: 89 }); assert.equal(keyboard._state.buffer.length, 2); assert.equal(keyboard._state.buffer[0].keyCode, 84); assert.equal(keyboard._state.buffer[1].keyCode, 89); }); it('should retrigger an inactive note when it becomes active again', function() { var keyboard = new AudioKeys(); keyboard.set('polyphony', 1); keyboard.set('priority', 'lowest'); keyboard._addKey({ keyCode: 87 }); keyboard._addKey({ keyCode: 65 }); var flag = false; keyboard.up( function() { flag = true; }); keyboard._removeKey({ keyCode: 65 }); assert.equal(flag, true); }); }); });