tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

merger-testing.js (2041B)


      1 // This file is for the audiochannelmerger-* layout tests.
      2 // Requires |audio-testing.js| to work properly.
      3 
      4 function testMergerInput(should, config) {
      5  let context = new OfflineAudioContext(config.numberOfChannels, 128, 44100);
      6  let merger = context.createChannelMerger(config.numberOfChannels);
      7  let source = context.createBufferSource();
      8  source.buffer = createConstantBuffer(context, 128, config.testBufferContent);
      9 
     10  // Connect the output of source into the specified input of merger.
     11  if (config.mergerInputIndex)
     12    source.connect(merger, 0, config.mergerInputIndex);
     13  else
     14    source.connect(merger);
     15  merger.connect(context.destination);
     16  source.start();
     17 
     18  return context.startRendering().then(function(buffer) {
     19    let prefix = config.testBufferContent.length + '-channel source: ';
     20    for (let i = 0; i < config.numberOfChannels; i++)
     21      should(buffer.getChannelData(i), prefix + 'Channel #' + i)
     22          .beConstantValueOf(config.expected[i]);
     23  });
     24 }
     25 
     26 async function testMergerInput_W3CTH(config) {
     27  const context = new OfflineAudioContext(config.numberOfChannels, 128, 44100);
     28  const merger = new ChannelMergerNode(context, {
     29    numberOfInputs: config.numberOfChannels,
     30  });
     31  const source = new AudioBufferSourceNode(context, {
     32    buffer: createConstantBuffer(context, 128, config.testBufferContent),
     33  });
     34 
     35 
     36  // Connect the output of source into the specified input of merger.
     37  if (config.mergerInputIndex) {
     38    source.connect(merger, 0, config.mergerInputIndex);
     39  } else {
     40    source.connect(merger);
     41  }
     42  merger.connect(context.destination);
     43  source.start();
     44 
     45  return context.startRendering().then((buffer) => {
     46    const prefix = config.testBufferContent.length + '-channel source: ';
     47    for (let i = 0; i < config.numberOfChannels; i++) {
     48      assert_array_equals(
     49          buffer.getChannelData(i),
     50          new Float32Array(buffer.length).fill(config.expected[i]),
     51          `${prefix}Channel #${i} should be constant value of ` +
     52              `${config.expected[i]}`);
     53    }
     54  });
     55 }