<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <script src="resources/compatibility.js"></script>
    <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 exponential distance model of AudioPannerNode.");

      function runTest() {
          if (window.testRunner) {
              testRunner.dumpAsText();
              testRunner.waitUntilDone();
          }

          window.jsTestIsAsync = true;

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

          createTestAndRun(context, "exponential");
      }

      runTest();
      successfullyParsed = true;

    </script>

  </body>
</html>
