<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <script src="resources/audio-testing.js"></script>
    <script src="../resources/js-test.js"></script>
    <script src="resources/distance-model-testing.js"></script>
  </head>

  <body>
    <div id="description"></div>
    <div id="console"></div>

    <script>
      description("Test inverse distance model of AudioPannerNode.");

      function runTest() {
          window.jsTestIsAsync = true;

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

          // Temp panner node so we can get the inverse value.
          var tempPanner = context.createPanner();
          createTestAndRun(context, "inverse");
      }

      runTest();
    </script>
  </body>
</html>
