Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/resources/delay-testing.js

Issue 2675823002: Convert DelayNode tests to testharness (Closed)
Patch Set: Address review comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/LayoutTests/webaudio/Delay/delaynode-scheduling-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 var sampleRate = 44100.0; 1 var sampleRate = 44100.0;
2 2
3 var renderLengthSeconds = 4; 3 var renderLengthSeconds = 4;
4 var delayTimeSeconds = 0.5; 4 var delayTimeSeconds = 0.5;
5 var toneLengthSeconds = 2; 5 var toneLengthSeconds = 2;
6 6
7 function createToneBuffer(context, frequency, numberOfCycles, sampleRate) { 7 function createToneBuffer(context, frequency, numberOfCycles, sampleRate) {
8 var duration = numberOfCycles / frequency; 8 var duration = numberOfCycles / frequency;
9 var sampleFrameLength = duration * sampleRate; 9 var sampleFrameLength = duration * sampleRate;
10 10
11 var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate); 11 var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate);
12 12
13 var n = audioBuffer.length; 13 var n = audioBuffer.length;
14 var data = audioBuffer.getChannelData(0); 14 var data = audioBuffer.getChannelData(0);
15 15
16 for (var i = 0; i < n; ++i) 16 for (var i = 0; i < n; ++i)
17 data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate); 17 data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate);
18 18
19 return audioBuffer; 19 return audioBuffer;
20 } 20 }
21 21
22 function checkDelayedResult(toneBuffer) { 22 function checkDelayedResult(renderedBuffer, toneBuffer, should) {
23 return function(event) { 23 var sourceData = toneBuffer.getChannelData(0);
24 var renderedBuffer = event.renderedBuffer; 24 var renderedData = renderedBuffer.getChannelData(0);
25 25
26 var sourceData = toneBuffer.getChannelData(0); 26 var delayTimeFrames = delayTimeSeconds * sampleRate;
27 var renderedData = renderedBuffer.getChannelData(0); 27 var toneLengthFrames = toneLengthSeconds * sampleRate;
28
29 var delayTimeFrames = delayTimeSeconds * sampleRate;
30 var toneLengthFrames = toneLengthSeconds * sampleRate;
31 28
32 var success = true; 29 var success = true;
33 30
34 var n = renderedBuffer.length; 31 var n = renderedBuffer.length;
35 32
36 for (var i = 0; i < n; ++i) { 33 for (var i = 0; i < n; ++i) {
37 if (i < delayTimeFrames) { 34 if (i < delayTimeFrames) {
38 // Check that initial portion is 0 (since signal is delayed). 35 // Check that initial portion is 0 (since signal is delayed).
39 if (renderedData[i] != 0) { 36 if (renderedData[i] != 0) {
40 testFailed("Initial portion is not 0 at frame " + i); 37 should(renderedData[i],
41 success = false; 38 "Initial portion expected to be 0 at frame " + i)
42 break; 39 .beEqualTo(0);
43 } 40 success = false;
44 } else if (i >= delayTimeFrames && i < delayTimeFrames + toneLengthF rames) { 41 break;
45 // Make sure that the tone data is delayed by exactly the expect ed number of frames. 42 }
46 var j = i - delayTimeFrames; 43 } else if (i >= delayTimeFrames && i < delayTimeFrames +
47 if (renderedData[i] != sourceData[j]) { 44 toneLengthFrames) {
48 testFailed("Actual data does not match expected data at fram e " + i); 45 // Make sure that the tone data is delayed by exactly the expected n umber of frames.
49 success = false; 46 var j = i - delayTimeFrames;
50 break; 47 if (renderedData[i] != sourceData[j]) {
51 } 48 should(renderedData[i],
52 } else { 49 "Actual data at frame " + i)
53 // Make sure we have silence after the delayed tone. 50 .beEqualTo(sourceData[j]);
54 if (renderedData[i] != 0) { 51 success = false;
55 testFailed("Final portion is not 0 at frame " + i); 52 break;
56 success = false; 53 }
57 break; 54 } else {
58 } 55 // Make sure we have silence after the delayed tone.
59 } 56 if (renderedData[i] != 0) {
57 should(renderedData[j],
58 "Final portion at frame " + i)
59 .beEqualTo(0);
60 success = false;
61 break;
62 }
60 } 63 }
64 }
61 65
62 if (success) { 66 should(success, "Delaying test signal by " + delayTimeSeconds + " sec was do ne")
63 testPassed("Test signal was correctly delayed by " + delayTimeSecond s + " sec."); 67 .message("correctly", "incorrectly")
64 } else {
65 testFailed("Test signal was not correctly delayed by " + delayTimeSe conds + " sec.");
66 }
67
68 finishJSTest();
69 }
70 } 68 }
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/webaudio/Delay/delaynode-scheduling-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698