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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/WaveShaper/waveshaper-limits.html

Issue 2677453005: Convert WaveShaper 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
OLDNEW
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="../../resources/js-test.js"></script> 4 <script src="../../resources/testharness.js"></script>
5 <script src="../../resources/testharnessreport.js"></script>
6 <script src="../resources/audit-util.js"></script>
7 <script src="../resources/audit.js"></script>
5 </head> 8 </head>
6 9
7 <body> 10 <body>
8 <div id="description"></div>
9 <div id="console"></div>
10
11 <script> 11 <script>
12 description("Test WaveShaperNode including values outside the range of [-1 ,1]"); 12 var audit = Audit.createTaskRunner();
13 13
14 var context; 14 var context;
15 var bufferData; 15 var bufferData;
16 var outputData; 16 var outputData;
17 var reference; 17 var reference;
18 18
19 var sampleRate = 48000; 19 var sampleRate = 48000;
20 // Must be odd so we have an exact middle point. 20 // Must be odd so we have an exact middle point.
21 var testFrames = 23; 21 var testFrames = 23;
22 var scale = 1 / ((testFrames - 1) / 2 - 1); 22 var scale = 1 / ((testFrames - 1) / 2 - 1);
(...skipping 18 matching lines...) Expand all
41 ref[midPoint] = 1; 41 ref[midPoint] = 1;
42 // Generate a ramp from 1 down to 0 42 // Generate a ramp from 1 down to 0
43 for (var k = midPoint; k < testFrames - 1; ++k) { 43 for (var k = midPoint; k < testFrames - 1; ++k) {
44 ref[k + 1] = 2 - k * scale; 44 ref[k + 1] = 2 - k * scale;
45 } 45 }
46 // The last sample is out of range at 1+scale 46 // The last sample is out of range at 1+scale
47 ref[testFrames - 1] = 0; 47 ref[testFrames - 1] = 0;
48 return ref; 48 return ref;
49 } 49 }
50 50
51 function checkResult (event) { 51 function checkResult (renderedBuffer, should) {
52 outputData = event.renderedBuffer.getChannelData(0); 52 outputData = renderedBuffer.getChannelData(0);
53 reference = generateReference(); 53 reference = generateReference();
54 var success = true; 54 var success = true;
55 // Verify that every output value matches our expected reference value. 55 // Verify that every output value matches our expected reference value.
56 for (var k = 0; k < outputData.length; ++k) { 56 for (var k = 0; k < outputData.length; ++k) {
57 var diff = outputData[k] - reference[k]; 57 var diff = outputData[k] - reference[k];
58 if (Math.abs(diff) <= diffThreshold) { 58 should(Math.abs(diff),
59 testPassed(bufferData[k].toFixed(decimals) + " -> " + outputData[k ].toFixed(decimals) + "."); 59 "Max error mapping " + bufferData[k].toFixed(decimals) + " to " +
60 } else { 60 outputData[k].toFixed(decimals))
61 testFailed(bufferData[k].toFixed(decimals) + " -> " + outputData[k ].toFixed(decimals) + ", but expected " + reference[k].toFixed(decimals) + "."); 61 .beLessThanOrEqualTo(diffThreshold);
62 success = false;
63 }
64 } 62 }
65
66 if (success)
67 testPassed("All outputs matched expected results.");
68 else
69 testFailed("Some outputs did not match expected results.");
70
71 finishJSTest();
72 } 63 }
73 64
74 function runTest () { 65 audit.define("test", function (task, should) {
75 if (window.testRunner) { 66 task.describe("Test WaveShaperNode including values outside the range of [-1,1]");
76 testRunner.dumpAsText();
77 testRunner.waitUntilDone();
78 }
79
80 window.jsTestIsAsync = true;
81
82 context = new OfflineAudioContext(1, testFrames, sampleRate); 67 context = new OfflineAudioContext(1, testFrames, sampleRate);
83 // Create input values between -1.1 and 1.1 68 // Create input values between -1.1 and 1.1
84 var buffer = context.createBuffer(1, testFrames, context.sampleRate); 69 var buffer = context.createBuffer(1, testFrames, context.sampleRate);
85 bufferData = buffer.getChannelData(0); 70 bufferData = buffer.getChannelData(0);
86 var start = -1 - scale; 71 var start = -1 - scale;
87 for (var k = 0; k < testFrames; ++k) { 72 for (var k = 0; k < testFrames; ++k) {
88 bufferData[k] = k * scale + start; 73 bufferData[k] = k * scale + start;
89 } 74 }
90 75
91 var source = context.createBufferSource(); 76 var source = context.createBufferSource();
92 source.buffer = buffer; 77 source.buffer = buffer;
93 78
94 // Create simple waveshaper. It should map -1 to 0, 0 to 1, and +1 to 0 and interpolate 79 // Create simple waveshaper. It should map -1 to 0, 0 to 1, and +1 to 0 and interpolate
95 // all points in between using a simple linear interpolator. 80 // all points in between using a simple linear interpolator.
96 var shaper = context.createWaveShaper(); 81 var shaper = context.createWaveShaper();
97 var curve = new Float32Array(3); 82 var curve = new Float32Array(3);
98 curve[0] = 0; 83 curve[0] = 0;
99 curve[1] = 1; 84 curve[1] = 1;
100 curve[2] = 0; 85 curve[2] = 0;
101 shaper.curve = curve; 86 shaper.curve = curve;
102 source.connect(shaper); 87 source.connect(shaper);
103 shaper.connect(context.destination); 88 shaper.connect(context.destination);
104 89
105 source.start(); 90 source.start();
106 context.oncomplete = checkResult; 91 context.startRendering()
107 context.startRendering(); 92 .then(buffer => checkResult(buffer, should))
108 } 93 .then(() => task.done());
94 });
109 95
110 runTest(); 96 audit.run();
111 successfullyParsed = true;
112 </script> 97 </script>
113 </body> 98 </body>
114 </html> 99 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698