<!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 setTargetValueAtTime() functionality.");

// Play a long DC signal out through an AudioGainNode, and call setValueAtTime() and
// setTargetValueAtTime at regular intervals to set the starting value and the target
// value. Each time interval has a ramp with a different starting and target 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 = 2.79e-5;

// The AudioGainNode starts with this value instead of the default value.
var initialValue = 100;

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

// Generate an exponential approach starting at |startTime| with a target value of |value|.
function automation(value, startTime, endTime)
{
    // endTime is not used for setTargetValueAtTime.
    gainNode.gain.setTargetValueAtTime(value, startTime, timeConstant)
}

function runTest()
{
    createAudioGraphAndTest(numberOfTests,
                            initialValue,
                            setValue,
                            automation,
                            "setTargetValueAtTime()",
                            maxAllowedError,
                            createExponentialApproachArray);
}

runTest();
successfullyParsed = true;

</script>

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