<!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="../fast/js/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="../fast/js/resources/js-test-post.js"></script>
</body>
</html>
