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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/OfflineAudioContext/offlineaudiocontext-promise-basic.html

Issue 2676343003: Convert OfflineAudioContext Audit tests to testharness (Closed)
Patch Set: 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> 1 <!doctype html>
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>
5 <script src="../resources/audio-testing.js"></script> 6 <script src="../resources/audio-testing.js"></script>
6 <title>OfflineAudioContext.startRendering Promise</title> 7 <title>OfflineAudioContext.startRendering Promise</title>
7 </head> 8 </head>
8 9
9 <body> 10 <body>
10 <script> 11 <script>
11 description("Test OfflineAudioContext.startRendering Promise") 12 // description("Test OfflineAudioContext.startRendering Promise")
hongchan 2017/02/07 18:26:15 Remove this line.
Raymond Toy 2017/02/14 16:27:57 Done.
12 13
13 window.jsTestIsAsync = true;
14 14
15 var context; 15 var context;
16 var promiseData; 16 var promiseData;
17 17
18 var sampleRate = 48000; 18 var sampleRate = 48000;
19 var renderSeconds = 1; 19 var renderSeconds = 1;
20 var renderFrames = sampleRate * renderSeconds; 20 var renderFrames = sampleRate * renderSeconds;
21 var contextChannels = 2; 21 var contextChannels = 2;
22 22
23 var audit = Audit.createTaskRunner(); 23 var audit = Audit.createTaskRunner();
24 24
25 audit.defineTask('reject-promise', function (done) { 25 audit.defineTask('reject-promise', function (done) {
26 // Create a context and verify that calling startRendering more than onc e causes a rejected 26 // Create a context and verify that calling startRendering more than onc e causes a rejected
27 // promise. 27 // promise.
28 var context = new OfflineAudioContext(contextChannels, renderFrames, sam pleRate); 28 var context = new OfflineAudioContext(contextChannels, renderFrames, sam pleRate);
29 context.startRendering(); 29 context.startRendering();
30 context.startRendering() 30 Should('Promise from calling startRendering twice',
31 .then(function () { 31 context.startRendering())
32 testFailed("Promise not rejected when calling startRend ering twice"); 32 .beRejected()
33 }, function () { 33 .then(done);
34 testPassed("Promise correctly rejected when calling sta rtRendering twice");
35 })
36 .then(done);
37 }); 34 });
38 35
39 audit.defineTask('promise-results', function (done) { 36 audit.defineTask('promise-results', function (done) {
40 // Create an offline context and verify that buffer returned by the prom ise matches the 37 // Create an offline context and verify that buffer returned by the prom ise matches the
41 // expected results. 38 // expected results.
42 context = new OfflineAudioContext(contextChannels, renderFrames, sampleR ate); 39 context = new OfflineAudioContext(contextChannels, renderFrames, sampleR ate);
43 40
44 var buffer = context.createBuffer(contextChannels, renderFrames, sampleR ate); 41 var buffer = context.createBuffer(contextChannels, renderFrames, sampleR ate);
45 for (var k = 0; k < renderFrames; ++k) { 42 for (var k = 0; k < renderFrames; ++k) {
46 buffer.getChannelData(0)[k] = 1; 43 buffer.getChannelData(0)[k] = 1;
47 buffer.getChannelData(1)[k] = 2; 44 buffer.getChannelData(1)[k] = 2;
48 } 45 }
49 46
50 var source = context.createBufferSource(); 47 var source = context.createBufferSource();
51 source.buffer = buffer; 48 source.buffer = buffer;
52 source.connect(context.destination); 49 source.connect(context.destination);
53 source.start(); 50 source.start();
54 51
55 context.startRendering().then(handlePromise).then(done); 52 context.startRendering().then(handlePromise).then(done);
56 }); 53 });
57 54
58 audit.defineTask('finish', function (done) { 55 audit.defineTask('finish', function (done) {
59 done(); 56 done();
hongchan 2017/02/07 18:26:15 I think we can remove this task because we don't n
Raymond Toy 2017/02/14 16:27:57 Done.
60 finishJSTest();
61 }); 57 });
62 58
63 audit.runTasks('reject-promise', 'promise-results', 'finish'); 59 audit.runTasks('reject-promise', 'promise-results', 'finish');
64 60
65 function handlePromise(buffer) 61 function handlePromise(buffer)
66 { 62 {
67 renderedData = buffer; 63 renderedData = buffer;
68 var success = true; 64 var success = true;
69 65
70 shouldBeEqualToString("context.state", "closed"); 66 Should("context.state", context.state)
71 shouldBeEqualToNumber("renderedData.numberOfChannels", contextChannels); 67 .beEqualTo("closed");
72 shouldBeEqualToNumber("renderedData.length", renderFrames); 68 Should("renderedData.numberOfChannels", renderedData.numberOfChannels)
69 .beEqualTo(contextChannels);
70 Should("renderedData.length", renderedData.length)
71 .beEqualTo(renderFrames);
73 72
74 for (var channel = 0; channel < contextChannels; ++channel) { 73 for (var channel = 0; channel < contextChannels; ++channel) {
75 var data = renderedData.getChannelData(channel); 74 var data = renderedData.getChannelData(channel);
76 for (var k = 0; k < renderFrames; ++k) { 75 for (var k = 0; k < renderFrames; ++k) {
77 if (data[k] != channel + 1) { 76 if (data[k] != channel + 1) {
78 success = false; 77 success = false;
79 badChannel = channel; 78 badChannel = channel;
80 badFrame = k; 79 badFrame = k;
81 break; 80 break;
82 } 81 }
83 } 82 }
84 if (!success) 83 if (!success)
85 break; 84 break;
86 } 85 }
87 86
88 if (success) { 87 Should('OfflineAudioContext.startRendering promise rendered data',
89 testPassed("Rendered data matches expected results"); 88 success)
90 testPassed("OfflineAudioContext.startRendering promise succeeded"); 89 .summarize('correctly', 'incorrectly');
91 } else {
92 testFailed("Rendered data does not match expected results for channel " +
93 badChannel + ", frame " + badFrame);
94 testFailed("OfflineAudioContext.startRendering promise");
95 }
96 } 90 }
97 91
98 successfullyParsed = true; 92 successfullyParsed = true;
hongchan 2017/02/07 18:26:15 This line is not needed.
Raymond Toy 2017/02/14 16:27:57 Done.
99 </script> 93 </script>
100 94
101 </body> 95 </body>
102 </html> 96 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698