<!DOCTYPE html>
<html>
  <head>
    <title>
      audioparam-setValueAtTime.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/audioparam-testing.js"></script>
  </head>
  <body>
    <script id="layout-test-code">
      let audit = Audit.createTaskRunner();

      // Play a long DC signal out through an AudioGainNode, and call
      // setValueAtTime() at regular intervals to set the value for the duration
      // of the interval.  Each time interval has different value so that there
      // is a discontinuity at each time interval boundary.  The discontinuity
      // is for testing timing.

      // Number of tests to run.
      let numberOfTests = 100;

      // Max allowed difference between the rendered data and the expected
      // result.
      let maxAllowedError = 6e-8;

      // Set the gain node value to the specified value at the specified time.
      function setValue(value, time) {
        gainNode.gain.setValueAtTime(value, time);
      }

      // For testing setValueAtTime(), we don't need to do anything for
      // automation. because the value at the beginning of the interval is set
      // by setValue and it remains constant for the duration, which is what we
      // want.
      function automation(value, startTime, endTime) {
        // Do nothing.
      }

      audit.define(
          {
            label: 'test',
            description: 'AudioParam setValueAtTime() functionality.'
          },
          function(task, should) {
            createAudioGraphAndTest(
                task, should, numberOfTests, 1, setValue, automation,
                'setValueAtTime()', maxAllowedError, createConstantArray);
          });

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