| 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 |