Index: third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-end.html |
diff --git a/third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-end.html b/third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-end.html |
deleted file mode 100644 |
index 38c0dac34f5461c1ee1a9e20bf5332e94436a9bb..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-end.html |
+++ /dev/null |
@@ -1,160 +0,0 @@ |
-<!doctype html> |
-<html> |
- <head> |
- <title>Test Automation Following setValueCurveAtTime Automations</title> |
- <script src="../resources/js-test.js"></script> |
- <script src="resources/compatibility.js"></script> |
- <script src="resources/audit-util.js"></script> |
- <script src="resources/audio-testing.js"></script> |
- <script src="resources/audio-param.js"></script> |
- </head> |
- |
- <body> |
- <script> |
- description("Test Automation Following setValueCurveAtTime Automations"); |
- window.jsTestIsAsync = true; |
- |
- var sampleRate = 12800; |
- // Some short duration because we don't need to run the test for very long. |
- var testDurationFrames = 256; |
- var testDurationSec = testDurationFrames / sampleRate; |
- var curveDuration = testDurationSec / 2; |
- |
- var audit = Audit.createTaskRunner(); |
- |
- // Configuration for each test. |
- // |
- // Required options: |
- // automation - Name of automation method to test |
- // time - Time for the automation method. |
- // Optional options: |
- // extraDuration - extra time for the duration of the setValueCurve |
- // duration. Default is 0. This should not be on a |
- // sample frame boundary. This is for testing that |
- // curves that don't end on a frame boundary are handled |
- // correctly. |
- // threshold - Error threshold for the test; default is 0. |
- var testConfigs = [{ |
- automation: "linearRampToValueAtTime", |
- time: testDurationSec, |
- threshold: 3.9737e-8 |
- }, { |
- automation: "linearRampToValueAtTime", |
- time: testDurationSec, |
- extraDuration: 0.5 / sampleRate, |
- threshold: 1.8141e-8 |
- }, { |
- automation: "exponentialRampToValueAtTime", |
- time: testDurationSec, |
- threshold: 3.9737e-8 |
- }, { |
- automation: "exponentialRampToValueAtTime", |
- time: testDurationSec, |
- extraDuration: 0.5 / sampleRate, |
- threshold: 2.0312e-8 |
- }, { |
- automation: "setTargetAtTime", |
- time: curveDuration, |
- threshold: 1.5895e-7 |
- }, { |
- automation: "setTargetAtTime", |
- time: curveDuration + 0.5 / sampleRate, |
- extraDuration: 0.5 / sampleRate, |
- threshold: 1.3278e-7 |
- }]; |
- |
- // Define tests from the configs |
- for (k in testConfigs) { |
- audit.defineTask(k + ": " + testConfigs[k].automation, (function (config) { |
- return function (done) { |
- runTest(config).then(done); |
- }; |
- })(testConfigs[k])); |
- } |
- |
- audit.defineTask("finish", function (done) { |
- finishJSTest(); |
- done(); |
- }); |
- |
- audit.runTasks(); |
- |
- function runTest(options) { |
- // For the test, use a gain node with a constant input to test the |
- // automations. |
- var context = new OfflineAudioContext(1, testDurationFrames, sampleRate); |
- var source = context.createBufferSource(); |
- source.buffer = createConstantBuffer(context, 1, 1); |
- source.loop = true; |
- |
- var gain = context.createGain(); |
- |
- // Any valid curve is ok. We only use the last value for testing. |
- var curve = [0, 2, 0.3]; |
- var actualDuration = curveDuration + (options.extraDuration || 0); |
- gain.gain.setValueCurveAtTime(Float32Array.from(curve), 0, actualDuration); |
- |
- // Run the desired test automation. The extra parameter (0.01) is only |
- // used for setTargetAtTime tests; it's ignored for other tests. |
- var automationValue = 2; |
- gain.gain[options.automation](automationValue, options.time, 0.01); |
- |
- source.connect(gain); |
- gain.connect(context.destination); |
- |
- source.start(); |
- |
- return context.startRendering().then(function (resultBuffer) { |
- var result = resultBuffer.getChannelData(0); |
- |
- // Only need to verify that the ramp started at the right |
- // value. Figure the nearest sample frame to the end curve. |
- var curveEndFrame = Math.ceil(actualDuration * sampleRate); |
- |
- var expectedResult = curve[curve.length - 1]; |
- |
- // Determine the expected value after the end of the setValueCurve event. |
- if (options.automation == "linearRampToValueAtTime") { |
- expectedResult = audioParamLinearRamp( |
- curveEndFrame / sampleRate, |
- curve[curve.length - 1], actualDuration, |
- automationValue, testDurationSec); |
- } else if (options.automation == "exponentialRampToValueAtTime") { |
- expectedResult = audioParamExponentialRamp( |
- curveEndFrame / sampleRate, |
- curve[curve.length - 1], actualDuration, |
- automationValue, testDurationSec); |
- } else if (options.automation == "setTargetAtTime") { |
- expectedResult = audioParamSetTarget( |
- curveEndFrame / sampleRate, |
- curve[curve.length - 1], actualDuration, |
- automationValue, 0.01); |
- } |
- |
- var message = "setValueCurve(..., " + 0 + ", " + actualDuration + |
- ")." + options.automation + |
- "(2, " + testDurationSec; |
- |
- if (options.automation == "setTargetAtTime") |
- message += ", 0.01"; |
- message += ")"; |
- |
- Should(message + ": value at time " + curveEndFrame / sampleRate, result[curveEndFrame]) |
- .beCloseTo(expectedResult, options.threshold || 0); |
- }); |
- } |
- |
- function linearRampValue(t, t0, v0, t1, v1) { |
- return v0 + (v1 - v0) * (t - t0) / (t1 - t0); |
- } |
- |
- function exponentialRampValue(t, t0, v0, t1, v1) { |
- return v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0)); |
- } |
- |
- function setTargetValue(t, t0, v0, v1, timeConstant) { |
- return v1 + (v0 - v1) * Math.exp(-(t - t0) / timeConstant) |
- } |
- </script> |
- </body> |
-</html> |