tor-browser

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

test_convolverNodeFiniteInfluence.html (1545B)


      1 <!DOCTYPE html>
      2 <title>Test convolution effect has finite duration</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script>
      6 promise_test(function() {
      7 
      8  const responseLength = 256;
      9  // Accept an influence period of twice the responseLength to accept FFT
     10  // implementations.
     11  const tolerancePeriod = 2 * responseLength;
     12  const totalSize = tolerancePeriod + responseLength;
     13 
     14  var context = new OfflineAudioContext(1, totalSize, 48000);
     15 
     16  var responseBuffer =
     17    context.createBuffer(1, responseLength, context.sampleRate);
     18  var responseChannelData = responseBuffer.getChannelData(0);
     19  responseChannelData[0] = 1;
     20  responseChannelData[responseLength - 1] = 1;
     21  var convolver = context.createConvolver();
     22  convolver.buffer = responseBuffer;
     23  convolver.connect(context.destination);
     24 
     25  var sourceBuffer = context.createBuffer(1, totalSize, context.sampleRate);
     26  sourceBuffer.getChannelData(0)[0] = NaN;
     27  var source = context.createBufferSource();
     28  source.buffer = sourceBuffer;
     29  source.connect(convolver);
     30  source.start();
     31 
     32  return context.startRendering().
     33    then((buffer) => {
     34      var convolverOutput = buffer.getChannelData(0);
     35      // There should be no non-zeros after the tolerance period.
     36      var testIndex = tolerancePeriod;
     37      for (;
     38           testIndex < buffer.length - 1 && convolverOutput[testIndex] == 0;
     39           ++testIndex) {
     40      }
     41      assert_equals(convolverOutput[testIndex], 0, "output at " + testIndex);
     42    });
     43 });
     44 </script>