Commit 43158542 authored by Raymond Toy's avatar Raymond Toy Committed by Commit Bot

Move AudioParam tests to WPT

Move many but not all WebAudio AudioParam tests to WPT.

The criteria was whether Firefox passed the tests or, if not, the
errors are actually bugs in Firefox.  Most of the failures are because
Firefox threw the wrong type of error.  We also skipped over most of
the tests that use offline.suspend().

Bug: 745778
Change-Id: If4755089938ddf1b9825faa3392d1d10e3b9293f
Reviewed-on: https://chromium-review.googlesource.com/1036456Reviewed-by: default avatarHongchan Choi <hongchan@chromium.org>
Commit-Queue: Raymond Toy <rtoy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555140}
parent 412a73d3
// Define functions that implement the formulas for AudioParam automations.
// AudioParam linearRamp value at time t for a linear ramp between (t0, v0) and
// (t1, v1). It is assumed that t0 <= t. Results are undefined otherwise.
function audioParamLinearRamp(t, v0, t0, v1, t1) {
if (t >= t1)
return v1;
return (v0 + (v1 - v0) * (t - t0) / (t1 - t0))
}
// AudioParam exponentialRamp value at time t for an exponential ramp between
// (t0, v0) and (t1, v1). It is assumed that t0 <= t. Results are undefined
// otherwise.
function audioParamExponentialRamp(t, v0, t0, v1, t1) {
if (t >= t1)
return v1;
return v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0));
}
// AudioParam setTarget value at time t for a setTarget curve starting at (t0,
// v0) with a final value of vFainal and a time constant of timeConstant. It is
// assumed that t0 <= t. Results are undefined otherwise.
function audioParamSetTarget(t, v0, t0, vFinal, timeConstant) {
return vFinal + (v0 - vFinal) * Math.exp(-(t - t0) / timeConstant);
}
// AudioParam setValueCurve value at time t for a setValueCurve starting at time
// t0 with curve, curve, and duration duration. The sample rate is sampleRate.
// It is assumed that t0 <= t.
function audioParamSetValueCurve(t, curve, t0, duration) {
if (t > t0 + duration)
return curve[curve.length - 1];
let curvePointsPerSecond = (curve.length - 1) / duration;
let virtualIndex = (t - t0) * curvePointsPerSecond;
let index = Math.floor(virtualIndex);
let delta = virtualIndex - index;
let c0 = curve[index];
let c1 = curve[Math.min(index + 1, curve.length - 1)];
return c0 + (c1 - c0) * delta;
}
let toneLengthSeconds = 1;
// Create a buffer with multiple channels.
// The signal frequency in each channel is the multiple of that in the first
// channel.
function createToneBuffer(context, frequency, duration, numberOfChannels) {
let sampleRate = context.sampleRate;
let sampleFrameLength = duration * sampleRate;
let audioBuffer =
context.createBuffer(numberOfChannels, sampleFrameLength, sampleRate);
let n = audioBuffer.length;
for (let k = 0; k < numberOfChannels; ++k) {
let data = audioBuffer.getChannelData(k);
for (let i = 0; i < n; ++i)
data[i] = Math.sin(frequency * (k + 1) * 2.0 * Math.PI * i / sampleRate);
}
return audioBuffer;
}
......@@ -13,10 +13,10 @@ to check that the resultant signal should be equal to the gain-scaling curve.
<title>
audioparam-connect-audioratesignal.html
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<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>
</head>
<body>
<script id="layout-test-code">
......
......@@ -4,10 +4,10 @@
<title>
audioparam-exceptional-values.html
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<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>
</head>
<body>
<script id="layout-test-code">
......
......@@ -4,11 +4,11 @@
<title>
Test AudioParam.exponentialRampToValueAtTime
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audioparam-testing.js"></script>
<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">
......
......@@ -4,10 +4,10 @@
<title>
AudioParam with Huge End Time
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<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>
</head>
<body>
<script id="layout-test-code">
......
......@@ -4,11 +4,11 @@
<title>
Test AudioParam.linearRampToValueAtTime
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audioparam-testing.js"></script>
<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">
......
......@@ -4,11 +4,11 @@
<title>
audioparam-method-chaining.html
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audioparam-testing.js"></script>
<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">
......
......@@ -4,11 +4,11 @@
<title>
Test AudioParam.setTargetAtTime
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audioparam-testing.js"></script>
<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">
......
......@@ -4,11 +4,11 @@
<title>
audioparam-setValueAtTime.html
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audioparam-testing.js"></script>
<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">
......
......@@ -4,10 +4,10 @@
<title>
Test Exceptions from setValueCurveAtTime
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<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>
</head>
<body>
<script id="layout-test-code">
......
......@@ -4,11 +4,11 @@
<title>
Test AudioParam.setValueCurveAtTime
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audioparam-testing.js"></script>
<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">
......
......@@ -8,11 +8,11 @@ and that these signals are summed, along with the AudioParams intrinsic value.
<title>
audioparam-summingjunction.html
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/mix-testing.js"></script>
<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/mix-testing.js"></script>
</head>
<body>
<script id="layout-test-code">
......
......@@ -4,11 +4,11 @@
<title>
Test Handling of Event Insertion
</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../resources/audit-util.js"></script>
<script src="../resources/audit.js"></script>
<script src="../resources/audio-param.js"></script>
<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/audio-param.js"></script>
</head>
<body>
<script id="layout-test-code">
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment