Multi-Channel support in AudioBufferSourceNode
[WebKit-https.git] / LayoutTests / webaudio / audiobuffersource-channels.html
1 <!DOCTYPE html>
2
3 <html>
4 <head>
5 <script src="../fast/js/resources/js-test-pre.js"></script>
6 <script type="text/javascript" src="resources/audio-testing.js"></script>
7 </head>
8
9 <body>
10 <div id="description"></div>
11 <div id="console"></div>
12
13 <script>
14 description("Tests that AudioBufferSourceNode validates AudioBuffer in .buffer attribute setter.");
15
16 var context;
17 var source;
18
19 function runTest() {
20     if (window.layoutTestController) {
21         layoutTestController.dumpAsText();
22         layoutTestController.waitUntilDone();
23     }
24     
25     window.jsTestIsAsync = true;
26     
27     context = new webkitAudioContext();
28     source = context.createBufferSource();
29
30     // Make sure we can't set to something which isn't an AudioBuffer.
31     shouldThrow("source.buffer = 57");
32
33     // Check that mono buffer can be set.
34     try {
35         var monoBuffer = context.createBuffer(1, 1024, context.sampleRate);
36         source.buffer = monoBuffer;
37         testPassed("Mono buffer can be set.");
38     } catch(e) {
39         testFailed("Mono buffer can not be set.");
40     }
41
42     // Check that stereo buffer can be set.
43     try {
44         var stereoBuffer = context.createBuffer(2, 1024, context.sampleRate);
45         source.buffer = stereoBuffer;
46         testPassed("Stereo buffer can be set.");
47     } catch(e) {
48         testFailed("Stereo buffer can not be set.");
49     }
50     
51     // Check buffers with more than two channels.
52     for (var i = 3; i < 10; ++i) {
53         try {
54             var buffer = context.createBuffer(i, 1024, context.sampleRate);
55             source.buffer = buffer;
56             var message = i + " channels buffer can be set.";
57             testPassed(message);
58         } catch(e) {
59             var message = i + " channels buffer can not be set.";
60             testFailed(message);
61         }
62     }
63         
64     finishJSTest();
65 }
66
67 runTest();
68
69 </script>
70
71 <script src="../fast/js/resources/js-test-post.js"></script>
72 </body>
73 </html>