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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/pannernode-basic.html

Issue 1820403002: Implement Automations for PannerNode and AutioListener (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update test because CL for min/maxValue AudioParam landed Created 4 years, 7 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>
4 <script src="../resources/js-test.js"></script>
5 <script src="resources/compatibility.js"></script>
6 <script src="resources/audio-testing.js"></script>
7 </head>
8 3
9 <body> 4 <head>
10 <div id="description"></div> 5 <script src="../resources/js-test.js"></script>
11 <div id="console"></div> 6 <script src="resources/compatibility.js"></script>
7 <script src="resources/audio-testing.js"></script>
8 </head>
12 9
13 <script> 10 <body>
14 description("Basic tests for PannerNode."); 11 <script>
12 description("Basic tests for PannerNode.");
13 window.jsTestIsAsync = true;
15 14
16 var context = 0; 15 var context;
16 var panner;
17 var audit = Audit.createTaskRunner();
17 18
18 function runTest() { 19 audit.defineTask("initialize", function (done) {
19 if (window.testRunner) { 20 context = new AudioContext();
20 testRunner.dumpAsText(); 21 panner = context.createPanner();
21 testRunner.waitUntilDone(); 22 done();
22 } 23 });
23 24
24 window.jsTestIsAsync = true; 25 audit.defineTask("basic", function (done) {
26 var success = true;
25 27
26 context = new AudioContext(); 28 success = Should("panner.numberOfInputs", panner.numberOfInputs)
27 var panner = context.createPanner(); 29 .beEqualTo(1) && success;
30 success = Should("panner.numberOfOutputs", panner.numberOfOutputs)
31 .beEqualTo(1) && success;
32 success = Should("panner.refDistance", panner.refDistance)
33 .beEqualTo(1) && success;
34 panner.refDistance = 270.5;
35 success = Should("panner.refDistance = 270.5", panner.refDistance)
36 .beEqualTo(270.5) && success;
37 success = Should("panner.maxDistance", panner.maxDistance)
38 .beEqualTo(10000) && success;
39 panner.maxDistance = 100.5;
40 success = Should("panner.maxDistance = 100.5", panner.maxDistance)
41 .beEqualTo(100.5) && success;
42 success = Should("panner.rolloffFactor", panner.rolloffFactor)
43 .beEqualTo(1) && success;
44 panner.rolloffFactor = 0.75;
45 success = Should("panner.rolloffFactor = 0.75", panner.rolloffFactor)
46 .beEqualTo(0.75) && success;
47 success = Should("panner.coneInnerAngle", panner.coneInnerAngle)
48 .beEqualTo(360) && success;
49 panner.coneInnerAngle = 240.5;
50 success = Should("panner.coneInnerAngle = 240.5", panner.coneInnerAngle)
51 .beEqualTo(240.5) && success;
52 success = Should("panner.coneOuterAngle", panner.coneOuterAngle)
53 .beEqualTo(360) && success;
54 panner.coneOuterAngle = 166.5;
55 success = Should("panner.coneOuterAngle = 166.5", panner.coneOuterAngle)
56 .beEqualTo(166.5) && success;
57 success = Should("panner.coneOuterGain", panner.coneOuterGain)
58 .beEqualTo(0) && success;
59 panner.coneOuterGain = 0.25;
60 success = Should("panner.coneOuterGain = 0.25", panner.coneOuterGain)
61 .beEqualTo(0.25) && success;
62 success = Should("panner.panningModel", panner.panningModel)
63 .beEqualTo("equalpower") && success;
64 success = Should("panner.distanceModel", panner.distanceModel)
65 .beEqualTo("inverse") && success;
28 66
29 if (panner.numberOfInputs === 1) 67 success = Should("panner.positionX", panner.positionX.value)
30 testPassed("PannerNode has one input."); 68 .beEqualTo(0) && success;
31 else 69 success = Should("panner.positionY", panner.positionY.value)
32 testFailed("PannerNode should have one input."); 70 .beEqualTo(0) && success;
71 success = Should("panner.positionZ", panner.positionZ.value)
72 .beEqualTo(0) && success;
73 success = Should("panner.orientationX", panner.orientationX.value)
74 .beEqualTo(1) && success;
75 success = Should("panner.orientationY", panner.orientationY.value)
76 .beEqualTo(0) && success;
77 success = Should("panner.orientationZ", panner.orientationZ.value)
78 .beEqualTo(0) && success;
33 79
34 if (panner.numberOfOutputs === 1) 80 if (success)
35 testPassed("PannerNode has one output."); 81 testPassed("Basic Panner attribute tests.\n");
36 else 82 else
37 testFailed("PannerNode should have one output."); 83 testFailed("Basic Panner attribute tests.\n");
38 84
39 if (panner.refDistance === 1) 85 done();
40 testPassed("refDistance default value is 1."); 86 });
41 else
42 testFailed("refDistance default value should be 1.");
43 87
44 panner.refDistance = 270.52 88 audit.defineTask("listener", function (done) {
45 if (panner.refDistance === 270.52) 89 var success = true;
46 testPassed("refDistance value is set to 270.52.");
47 else
48 testFailed("refDistance value should be set to 270.52.");
49 90
50 if (panner.maxDistance === 10000) 91 success = Should("listener.positionX", context.listener.positionX.value)
51 testPassed("maxDistance default value is 10000."); 92 .beEqualTo(0) && success;
52 else 93 success = Should("listener.positionY", context.listener.positionY.value)
53 testFailed("maxDistance default value should be 10000."); 94 .beEqualTo(0) && success;
95 success = Should("listener.positionZ", context.listener.positionZ.value)
96 .beEqualTo(0) && success;
97 success = Should("listener.forwardX", context.listener.forwardX.value)
98 .beEqualTo(0) && success;
99 success = Should("listener.forwardY", context.listener.forwardY.value)
100 .beEqualTo(0) && success;
101 success = Should("listener.forwardZ", context.listener.forwardZ.value)
102 .beEqualTo(-1) && success;
103 success = Should("listener.upX", context.listener.upX.value)
104 .beEqualTo(0) && success;
105 success = Should("listener.upY", context.listener.upY.value)
106 .beEqualTo(1) && success;
107 success = Should("listener.upZ", context.listener.upZ.value)
108 .beEqualTo(0) && success;
54 109
55 panner.maxDistance = 100.55 110 if (success)
56 if (panner.maxDistance === 100.55) 111 testPassed("Basic AudioListener attribute tests.\n");
57 testPassed("maxDistance value is set to 100.55."); 112 else
58 else 113 testFailed("Basic AudioListener attribute tests.\n");
59 testFailed("maxDistance value should be set to 100.55."); 114 done();
115 });
60 116
61 if (panner.rolloffFactor === 1) 117 audit.defineTask("panning models", function (done) {
62 testPassed("rolloffFactor default value is 1."); 118 // Check that the .panningModel attribute can be set to all legal values .
63 else 119 var panningModels = ["equalpower", "HRTF"];
64 testFailed("rolloffFactor default value should be 1.");
65 120
66 panner.rolloffFactor = 0.83 121 var success = true;
67 if (panner.rolloffFactor === 0.83) 122 for (var i = 0; i < panningModels.length; ++i) {
68 testPassed("rolloffFactor value is set to 0.83."); 123 success = Should('panner.panningModel = "' + panningModels[i] + '"', f unction () {
69 else 124 panner.panningModel = panningModels[i];
70 testFailed("rolloffFactor value should be set to 0.83."); 125 }).notThrow() && success;
71 126
72 if (panner.coneInnerAngle === 360) 127 success = Should('panner.panningModel = "' + panningModels[i] + '"', p anner.panningModel)
73 testPassed("coneInnerAngle default value is 360."); 128 .beEqualTo(panningModels[i]) && success;
74 else 129 }
75 testFailed("coneInnerAngle default value should be 360.");
76 130
77 panner.coneInnerAngle = 240.45 131 success = Should('panner.panningModel = "invalid"', function () {
78 if (panner.coneInnerAngle === 240.45) 132 panner.panningModel = "invalid";
79 testPassed("coneInnerAngle value is set to 240.45."); 133 }).notThrow() && success;
80 else
81 testFailed("coneInnerAngle value should be set to 240.45.");
82 134
83 if (panner.coneOuterAngle === 360) 135 success = Should("panner.panningModel", panner.panningModel)
84 testPassed("coneOuterAngle default value is 360."); 136 .beEqualTo("HRTF") && success;
85 else
86 testFailed("coneOuterAngle default value should be 360.");
87 137
88 panner.coneOuterAngle = 166.66 138 // Check that numerical values are no longer supported. We shouldn't th row and the value
89 if (panner.coneOuterAngle === 166.66) 139 // shouldn't be changed.
90 testPassed("coneOuterAngle value is set to 166.66."); 140 panner.panningModel = "HRTF";
91 else 141 success = Should('panner.panningModel = 1', function () {
92 testFailed("coneOuterAngle value should be set to 166.66."); 142 panner.panningModel = 1;
143 }).notThrow() && success;
93 144
94 if (panner.coneOuterGain === 0) 145 success = Should('panner.panningModel', panner.panningModel)
95 testPassed("coneOuterGain default value is 0."); 146 .beEqualTo("HRTF") && success;
96 else
97 testFailed("coneOuterGain default value should be 0.");
98 147
99 panner.coneOuterGain = 0.35 148 if (success)
100 if (panner.coneOuterGain === 0.35) 149 testPassed("Basic Panner panning models tests.\n");
101 testPassed("coneOuterGain value is set to 0.35."); 150 else
102 else 151 testFailed("Basic Panner panning models tests.\n");
103 testFailed("coneOuterGain value should be set to 0.35."); 152 done();
153 });
104 154
105 if (panner.panningModel === "equalpower") 155 audit.defineTask("distance models", function (done) {
106 testPassed("PannerNode defaults to 'equalpower' panningModel."); 156 // Check that the .panningModel attribute can be set to all legal values .
107 else 157 var distanceModels = ["linear", "inverse", "exponential"];
108 testFailed("PannerNode should default to 'equalpower' panningModel.");
109 158
110 if (panner.distanceModel === "inverse") 159 var success = true;
111 testPassed("PannerNode defaults to 'inverse' distanceModel."); 160 for (var i = 0; i < distanceModels.length; ++i) {
112 else 161 success = Should('panner.distanceModel = "' + distanceModels[i] + '"',
113 testFailed("PannerNode should default to 'inverse' distanceModel."); 162 function () {
163 panner.distanceModel = distanceModels[i];
164 }).notThrow() && success;
114 165
115 // Check that the .panningModel attribute can be set to all legal values. 166 success = Should('panner.distanceModel = "' + distanceModels[i] + '"', panner
116 var panningModels = [{value: "equalpower", integerValue: panner.EQUALPOWER}, 167 .distanceModel)
117 {value: "HRTF", integerValue: panner.HRTF}, 168 .beEqualTo(distanceModels[i]) && success;
118 ]; 169 }
119 170
120 for (var i = 0; i < panningModels.length; ++i) { 171 success = Should('panner.distanceModel = "invalid"', function () {
121 try { 172 panner.distanceModel = "invalid";
122 panner.panningModel = panningModels[i].value; 173 }).notThrow() && success;
123 if (panner.panningModel === panningModels[i].value) {
124 var message = "panningModel: '" + panningModels[i].value + "' is settable.";
125 testPassed(message);
126 } else {
127 var message = "panningModel: '" + panningModels[i].value + "' wa s not correctly set.";
128 testFailed(message);
129 }
130 } catch(e) {
131 var message = "Setting panningModel to '" + panningModels[i].value + "' should not throw exception.";
132 testFailed(message);
133 }
134 }
135 174
136 // Check that numerical values are no longer supported. 175 success = Should("panner.distanceModel", panner.distanceModel)
137 panner.panningModel = "HRTF"; 176 .beEqualTo("exponential") && success;
138 panner.panningModel = 1;
139 if (panner.panningModel == 1) {
140 testFailed("panningModel incorrectly set to " + panner.panningModel + ". ");
141 } else {
142 testPassed("panningModel correctly not set to 1.");
143 }
144 177
145 // Check that the .distanceModel attribute can be set to all legal values. 178 if (success)
146 var distanceModels = [{value: "linear"}, 179 testPassed("Basic Panner distance models tests.\n");
147 {value: "inverse"}, 180 else
148 {value: "exponential"} 181 testFailed("Basic Panner distance models tests.\n");
149 ]; 182 done();
183 });
150 184
151 for (var i = 0; i < distanceModels.length; ++i) { 185 audit.defineTask("finish", function (done) {
152 try { 186 finishJSTest();
153 panner.distanceModel = distanceModels[i].value; 187 done();
154 if (panner.distanceModel === distanceModels[i].value) { 188 });
155 var message = "distanceModel: '" + distanceModels[i].value + "' is settable.";
156 testPassed(message);
157 } else {
158 var message = "distanceModel: '" + distanceModels[i].value + "' was not correctly set.";
159 testFailed(message);
160 }
161 } catch(e) {
162 var message = "Setting distanceModel to '" + distanceModels[i].value + "' should not throw exception.";
163 testFailed(message);
164 }
165 }
166 189
167 // Check that numerical values are no longer supported.
168 panner.distanceModel = "inverse";
169 panner.distanceModel = 1;
170 if (panner.distanceModel == 1) {
171 testFailed("distanceModel incorrectly set to " + panner.distanceModel + ".");
172 } else {
173 testPassed("distanceModel correctly not set to 1.");
174 }
175 190
176 finishJSTest(); 191 audit.runTasks();
177 } 192 </script>
178 193
179 runTest(); 194 </body>
180 195
181 </script> 196 </html>
182
183 </body>
184 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698