Refactoring: Pull all fullscreen code out of Document and into its own helper class
[WebKit-https.git] / LayoutTests / webaudio / pannernode-basic.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../resources/js-test.js"></script>
5 <script src="resources/audio-testing.js"></script>
6 </head>
7
8 <body>
9 <div id="description"></div>
10 <div id="console"></div>
11
12 <script>
13 description("Basic tests for PannerNode.");
14
15 var context = 0;
16
17 function runTest() {
18     window.jsTestIsAsync = true;
19
20     context = new webkitAudioContext();
21     var panner = context.createPanner();
22    
23     if (panner.numberOfInputs === 1) 
24         testPassed("PannerNode has one input.");
25     else
26         testFailed("PannerNode should have one input.");
27     
28     if (panner.numberOfOutputs === 1) 
29         testPassed("PannerNode has one output.");
30     else
31         testFailed("PannerNode should have one output.");
32
33     if (panner.refDistance === 1)
34         testPassed("refDistance default value is 1.");
35     else
36         testFailed("refDistance default value should be 1.");
37     
38     panner.refDistance = 270.52
39     if (panner.refDistance === 270.52)
40         testPassed("refDistance value is set to 270.52.");
41     else
42         testFailed("refDistance value should be set to 270.52.");
43     
44     if (panner.maxDistance === 10000)
45         testPassed("maxDistance default value is 10000.");
46     else
47         testFailed("maxDistance default value should be 10000.");
48     
49     panner.maxDistance = 100.55
50     if (panner.maxDistance === 100.55)
51         testPassed("maxDistance value is set to 100.55.");
52     else
53         testFailed("maxDistance value should be set to 100.55.");
54     
55     if (panner.rolloffFactor === 1)
56         testPassed("rolloffFactor default value is 1.");
57     else
58         testFailed("rolloffFactor default value should be 1.");
59     
60     panner.rolloffFactor = 0.83
61     if (panner.rolloffFactor === 0.83)
62         testPassed("rolloffFactor value is set to 0.83.");
63     else
64         testFailed("rolloffFactor value should be set to 0.83.");
65     
66     if (panner.coneInnerAngle === 360)
67         testPassed("coneInnerAngle default value is 360.");
68     else
69         testFailed("coneInnerAngle default value should be 360.");
70     
71     panner.coneInnerAngle = 240.45
72     if (panner.coneInnerAngle === 240.45)
73         testPassed("coneInnerAngle value is set to 240.45.");
74     else
75         testFailed("coneInnerAngle value should be set to 240.45.");
76     
77     if (panner.coneOuterAngle === 360)
78         testPassed("coneOuterAngle default value is 360.");
79     else
80         testFailed("coneOuterAngle default value should be 360.");
81     
82     panner.coneOuterAngle = 166.66
83     if (panner.coneOuterAngle === 166.66)
84         testPassed("coneOuterAngle value is set to 166.66.");
85     else
86         testFailed("coneOuterAngle value should be set to 166.66.");
87     
88     if (panner.coneOuterGain === 0)
89         testPassed("coneOuterGain default value is 0.");
90     else
91         testFailed("coneOuterGain default value should be 0.");
92
93     panner.coneOuterGain = 0.35
94     if (panner.coneOuterGain === 0.35)
95         testPassed("coneOuterGain value is set to 0.35.");
96     else
97         testFailed("coneOuterGain value should be set to 0.35.");
98
99     if (panner.panningModel === "HRTF")
100         testPassed("PannerNode defaults to 'HRTF' panningModel.");
101     else
102         testFailed("PannerNode should default to 'HRTF' panningModel.");
103     
104     if (panner.distanceModel === "inverse")
105         testPassed("PannerNode defaults to 'inverse' distanceModel.");
106     else
107         testFailed("PannerNode should default to 'inverse' distanceModel.");
108
109     // Check that the .panningModel attribute can be set to all legal values.
110     var panningModels = [{value: "equalpower"},
111                          {value: "HRTF"},
112                         ];
113
114     for (var i = 0; i < panningModels.length; ++i) {
115         try {
116             panner.panningModel = panningModels[i].value;
117             if (panner.panningModel === panningModels[i].value) {
118                 var message = "panningModel: '" + panningModels[i].value + "' is settable.";
119                 testPassed(message);
120             } else {
121                 var message = "panningModel: '" + panningModels[i].value + "' was not correctly set.";
122                 testFailed(message);
123             }
124         } catch(e) {
125             var message = "Setting panningModel to '" + panningModels[i].value + "' should not throw exception.";
126             testFailed(message);
127         }
128     }
129
130     // Check that the .distanceModel attribute can be set to all legal values.
131     var distanceModels = [{value: "linear"},
132                           {value: "inverse"},
133                           {value: "exponential"}];
134
135     for (var i = 0; i < distanceModels.length; ++i) {
136         try {
137             panner.distanceModel = distanceModels[i].value;
138             if (panner.distanceModel === distanceModels[i].value) {
139                 var message = "distanceModel: '" + distanceModels[i].value + "' is settable.";
140                 testPassed(message);
141             } else {
142                 var message = "distanceModel: '" + distanceModels[i].value + "' was not correctly set.";
143                 testFailed(message);
144             }
145         } catch(e) {
146             var message = "Setting distanceModel to '" + distanceModels[i].value + "' should not throw exception.";
147             testFailed(message);
148         }
149     }
150
151     // Check that we don't throw an exception for illegal .distanceModel values as per WebIDL.
152     shouldNotThrowException(function() { panner.distanceModel = "xyz12349jfksd"; }, "Setting .distanceModel to illegal string value");
153     shouldNotThrowException(function() { panner.distanceModel = new Float32Array(1); }, "Setting .distanceModel to illegal type");
154
155     finishJSTest();
156 }
157
158 runTest();
159
160 </script>
161 </body>
162 </html>