1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.javascript.host.media;
16
17 import org.htmlunit.WebDriverTestCase;
18 import org.htmlunit.junit.BrowserRunner;
19 import org.htmlunit.junit.annotation.Alerts;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22
23
24
25
26
27
28 @RunWith(BrowserRunner.class)
29 public class AudioContextTest extends WebDriverTestCase {
30
31
32
33
34 @Test
35 @Alerts("true")
36 public void inWindow() throws Exception {
37 final String html = DOCTYPE_HTML
38 + "<html>\n"
39 + "<head>\n"
40 + " <script>\n"
41 + LOG_TITLE_FUNCTION
42 + " function test() {\n"
43 + " log('AudioContext' in window);\n"
44 + " }\n"
45 + " </script>\n"
46 + "</head>\n"
47 + "<body onload='test()'>\n"
48 + "</body>\n"
49 + "</html>";
50
51 loadPageVerifyTitle2(html);
52 }
53
54
55
56
57 @Test
58 @Alerts({"function", "[object AudioContext]"})
59 public void ctor() throws Exception {
60 final String html = DOCTYPE_HTML
61 + "<html>\n"
62 + "<head>\n"
63 + " <script>\n"
64 + LOG_TEXTAREA_FUNCTION
65
66 + " function test() {\n"
67 + " if (!('AudioContext' in window)) {\n"
68 + " log('AudioContext not available');\n"
69 + " return;\n"
70 + " }\n"
71
72 + " try {\n"
73 + " log(typeof AudioContext);\n"
74 + " log(new AudioContext());\n"
75 + " } catch(e) { logEx(e); }\n"
76 + " }\n"
77 + " </script>\n"
78 + "</head>\n"
79 + "<body onload='test()'>\n"
80 + LOG_TEXTAREA
81 + "</body>\n"
82 + "</html>";
83
84 loadPageVerifyTextArea2(html);
85 }
86
87
88
89
90 @Test
91 @Alerts("[object AudioBufferSourceNode]")
92 public void createBufferSource() throws Exception {
93 final String html = DOCTYPE_HTML
94 + "<html>\n"
95 + "<head>\n"
96 + " <script>\n"
97 + LOG_TITLE_FUNCTION
98 + " function test() {\n"
99 + " if (!('AudioContext' in window)) {\n"
100 + " log('AudioContext not available');\n"
101 + " return;\n"
102 + " }\n"
103
104 + " var audioCtx = new AudioContext();\n"
105 + " var source = audioCtx.createBufferSource();\n"
106 + " log(source);\n"
107 + " }\n"
108 + " </script>\n"
109 + "</head>\n"
110 + "<body onload='test()'>\n"
111 + "</body>\n"
112 + "</html>";
113
114 loadPageVerifyTitle2(html);
115 }
116
117
118
119
120 @Test
121 @Alerts({"AudioContext prep done", "Error with decoding audio data"})
122 public void decodeAudioData() throws Exception {
123 final String html = DOCTYPE_HTML
124 + "<html>\n"
125 + "<head>\n"
126 + " <script>\n"
127 + LOG_TEXTAREA_FUNCTION
128
129 + " function test() {\n"
130 + " if (!('AudioContext' in window)) {\n"
131 + " log('AudioContext not available');\n"
132 + " return;\n"
133 + " }\n"
134
135 + " var audioCtx = new AudioContext();\n"
136 + " var audioData = new ArrayBuffer(0);\n"
137 + " audioCtx.decodeAudioData(audioData,\n"
138 + " function(buffer) { log('Decoding audio data done'); },\n"
139 + " function(e) { log('Error with decoding audio data'); }\n"
140 + " );\n"
141 + " log('AudioContext prep done');\n"
142 + " }\n"
143 + " </script>\n"
144 + "</head>\n"
145 + "<body onload='test()'>\n"
146 + LOG_TEXTAREA
147 + "</body>\n"
148 + "</html>";
149
150 loadPageVerifyTextArea2(html);
151 }
152
153
154
155
156 @Test
157 @Alerts({"AudioContext prep done", "Error with decoding audio data"})
158 public void decodeAudioData2() throws Exception {
159 final String html = DOCTYPE_HTML
160 + "<html>\n"
161 + "<head>\n"
162 + " <script>\n"
163 + LOG_TEXTAREA_FUNCTION
164
165 + " function test() {\n"
166 + " if (!('AudioContext' in window)) {\n"
167 + " log('AudioContext not available');\n"
168 + " return;\n"
169 + " }\n"
170
171 + " var audioCtx = new AudioContext();\n"
172 + " var audioData = new ArrayBuffer(0);\n"
173 + " audioCtx.decodeAudioData(audioData).then(\n"
174 + " function(buffer) { log('Decoding audio data done'); },\n"
175 + " function(e) { log('Error with decoding audio data'); }\n"
176 + " );\n"
177 + " log('AudioContext prep done');\n"
178 + " }\n"
179 + " </script>\n"
180 + "</head>\n"
181 + "<body onload='test()'>\n"
182 + LOG_TEXTAREA
183 + "</body>\n"
184 + "</html>";
185
186 loadPageVerifyTextArea2(html);
187 }
188
189
190
191
192 @Test
193 @Alerts({"1", "-3.4028234663852886e+38", "3.4028234663852886e+38", "1", "0.5"})
194 public void createGain() throws Exception {
195 final String html = DOCTYPE_HTML
196 + "<html>\n"
197 + "<head>\n"
198 + " <script>\n"
199 + LOG_TEXTAREA_FUNCTION
200
201 + " function test() {\n"
202 + " if (!('AudioContext' in window)) {\n"
203 + " log('AudioContext not available');\n"
204 + " return;\n"
205 + " }\n"
206
207 + " var audioCtx = new AudioContext();\n"
208 + " var gainNode = audioCtx.createGain();\n"
209 + " log(gainNode.gain.defaultValue);\n"
210 + " log(gainNode.gain.minValue);\n"
211 + " log(gainNode.gain.maxValue);\n"
212 + " log(gainNode.gain.value);\n"
213
214 + " gainNode.gain.value = 0.5;\n"
215 + " log(gainNode.gain.value);\n"
216 + " }\n"
217 + " </script>\n"
218 + "</head>\n"
219 + "<body onload='test()'>\n"
220 + LOG_TEXTAREA
221 + "</body>\n"
222 + "</html>";
223
224 loadPageVerifyTextArea2(html);
225 }
226 }