Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/webaudio/constructor/periodicwave.html |
| diff --git a/third_party/WebKit/LayoutTests/webaudio/constructor/periodicwave.html b/third_party/WebKit/LayoutTests/webaudio/constructor/periodicwave.html |
| index 06fac7961382293e841aedefd4736b682c646904..3688addc45b48d630d84a716340622328b46f0e2 100644 |
| --- a/third_party/WebKit/LayoutTests/webaudio/constructor/periodicwave.html |
| +++ b/third_party/WebKit/LayoutTests/webaudio/constructor/periodicwave.html |
| @@ -51,13 +51,13 @@ |
| success = Should("node = new PeriodicWave(context)", function () { |
| node = new PeriodicWave(context); |
| - }).throw("InvalidStateError"); |
| + }).notThrow(); |
| taskDone(); |
| }); |
| audit.defineTask("constructor with options", function (taskDone) { |
| - var node; |
| + var node1; |
| var success = true; |
| var options = { |
| @@ -65,30 +65,32 @@ |
| }; |
| success = Should("node = new PeriodicWave(context, " + JSON.stringify(options) + ")", |
| function () { |
| - node = new PeriodicWave(context, options); |
| + node1 = new PeriodicWave(context, options); |
| }).notThrow(); |
| - success = Should("node instanceof PeriodicWave", node instanceof PeriodicWave) |
| + success = Should("node1 instanceof PeriodicWave", node1 instanceof PeriodicWave) |
| .beEqualTo(true) && success; |
| + var node2; |
| options = { |
| imag: [1, 1] |
| }; |
| - success = Should("node = new PeriodicWave(context, " + JSON.stringify(options) + ")", |
| + success = Should("node2 = new PeriodicWave(context, " + JSON.stringify(options) + ")", |
| function () { |
| - node = new PeriodicWave(context, options); |
| + node2 = new PeriodicWave(context, options); |
| }).notThrow(); |
| - success = Should("node instanceof PeriodicWave", node instanceof PeriodicWave) |
| + success = Should("node2 instanceof PeriodicWave", node2 instanceof PeriodicWave) |
| .beEqualTo(true) && success; |
| + var node3; |
| options = { |
| real: [1, 2], |
| imag: [1, 1] |
| }; |
| - success = Should("node = new PeriodicWave(context, " + JSON.stringify(options) + ")", |
| + success = Should("node3 = new PeriodicWave(context, " + JSON.stringify(options) + ")", |
| function () { |
| - node = new PeriodicWave(context, options); |
| + node3 = new PeriodicWave(context, options); |
| }).notThrow(); |
| - success = Should("node instanceof PeriodicWave", node instanceof PeriodicWave) |
| + success = Should("node3 instanceof PeriodicWave", node3 instanceof PeriodicWave) |
| .beEqualTo(true) && success; |
| Should("new PeriodicWave() with options", success) |
| @@ -288,6 +290,54 @@ |
| }); |
| } |
| + function sineWaveTest(waveFun, message) { |
| + // Verify that the default PeriodicWave produces a sine wave. Use a |
| + // 2-channel context to verify this. Channel 0 is the output from the |
| + // PeriodicWave, and channel 1 is the reference oscillator output. |
| + let context = new OfflineAudioContext(2, 40000, 40000); |
| + let oscRef = |
| + new OscillatorNode(context, {type: 'sine', frequency: 440}); |
| + let wave = waveFun(context); |
| + let oscTest = |
| + new OscillatorNode(context, {frequency: 440, periodicWave: wave}); |
| + |
| + let merger = new ChannelMergerNode(context, {numberOfInputs: 2}); |
| + |
| + oscRef.connect(merger, 0, 1); |
| + oscTest.connect(merger, 0, 0); |
| + |
| + merger.connect(context.destination); |
| + |
| + oscRef.start(); |
| + oscTest.start(); |
| + |
| + return context.startRendering().then(output => { |
| + // The output from the two channels MUST match exactly. |
| + let actual = output.getChannelData(0); |
| + let ref = output.getChannelData(1); |
| + |
| + Should(message, actual).beEqualToArray(ref); |
| + }) |
|
hongchan
2017/03/16 21:50:21
A missing semicolon!
Raymond Toy
2017/03/16 22:18:17
Done.
|
| + } |
| + |
| + audit.defineTask('default wave', function(taskDone) { |
| + // Verify that the default PeriodicWave produces a sine wave. |
| + sineWaveTest( |
| + (context) => new PeriodicWave(context), |
| + 'new PeriodicWave(context) output') |
| + .then(taskDone); |
|
hongchan
2017/03/16 21:50:21
Is this indentation from clang-format? If so, clan
Raymond Toy
2017/03/16 22:18:17
Yes, clang format. And rerunning after fixing the
|
| + }); |
| + |
| + audit.defineTask('default wave (with dict)', function(taskDone) { |
| + // Verify that the default PeriodicWave produces a sine wave when the |
| + // PeriodicWaveOptions dictionary is given, but real and imag members |
| + // are not set. |
| + sineWaveTest( |
| + (context) => new PeriodicWave(context, {foo: 42}), |
| + 'new PeriodicWave(context, {foo: 42}) output') |
| + .then(taskDone); |
| + }); |
| + |
| audit.runTasks(); |
| </script> |
| </body> |