Index: third_party/WebKit/LayoutTests/webaudio/audioparam-method-chaining.html |
diff --git a/third_party/WebKit/LayoutTests/webaudio/audioparam-method-chaining.html b/third_party/WebKit/LayoutTests/webaudio/audioparam-method-chaining.html |
deleted file mode 100644 |
index 6100ebea5c72f620e482bc8c5d7c2c4984394d71..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/LayoutTests/webaudio/audioparam-method-chaining.html |
+++ /dev/null |
@@ -1,145 +0,0 @@ |
-<!DOCTYPE html> |
-<html> |
- |
-<head> |
- <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/audioparam-testing.js"></script> |
-</head> |
- |
-<body> |
- <script> |
- description('Test method chaining feature of AudioParam automation methods.'); |
- window.jsTestIsAsync = true; |
- |
- var sampleRate = 44100; |
- |
- // Create a dummy array for setValueCurveAtTime method. |
- var curveArray = new Float32Array([5.0, 6.0]); |
- |
- // AudioNode dictionary with associated dummy arguments. |
- var methodDictionary = [ |
- { name: 'setValueAtTime', args: [1.0, 0.0] }, |
- { name: 'linearRampToValueAtTime', args: [2.0, 1.0] }, |
- { name: 'exponentialRampToValueAtTime', args: [3.0, 2.0] }, |
- { name: 'setTargetAtTime', args: [4.0, 2.0, 0.5] }, |
- { name: 'setValueCurveAtTime', args: [curveArray, 5.0, 1.0] }, |
- { name: 'cancelScheduledValues', args: [6.0] } |
- ]; |
- |
- function verifyReturnedParam(config) { |
- if (config.source === config.returned) |
- testPassed('The return value of ' + config.desc + ' matches the source AudioParam.'); |
- else |
- testFailed('The return value of ' + config.desc + ' does NOT match source AudioParam.'); |
- } |
- |
- var audit = Audit.createTaskRunner(); |
- |
- // Task: testing entries from the dictionary. |
- audit.defineTask('from-dictionary', function (done) { |
- var context = new AudioContext(); |
- |
- methodDictionary.forEach(function (method) { |
- var sourceParam = context.createGain().gain; |
- verifyReturnedParam({ |
- source: sourceParam, |
- returned: sourceParam[method.name](...method.args), |
- desc: sourceParam.constructor.name + '.' + method.name + '()' |
- }); |
- }); |
- |
- done(); |
- }); |
- |
- // Task: test method chaining with invalid operation. |
- audit.defineTask('invalid-operation', function (done) { |
- var context = new OfflineAudioContext(1, 44100, 44100); |
- var osc = context.createOscillator(); |
- var amp1 = context.createGain(); |
- var amp2 = context.createGain(); |
- |
- osc.connect(amp1); |
- osc.connect(amp2); |
- amp1.connect(context.destination); |
- amp2.connect(context.destination); |
- |
- // The first operation fails with an exception, thus the second one |
- // should not have effect on the parameter value. Instead, it should |
- // maintain the default value of 1.0. |
- Should('Calling setValueAtTime() with a negative end time', function () { |
- amp1.gain |
- .setValueAtTime(0.25, -1.0) |
- .linearRampToValueAtTime(2.0, 1.0); |
- }).throw('InvalidAccessError'); |
- |
- // The first operation succeeds but the second fails due to zero target |
- // value for the exponential ramp. Thus only the first should have effect |
- // on the parameter value, setting the value to 0.5. |
- Should('Calling exponentialRampToValueAtTime() with a zero target value', function () { |
- amp2.gain |
- .setValueAtTime(0.5, 0.0) |
- .exponentialRampToValueAtTime(0.0, 1.0); |
- }).throw('InvalidAccessError'); |
- |
- osc.start(); |
- osc.stop(1.0); |
- |
- context.startRendering().then(function (buffer) { |
- Should('The gain value of the first gain node', amp1.gain.value).beEqualTo(1.0); |
- Should('The gain value of the second gain node', amp2.gain.value).beEqualTo(0.5); |
- }).then(done); |
- }); |
- |
- // Task: verify if the method chaining actually works. Create an arbitrary |
- // envelope and compare the result with the expected one created by JS code. |
- audit.defineTask('verification', function (done) { |
- var context = new OfflineAudioContext(1, sampleRate * 4, sampleRate); |
- var constantBuffer = createConstantBuffer(context, 1, 1.0); |
- |
- var source = context.createBufferSource(); |
- source.buffer = constantBuffer; |
- source.loop = true; |
- |
- var envelope = context.createGain(); |
- |
- source.connect(envelope); |
- envelope.connect(context.destination); |
- |
- envelope.gain |
- .setValueAtTime(0.0, 0.0) |
- .linearRampToValueAtTime(1.0, 1.0) |
- .exponentialRampToValueAtTime(0.5, 2.0) |
- .setTargetAtTime(0.001, 2.0, 0.5); |
- |
- source.start(); |
- |
- context.startRendering().then(function (buffer) { |
- var expectedEnvelope = createLinearRampArray(0.0, 1.0, 0.0, 1.0, sampleRate); |
- expectedEnvelope.push(...createExponentialRampArray(1.0, 2.0, 1.0, 0.5, sampleRate)); |
- expectedEnvelope.push(...createExponentialApproachArray(2.0, 4.0, 0.5, 0.001, sampleRate, 0.5)); |
- |
- // There are slight differences between JS implementation of AudioParam |
- // envelope and the internal implementation. (i.e. double/float and |
- // rounding up) The error threshold is adjusted empirically through |
- // the local testing. |
- Should('The rendered envelope', buffer.getChannelData(0), { |
- numberOfArrayLog: 5 |
- }).beCloseToArray(expectedEnvelope, 4.0532e-6); |
- }).then(done); |
- }); |
- |
- audit.defineTask('finish', function (done) { |
- finishJSTest(); |
- done(); |
- }); |
- |
- audit.runTasks(); |
- |
- successfullyParsed = true; |
- </script> |
-</body> |
- |
-</html> |