Best JavaScript code snippet using ava
generate-smf.js
Source: generate-smf.js
1/*2 * Generate binary MIDI data from an array of intermediate MIDI-events.3 *4 * Copyright (C) 2010-2021 Adam Nielsen <malvineous@shikadi.net>5 *6 * This program is free software: you can redistribute it and/or modify7 * it under the terms of the GNU General Public License as published by8 * the Free Software Foundation, either version 3 of the License, or9 * (at your option) any later version.10 *11 * This program is distributed in the hope that it will be useful,12 * but WITHOUT ANY WARRANTY; without even the implied warranty of13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14 * GNU General Public License for more details.15 *16 * You should have received a copy of the GNU General Public License17 * along with this program. If not, see <http://www.gnu.org/licenses/>.18 */19import Debug from '../debug.js';20const debug = Debug.extend('util:midi:generate-smf');21import { RecordBuffer, RecordType } from '@camoto/record-io-buffer';22/**23 * Convert the given MIDI-events into Standard MIDI Format (SMF) binary data.24 *25 * The output data is the same as you'd find in the MTrk block of a .mid file.26 *27 * If the format being written doesn't support certain events (like SysEx data)28 * simply filter() out those events before calling this function.29 *30 * This function will not write `tempo` events as these can differ between31 * formats (especially those that do not support meta events) so the caller must32 * replace these with another MIDI-event type before calling this function.33 * The UtilMIDI.tempoAsMetaEvent() function can be used for this if the format34 * supports SMF meta event type 0x51 for tempo changes, as found in .mid files.35 *36 * @param {Array} midiEvents37 * The MIDI-events to process. UtilMIDI.generateMIDI() will produce an array38 * in the correct format.39 *40 * @param {object} options41 * Options that control how the data is produced.42 *43 * @param {boolean} options.useRunningStatus44 * `true` to use MIDI running status, omitting repeated control bytes.45 * `false` to always emit full MIDI control bytes.46 *47 * @alias UtilMIDI.generateSMF48 */49export default function generateSMF(midiEvents, options = { useRunningStatus: true })50{51 let bin = new RecordBuffer(65536);52 let pendingDelay = 0;53 function flushDelay() {54 bin.write(RecordType.int.midi, pendingDelay);55 pendingDelay = 0;56 }57 let lastCommand = 0;58 function writeCommand(cmd, channel) {59 const nextCommand = cmd | channel;60 if (options.useRunningStatus && (nextCommand === lastCommand)) return;61 bin.write(RecordType.int.u8, nextCommand);62 lastCommand = nextCommand;63 }64 for (const mev of midiEvents) {65 switch (mev.type) {66 case 'channelPressure':67 if (mev.channel === undefined) {68 debug('Tried to write MIDI-event with no channel:', mev);69 throw new Error(`Tried to write MIDI-event with no channel.`);70 }71 flushDelay();72 writeCommand(0xD0, mev.channel);73 bin.write(RecordType.int.u8, mev.pressure);74 break;75 case 'controller':76 if (mev.channel === undefined) {77 debug('Tried to write MIDI-event with no channel:', mev);78 throw new Error(`Tried to write MIDI-event with no channel.`);79 }80 flushDelay();81 writeCommand(0xB0, mev.channel);82 bin.write(RecordType.int.u8, mev.controller);83 bin.write(RecordType.int.u8, mev.value);84 break;85 case 'delay':86 // TODO: If delay is in ticks, and we know how many usPerTick and ticksPerQuarterNote,87 // can we convert this value into ticksPerQuarterNote units?88 pendingDelay += mev.delay;89 break;90 case 'meta':91 flushDelay();92 bin.write(RecordType.int.u8, 0xFF);93 bin.write(RecordType.int.u8, mev.metaType);94 bin.write(RecordType.int.midi, mev.data.length);95 bin.put(mev.data);96 break;97 case 'noteOff': {98 if (mev.channel === undefined) {99 debug('Tried to write MIDI-event with no channel:', mev);100 throw new Error(`Tried to write MIDI-event with no channel.`);101 }102 flushDelay();103 let velocity;104 if (options.useRunningStatus && (lastCommand === (0x90 | mev.channel))) {105 // Last command was a note-on, running status is active, so make this106 // a note-on as well to take advantage of running status.107 velocity = 0;108 } else {109 velocity = mev.velocity || 64;110 writeCommand(0x80, mev.channel);111 }112 bin.write(RecordType.int.u8, mev.note);113 bin.write(RecordType.int.u8, velocity);114 break;115 }116 case 'noteOn':117 if (mev.channel === undefined) {118 debug('Tried to write MIDI-event with no channel:', mev);119 throw new Error(`Tried to write MIDI-event with no channel.`);120 }121 flushDelay();122 writeCommand(0x90, mev.channel);123 bin.write(RecordType.int.u8, mev.note);124 bin.write(RecordType.int.u8, mev.velocity);125 break;126 case 'notePressure':127 if (mev.channel === undefined) {128 debug('Tried to write MIDI-event with no channel:', mev);129 throw new Error(`Tried to write MIDI-event with no channel.`);130 }131 flushDelay();132 writeCommand(0xA0, mev.channel);133 bin.write(RecordType.int.u8, mev.pressure);134 bin.write(RecordType.int.u8, mev.note);135 break;136 case 'patch':137 if (mev.channel === undefined) {138 debug('Tried to write MIDI-event with no channel:', mev);139 throw new Error(`Tried to write MIDI-event with no channel.`);140 }141 flushDelay();142 writeCommand(0xC0, mev.channel);143 bin.write(RecordType.int.u8, mev.patch);144 break;145 case 'pitchbend':146 if (mev.channel === undefined) {147 debug('Tried to write MIDI-event with no channel:', mev);148 throw new Error(`Tried to write MIDI-event with no channel.`);149 }150 flushDelay();151 writeCommand(0xE0, mev.channel);152 bin.write(RecordType.int.u8, mev.pitchbend & 0x7F);153 bin.write(RecordType.int.u8, (mev.pitchbend >> 7) & 0x7F);154 break;155 case 'sysex':156 flushDelay();157 writeCommand(0xF0, mev.sysexType);158 bin.write(RecordType.int.midi, mev.data.length);159 bin.put(mev.data);160 break;161 case 'tempo':162 // Since different formats handle tempo changes differently, we require163 // the caller to replace tempo events before passing the event list to164 // us. For General MIDI formats, UtilMIDI.tempoAsMetaEvent() can do165 // this.166 throw new Error('MIDI "tempo" events must be replaced with a '167 + 'format-specific event before calling generateSMF(), e.g. with '168 + 'UtilMIDI.tempoAsMetaEvent().');169 default:170 throw new Error(`MIDI events of type "${mev.type}" not implemented in generateSMF().`);171 }172 }173 return bin.getU8();...
updateitem.js
Source: updateitem.js
1UpdateItemForm = Ext.extend(Ext.Window ,{2 form : null,3 resource : null,4 constructor:function(a){5 if(a==null){6 a={};7 }8 Ext.apply(this,a);9 this.initComponents();10 UpdateItemForm.superclass.constructor.call(this,{11 id:'updateSort',12 modal:true,13 resizable:false,14 width:document.documentElement.clientWidth-885,15 height:document.documentElement.clientHeight-330,16 items:[{17 columnWidth:1,18 items:[19 this.form20 ]21 }],22 title:'导èªæ¨¡æ¿ç»´æ¤',23 renderTo : "mainDiv"24 }); 25 },26 initComponents:function(){27 var sid = this.sid;28 var moduleName = this.moduleName;29 var channelSid=this.channelSid;30 var channelFlush = this.channelSid;31 32 33 var data = new Ext.data.JsonStore({34 url:__ctxPath +"/channel/channeltree", 35 autoLoad: true,36 fields : [ "id","text"]37 });38 data.on('load',function(){Ext.getCmp('channelSid').setValue(channelSid);});39 40 this.form = new Ext.FormPanel({41 xtype:"form",42 id:"updateSortForm",43 labelWidth:80,44 labelAlign:"left",45 layout:"form",46 autoScroll : true,47 containerscroll: true,48 height:document.documentElement.clientHeight-362,49 width:document.documentElement.clientWidth-900,50 bbar:new Ext.Toolbar({51 height:30,52 buttonAlign:'center',53 items:[54 {55 text:"ä¿®æ¹",56 ctCls: 'x-btn-over',57 height:20,58 width:40,59 handler:updateSort60 },61 {62 text:"åæ¶",63 height:20,64 width:40,65 ctCls: 'x-btn-over',66 handler:function(){67 Ext.getCmp('updateSort').close();68 }69 }70 ]71 }),72 items:[73 {74 xtype:"textfield",75 fieldLabel:"sid",76 value:sid,77 id : "sid",78 name : "sid",79 hidden:true80 },81 {82 xtype:"textfield",83 fieldLabel:"channelFlush",84 value:channelFlush,85 id : "channelFlush",86 name : "channelFlush",87 hidden:true88 },89 {90 xtype: 'combo',91 fieldLabel:"å½å±é¢é",92 anchor:"95%",93 id : "channelSid",94 hiddenName: "isValid",95 triggerAction : "all",96 editable : false,97 displayField : "text",98 valueField : "id",99 store : data,100 mode : 'local'101 },102 {103 xtype:"textfield",104 fieldLabel:"模æ¿å称",105 anchor:"95%",106 id : "sortName",107 name : "sortName",108 value:moduleName,109 allowBlank: false110 }111 ]112 113 });114 115 function updateSort(){116 var form = Ext.getCmp("updateSortForm").getForm();117 var sortName=Ext.get("sortName").dom.value;118 var sid=Ext.get("sid").dom.value;119 if(form.isValid()){120 form.submit({121 waitMsg : "æ£å¨æ交æ°æ®â¦â¦",122 url : __ctxPath + "/navSort/updateSort",123 params : {124 _method : "POST", 125 shopChannelsSid:Ext.getCmp("channelSid").getValue(),126 },127 success :function(form,action){128 var shopChannelsSid=Ext.getCmp("channelFlush").getValue();129 Ext.getCmp('updateSort').close();130 NavSortView.findById(shopChannelsSid);131 Ext.Msg.alert('ä¿¡æ¯æ示','æä½æå');132 }133 });134 }135 }136 137 }
...
flush.test.js
Source: flush.test.js
1// @flow2import { actionChannel, flush, put } from 'redux-saga/effects';3import expectSaga from 'expectSaga';4import * as m from 'expectSaga/matchers';5import { dynamic } from 'expectSaga/providers';6const fakeChannel = {7 take() {},8 close() {},9};10function* saga() {11 const channel = yield actionChannel('FOO');12 const value = yield flush(channel);13 yield put({ type: 'DONE', payload: value });14}15const actionChannelProvider = { actionChannel: () => fakeChannel };16test('uses provided value for `flush`', () =>17 expectSaga(saga)18 .provide({19 actionChannel: actionChannelProvider.actionChannel,20 flush(channel, next) {21 if (channel === fakeChannel) {22 return 'flushed';23 }24 return next();25 },26 })27 .put({ type: 'DONE', payload: 'flushed' })28 .run());29test('uses static provided values from redux-saga/effects', () =>30 expectSaga(saga)31 .provide([[flush(fakeChannel), 'flushed'], actionChannelProvider])32 .put({ type: 'DONE', payload: 'flushed' })33 .run());34test('uses static provided values from matchers', () =>35 expectSaga(saga)36 .provide([[m.flush(fakeChannel), 'flushed'], actionChannelProvider])37 .put({ type: 'DONE', payload: 'flushed' })38 .run());39test('uses dynamic values for static providers', () =>40 expectSaga(saga)41 .provide([42 [m.flush(fakeChannel), dynamic(() => 'flushed')],43 actionChannelProvider,44 ])45 .put({ type: 'DONE', payload: 'flushed' })46 .run());47test('dynamic values have access to channel', () =>48 expectSaga(saga)49 .provide([50 [51 m.flush(fakeChannel),52 dynamic(channel => {53 expect(channel).toBe(fakeChannel);54 return 'flushed';55 }),56 ],57 actionChannelProvider,58 ])59 .put({ type: 'DONE', payload: 'flushed' })...
Using AI Code Generation
1var amqp = require('amqplib/callback_api');2 conn.createChannel(function(err, ch) {3 var q = 'hello';4 var msg = 'Hello World!';5 ch.assertQueue(q, {durable: false});6 ch.sendToQueue(q, new Buffer(msg));7 console.log(" [x] Sent %s", msg);8 });9 setTimeout(function() { conn.close(); process.exit(0) }, 500);10});11var amqp = require('amqplib/callback_api');12 conn.createChannel(function(err, ch) {13 var ex = 'logs';14 var msg = 'Hello World!';15 ch.assertExchange(ex, 'fanout', {durable: false});16 ch.publish(ex, '', new Buffer(msg));17 console.log(" [x] Sent %s", msg);18 });19 setTimeout(function() { conn.close(); process.exit(0) }, 500);20});
Using AI Code Generation
1var channel = require('cordova/channel');2channel.flush();3var channel = require('cordova/channel');4channel.join(function() {5});6var channel = require('cordova/channel');7channel.join(function() {8}, function() {9});10var channel = require('cordova/channel');11channel.join(function() {12}, function() {13}, function() {14});15var channel = require('cordova/channel');16channel.join(function() {17}, function() {18}, function() {19}, function() {20});21var channel = require('cordova/channel');22channel.join(function() {
Using AI Code Generation
1var channel = require("vertx/channel");2var ch = channel.create();3var count = 0;4ch.handler(function() {5count++;6});7ch.flush();8console.log(count);
Using AI Code Generation
1channel.flush(function(err) {2 if (err) {3 console.log('Error: ' + err);4 } else {5 console.log('Data flushed successfully.');6 }7});8channel.close(function(err) {9 if (err) {10 console.log('Error: ' + err);11 } else {12 console.log('Channel closed successfully.');13 }14});15channel.on('open', function() {16 console.log('Channel opened successfully.');17});18channel.on('data', function(data) {19 console.log('Data received: ' + data);20});
Using AI Code Generation
1var channel = require('cordova/channel');2channel.flush();3var channel = require('cordova/channel');4channel.join(function(){5 console.log('executed before device is ready');6}, 20);7var channel = require('cordova/channel');8channel.leave(function(){9 console.log('executed after device is ready');10}, 20);11var channel = require('cordova/channel');12channel.createSticky('onCordovaInfoReady');
Using AI Code Generation
1var channel = require('channel');2channel.flush();3var channel = require('channel');4channel.onMessage(function (message) {5});6var channel = require('channel');7channel.onMessageError(function (message) {8});9var channel = require('channel');10channel.onMessageSuccess(function (message) {11});
Check out the latest blogs from LambdaTest on this topic:
Screenshots! These handy snippets have become indispensable to our daily business as well as personal life. Considering how mandatory they are for everyone in these modern times, every OS and a well-designed game, make sure to deliver a built in feature where screenshots are facilitated. However, capturing a screen is one thing, but the ability of highlighting the content is another. There are many third party editing tools available to annotate our snippets each having their own uses in a business workflow. But when we have to take screenshots, we get confused which tool to use. Some tools are dedicated to taking best possible screenshots of whole desktop screen yet some are browser based capable of taking screenshots of the webpages opened in the browsers. Some have ability to integrate with your development process, where as some are so useful that there integration ability can be easily overlooked.
This article is a part of our Content Hub. For more in-depth resources, check out our content hub on Automation Testing Tutorial.
Working in IT, we have often heard the term Virtual Machines. Developers working on client machines have used VMs to do the necessary stuffs at the client machines. Virtual machines are an environment or an operating system which when installed on a workstation, simulates an actual hardware. The person using the virtual machine gets the same experience as they would have on that dedicated system. Before moving on to how to setup virtual machine in your system, let’s discuss why it is used.
There is no other automation framework in the market that is more used for automating web testing tasks than Selenium and one of the key functionalities is to take Screenshot in Selenium. However taking full page screenshots across different browsers using Selenium is a unique challenge that many selenium beginners struggle with. In this post we will help you out and dive a little deeper on how we can take full page screenshots of webpages across different browser especially to check for cross browser compatibility of layout.
Cross browser compatibility can simply be summed up as a war between testers and developers versus the world wide web. Sometimes I feel that to achieve browser compatibility, you may need to sell your soul to devil while performing a sacrificial ritual. Even then some API plugins won’t work.(XD)
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!