OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 | 3 |
4 <head> | 4 <head> |
5 <script src="../../resources/testharness.js"></script> | 5 <script src="../../resources/testharness.js"></script> |
6 <script src="../../resources/testharnessreport.js"></script> | 6 <script src="../../resources/testharnessreport.js"></script> |
7 <script src="../resources/audit-util.js"></script> | 7 <script src="../resources/audit-util.js"></script> |
8 <script src="../resources/audio-testing.js"></script> | 8 <script src="../resources/audit.js"></script> |
9 </head> | 9 </head> |
10 | 10 |
11 <body> | 11 <body> |
12 <script> | 12 <script> |
13 var context; | 13 var context; |
14 var panner; | 14 var panner; |
15 var audit = Audit.createTaskRunner(); | 15 var audit = Audit.createTaskRunner(); |
16 | 16 |
17 audit.defineTask("initialize", function (done) { | 17 audit.define("initialize", (task, should) => { |
18 context = new AudioContext(); | 18 should(() => { |
19 panner = context.createPanner(); | 19 context = new AudioContext(); |
20 done(); | 20 panner = context.createPanner(); |
| 21 }, "Initialize context and panner") |
| 22 .notThrow(); |
| 23 task.done(); |
21 }); | 24 }); |
22 | 25 |
23 audit.defineTask("basic", function (done) { | 26 audit.define("basic", (task, should) => { |
24 var success = true; | 27 should(panner.numberOfInputs, "panner.numberOfInputs") |
| 28 .beEqualTo(1); |
| 29 should(panner.numberOfOutputs, "panner.numberOfOutputs") |
| 30 .beEqualTo(1); |
| 31 should(panner.refDistance, "panner.refDistance") |
| 32 .beEqualTo(1); |
| 33 panner.refDistance = 270.5; |
| 34 should(panner.refDistance, "panner.refDistance = 270.5") |
| 35 .beEqualTo(270.5); |
| 36 should(panner.maxDistance, "panner.maxDistance") |
| 37 .beEqualTo(10000); |
| 38 panner.maxDistance = 100.5; |
| 39 should(panner.maxDistance, "panner.maxDistance = 100.5") |
| 40 .beEqualTo(100.5); |
| 41 should(panner.rolloffFactor, "panner.rolloffFactor") |
| 42 .beEqualTo(1); |
| 43 panner.rolloffFactor = 0.75; |
| 44 should(panner.rolloffFactor, "panner.rolloffFactor = 0.75") |
| 45 .beEqualTo(0.75); |
| 46 should(panner.coneInnerAngle, "panner.coneInnerAngle") |
| 47 .beEqualTo(360); |
| 48 panner.coneInnerAngle = 240.5; |
| 49 should(panner.coneInnerAngle, "panner.coneInnerAngle = 240.5") |
| 50 .beEqualTo(240.5); |
| 51 should(panner.coneOuterAngle, "panner.coneOuterAngle") |
| 52 .beEqualTo(360); |
| 53 panner.coneOuterAngle = 166.5; |
| 54 should(panner.coneOuterAngle, "panner.coneOuterAngle = 166.5") |
| 55 .beEqualTo(166.5); |
| 56 should(panner.coneOuterGain, "panner.coneOuterGain") |
| 57 .beEqualTo(0); |
| 58 panner.coneOuterGain = 0.25; |
| 59 should(panner.coneOuterGain, "panner.coneOuterGain = 0.25") |
| 60 .beEqualTo(0.25); |
| 61 should(panner.panningModel, "panner.panningModel") |
| 62 .beEqualTo("equalpower"); |
| 63 should(panner.distanceModel) |
| 64 .beEqualTo("inverse", "panner.distanceModel"); |
25 | 65 |
26 success = Should("panner.numberOfInputs", panner.numberOfInputs) | 66 should(panner.positionX.value, "panner.positionX") |
27 .beEqualTo(1) && success; | 67 .beEqualTo(0); |
28 success = Should("panner.numberOfOutputs", panner.numberOfOutputs) | 68 should(panner.positionY.value, "panner.positionY") |
29 .beEqualTo(1) && success; | 69 .beEqualTo(0); |
30 success = Should("panner.refDistance", panner.refDistance) | 70 should(panner.positionZ.value, "panner.positionZ") |
31 .beEqualTo(1) && success; | 71 .beEqualTo(0); |
32 panner.refDistance = 270.5; | 72 should(panner.orientationX.value, "panner.orientationX") |
33 success = Should("panner.refDistance = 270.5", panner.refDistance) | 73 .beEqualTo(1); |
34 .beEqualTo(270.5) && success; | 74 should(panner.orientationY.value, "panner.orientationY") |
35 success = Should("panner.maxDistance", panner.maxDistance) | 75 .beEqualTo(0); |
36 .beEqualTo(10000) && success; | 76 should(panner.orientationZ.value, "panner.orientationZ") |
37 panner.maxDistance = 100.5; | 77 .beEqualTo(0); |
38 success = Should("panner.maxDistance = 100.5", panner.maxDistance) | |
39 .beEqualTo(100.5) && success; | |
40 success = Should("panner.rolloffFactor", panner.rolloffFactor) | |
41 .beEqualTo(1) && success; | |
42 panner.rolloffFactor = 0.75; | |
43 success = Should("panner.rolloffFactor = 0.75", panner.rolloffFactor) | |
44 .beEqualTo(0.75) && success; | |
45 success = Should("panner.coneInnerAngle", panner.coneInnerAngle) | |
46 .beEqualTo(360) && success; | |
47 panner.coneInnerAngle = 240.5; | |
48 success = Should("panner.coneInnerAngle = 240.5", panner.coneInnerAngle) | |
49 .beEqualTo(240.5) && success; | |
50 success = Should("panner.coneOuterAngle", panner.coneOuterAngle) | |
51 .beEqualTo(360) && success; | |
52 panner.coneOuterAngle = 166.5; | |
53 success = Should("panner.coneOuterAngle = 166.5", panner.coneOuterAngle) | |
54 .beEqualTo(166.5) && success; | |
55 success = Should("panner.coneOuterGain", panner.coneOuterGain) | |
56 .beEqualTo(0) && success; | |
57 panner.coneOuterGain = 0.25; | |
58 success = Should("panner.coneOuterGain = 0.25", panner.coneOuterGain) | |
59 .beEqualTo(0.25) && success; | |
60 success = Should("panner.panningModel", panner.panningModel) | |
61 .beEqualTo("equalpower") && success; | |
62 success = Should("panner.distanceModel", panner.distanceModel) | |
63 .beEqualTo("inverse") && success; | |
64 | 78 |
65 success = Should("panner.positionX", panner.positionX.value) | 79 task.done(); |
66 .beEqualTo(0) && success; | |
67 success = Should("panner.positionY", panner.positionY.value) | |
68 .beEqualTo(0) && success; | |
69 success = Should("panner.positionZ", panner.positionZ.value) | |
70 .beEqualTo(0) && success; | |
71 success = Should("panner.orientationX", panner.orientationX.value) | |
72 .beEqualTo(1) && success; | |
73 success = Should("panner.orientationY", panner.orientationY.value) | |
74 .beEqualTo(0) && success; | |
75 success = Should("panner.orientationZ", panner.orientationZ.value) | |
76 .beEqualTo(0) && success; | |
77 | |
78 Should("Basic Panner attribute tests", success) | |
79 .summarize("passed", "failed"); | |
80 | |
81 done(); | |
82 }); | 80 }); |
83 | 81 |
84 audit.defineTask("listener", function (done) { | 82 audit.define("listener", (task, should) => { |
85 var success = true; | 83 should(context.listener.positionX.value, "listener.positionX") |
| 84 .beEqualTo(0); |
| 85 should(context.listener.positionY.value, "listener.positionY") |
| 86 .beEqualTo(0); |
| 87 should(context.listener.positionZ.value, "listener.positionZ") |
| 88 .beEqualTo(0); |
| 89 should(context.listener.forwardX.value, "listener.forwardX") |
| 90 .beEqualTo(0); |
| 91 should(context.listener.forwardY.value, "listener.forwardY") |
| 92 .beEqualTo(0); |
| 93 should(context.listener.forwardZ.value, "listener.forwardZ") |
| 94 .beEqualTo(-1); |
| 95 should(context.listener.upX.value, "listener.upX") |
| 96 .beEqualTo(0); |
| 97 should(context.listener.upY.value, "listener.upY") |
| 98 .beEqualTo(1); |
| 99 should(context.listener.upZ.value, "listener.upZ") |
| 100 .beEqualTo(0); |
86 | 101 |
87 success = Should("listener.positionX", context.listener.positionX.value) | 102 task.done(); |
88 .beEqualTo(0) && success; | |
89 success = Should("listener.positionY", context.listener.positionY.value) | |
90 .beEqualTo(0) && success; | |
91 success = Should("listener.positionZ", context.listener.positionZ.value) | |
92 .beEqualTo(0) && success; | |
93 success = Should("listener.forwardX", context.listener.forwardX.value) | |
94 .beEqualTo(0) && success; | |
95 success = Should("listener.forwardY", context.listener.forwardY.value) | |
96 .beEqualTo(0) && success; | |
97 success = Should("listener.forwardZ", context.listener.forwardZ.value) | |
98 .beEqualTo(-1) && success; | |
99 success = Should("listener.upX", context.listener.upX.value) | |
100 .beEqualTo(0) && success; | |
101 success = Should("listener.upY", context.listener.upY.value) | |
102 .beEqualTo(1) && success; | |
103 success = Should("listener.upZ", context.listener.upZ.value) | |
104 .beEqualTo(0) && success; | |
105 | |
106 Should("Basic AudioListener attribute tests", success) | |
107 .summarize("passed", "failed"); | |
108 done(); | |
109 }); | 103 }); |
110 | 104 |
111 audit.defineTask("panning models", function (done) { | 105 audit.define("panning models", (task, should) => { |
112 // Check that the .panningModel attribute can be set to all legal values
. | 106 // Check that the .panningModel attribute can be set to all legal values
. |
113 var panningModels = ["equalpower", "HRTF"]; | 107 var panningModels = ["equalpower", "HRTF"]; |
114 | 108 |
115 var success = true; | |
116 for (var i = 0; i < panningModels.length; ++i) { | 109 for (var i = 0; i < panningModels.length; ++i) { |
117 success = Should('Set panner.panningModel = "' + panningModels[i] + '"
', function () { | 110 should(function () { |
118 panner.panningModel = panningModels[i]; | 111 panner.panningModel = panningModels[i]; |
119 }).notThrow() && success; | 112 }, |
| 113 'Set panner.panningModel = "' + panningModels[i] + '"') |
| 114 .notThrow(); |
120 | 115 |
121 success = Should('panner.panningModel = "' + panningModels[i] + '"', p
anner.panningModel) | 116 should(panner.panningModel, |
122 .beEqualTo(panningModels[i]) && success; | 117 'panner.panningModel = "' + panningModels[i] + '"') |
| 118 .beEqualTo(panningModels[i]); |
123 } | 119 } |
124 | 120 |
125 success = Should('panner.panningModel = "invalid"', function () { | 121 should(function () { |
126 panner.panningModel = "invalid"; | 122 panner.panningModel = "invalid"; |
127 }).notThrow() && success; | 123 }, |
| 124 'panner.panningModel = "invalid"') |
| 125 .notThrow(); |
128 | 126 |
129 success = Should("panner.panningModel after invalid setter", panner.pann
ingModel) | 127 should(panner.panningModel, |
130 .beEqualTo("HRTF") && success; | 128 "panner.panningModel after invalid setter") |
| 129 .beEqualTo("HRTF"); |
131 | 130 |
132 // Check that numerical values are no longer supported. We shouldn't th
row and the value | 131 // Check that numerical values are no longer supported. We shouldn't th
row and the value |
133 // shouldn't be changed. | 132 // shouldn't be changed. |
134 panner.panningModel = "HRTF"; | 133 panner.panningModel = "HRTF"; |
135 success = Should('panner.panningModel = 1', function () { | 134 should(function () { |
136 panner.panningModel = 1; | 135 panner.panningModel = 1; |
137 }).notThrow() && success; | 136 }, 'panner.panningModel = 1').notThrow(); |
138 | 137 |
139 success = Should('panner.panningModel', panner.panningModel) | 138 should(panner.panningModel, 'panner.panningModel') |
140 .beEqualTo("HRTF") && success; | 139 .beEqualTo("HRTF"); |
141 | 140 |
142 Should("Basic Panner panning models tests", success) | 141 task.done(); |
143 .summarize("passed", "failed"); | |
144 done(); | |
145 }); | 142 }); |
146 | 143 |
147 audit.defineTask("distance models", function (done) { | 144 audit.define("distance models", (task, should) => { |
148 // Check that the .panningModel attribute can be set to all legal values
. | 145 // Check that the .panningModel attribute can be set to all legal values
. |
149 var distanceModels = ["linear", "inverse", "exponential"]; | 146 var distanceModels = ["linear", "inverse", "exponential"]; |
150 | 147 |
151 var success = true; | |
152 for (var i = 0; i < distanceModels.length; ++i) { | 148 for (var i = 0; i < distanceModels.length; ++i) { |
153 success = Should('panner.distanceModel = "' + distanceModels[i] + '"', | 149 should( |
154 function () { | 150 function () { |
155 panner.distanceModel = distanceModels[i]; | 151 panner.distanceModel = distanceModels[i]; |
156 }).notThrow() && success; | 152 }, |
| 153 'panner.distanceModel = "' + distanceModels[i] + '"') |
| 154 .notThrow(); |
157 | 155 |
158 success = Should('panner.distanceModel = "' + distanceModels[i] + '"',
panner | 156 should(panner.distanceModel, |
159 .distanceModel) | 157 'panner.distanceModel = "' + distanceModels[i] + '"') |
160 .beEqualTo(distanceModels[i]) && success; | 158 .beEqualTo(distanceModels[i]); |
161 } | 159 } |
162 | 160 |
163 success = Should('panner.distanceModel = "invalid"', function () { | 161 should(function () { |
164 panner.distanceModel = "invalid"; | 162 panner.distanceModel = "invalid"; |
165 }).notThrow() && success; | 163 }, |
| 164 'panner.distanceModel = "invalid"') |
| 165 .notThrow(); |
166 | 166 |
167 success = Should("panner.distanceModel", panner.distanceModel) | 167 should(panner.distanceModel, "panner.distanceModel") |
168 .beEqualTo("exponential") && success; | 168 .beEqualTo("exponential"); |
169 | 169 |
170 Should("Basic Panner distance models tests", success) | 170 task.done(); |
171 .summarize("passed", "failed"); | |
172 done(); | |
173 }); | 171 }); |
174 | 172 |
175 audit.runTasks(); | 173 audit.run(); |
176 </script> | 174 </script> |
177 | 175 |
178 </body> | 176 </body> |
179 | 177 |
180 </html> | 178 </html> |
OLD | NEW |