<!DOCTYPE html>
<html>
  <head>
    <title>
      biquad-lowpass.html
    </title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/webaudio/resources/audit-util.js"></script>
    <script src="/webaudio/resources/audit.js"></script>
    <script src="/webaudio/resources/biquad-filters.js"></script>
    <script src="/webaudio/resources/biquad-testing.js"></script>
  </head>
  <body>
    <script id="layout-test-code">
      let audit = Audit.createTaskRunner();

      audit.define(
          {label: 'test', description: 'Biquad lowpass filter'},
          function(task, should) {

            // Create offline audio context.
            let context = new OfflineAudioContext(
                2, sampleRate * renderLengthSeconds, sampleRate);

            // The filters we want to test.
            let filterParameters = [
              {cutoff: 0, q: 1, gain: 1},
              {cutoff: 1, q: 1, gain: 1},
              {cutoff: 0.25, q: 1, gain: 1},
              {cutoff: 0.25, q: 1, gain: 1, detune: 100},
              {cutoff: 0.01, q: 1, gain: 1, detune: -200},
            ];

            createTestAndRun(context, 'lowpass', {
              should: should,
              threshold: 9.7869e-8,
              filterParameters: filterParameters
            }).then(task.done.bind(task));
          });

      audit.run();
    </script>
  </body>
</html>
