Refactoring: Pull all fullscreen code out of Document and into its own helper class
[WebKit-https.git] / LayoutTests / webaudio / audionode.html
1 <!DOCTYPE html>
2
3 <html>
4 <head>
5 <script src="../resources/js-test.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("Basic tests for AudioNode API.");
15
16 var context = 0;
17 var context2 = 0;
18
19 function runTest() {
20     context = new webkitAudioContext();
21     window.audioNode = context.createBufferSource();
22
23     // Check input and output numbers of AudioSourceNode.
24     if (audioNode.numberOfInputs === 0)
25         testPassed("Source AudioNode has no inputs.");
26     else
27         testFailed("Source AudioNode should not have inputs.");
28     
29     if (audioNode.numberOfOutputs === 1)
30         testPassed("Source AudioNode has one output.");
31     else
32         testFailed("Source AudioNode should have one output.");
33
34     // Check input and output numbers of AudioDestinationNode
35     if (context.destination.numberOfInputs === 1)
36         testPassed("Destination AudioNode has one input.");
37     else
38         testFailed("Destination AudioNode should have one input.");
39
40     if (context.destination.numberOfOutputs === 0)
41         testPassed("Destination AudioNode has no outputs.");
42     else
43         testFailed("Destination AudioNode should have no outputs.");
44
45     // Try calling connect() method with illegal values.
46
47     shouldThrowErrorName("audioNode.connect(0, 0, 0)", "TypeError");
48     shouldThrowErrorName("audioNode.connect(null, 0, 0)", "TypeError");
49
50     try {
51         audioNode.connect(context.destination, 5, 0);
52         testFailed("connect() exception should be thrown for illegal output index.");
53     } catch(e) {
54         testPassed("connect() exception thrown for illegal output index.");
55     }
56
57     try {
58         audioNode.connect(context.destination, 0, 5);
59         testFailed("connect() exception should be thrown for illegal input index.");
60     } catch(e) {
61         testPassed("connect() exception thrown for illegal input index.");
62     }
63
64     // Try calling connect() with proper values.
65     try {
66         audioNode.connect(context.destination, 0, 0);
67         testPassed("audioNode.connect(context.destination) succeeded.");
68     } catch(e) {
69         testFailed("audioNode.connect(context.destination) failed.");
70     }
71     
72     // Create a new context and try to connect the other context's node to this one.
73     try {
74         context2 = new webkitAudioContext();
75         window.audioNode.connect(context2.destination);
76         testFailed("exception should be thrown when connecting to other context's node.");
77     } catch(e) {
78         testPassed("exception thrown when connecting to other context's node.");
79     }
80
81     // Create a new context with too many arguments
82     try {
83         context2 = new webkitAudioContext(0, 0);
84         testPassed("exception should not be thrown when creating audio context with too many arguments.");
85     } catch(e) {
86         testFailed("exception thrown when creating audio context with too many arguments.");
87     }
88
89     // Ensure it is an EventTarget
90     try {
91         audioNode.addEventListener('testEvent', function(){
92             testPassed("AudioNode is an EventTarget");
93         });
94         audioNode.dispatchEvent(new Event('testEvent'));
95     } catch(e) {
96         testFailed("exception shouldn't be thrown when testing whether audio node is an event target");
97     }
98 }
99
100 runTest();
101
102 </script>
103 </body>
104 </html>