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

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

<script>
description("Test AudioParam linearRampToValueAtTime() functionality.");

// Play a long DC signal out through an AudioGainNode, and call setValueAtTime() and
// linearRampToValueAtTime() at regular intervals to set the starting and ending values for a
// linear ramp. Each time interval has a ramp with a different starting and ending value so
// that there is a discontinuity at each time interval boundary.  The discontinuity is for
// testing timing.  Also, we alternate between an increasing and decreasing ramp for each
// interval.

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

// Max allowed difference between the rendered data and the expected result.
var maxAllowedError = 6.5e-7;

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

// Generate a linear ramp ending at time |endTime| with an ending value of |value|.
function generateRamp(value, startTime, endTime)
{
    // |startTime| is ignored because the linear ramp uses the value from the setValueAtTime() call above.
    gainNode.gain.linearRampToValueAtTime(value, endTime)
}

function runTest()
{
    createAudioGraphAndTest(numberOfTests,
                            1,
                            setValue,
                            generateRamp,
                            "linearRampToValueAtTime()",
                            maxAllowedError,
                            createLinearRampArray);
}

runTest();
successfullyParsed = true;
  
</script>

<script src="../resources/js-test-post.js"></script>
</body>
</html>
