| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="resources/audio-testing.js"></script> |
| <script src="../fast/js/resources/js-test-pre.js"></script> |
| </head> |
| |
| <body> |
| <div id="description"></div> |
| <div id="console"></div> |
| |
| <script> |
| description("Basic test for AudioPannerNode."); |
| |
| function runTest() { |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| window.jsTestIsAsync = true; |
| |
| var context = new webkitAudioContext(); |
| var panner = context.createPanner(); |
| |
| if (panner.numberOfInputs === 1) |
| testPassed("AudioPannerNode has one input."); |
| else |
| testFailed("AudioPannerNode should have one input."); |
| |
| if (panner.numberOfOutputs === 1) |
| testPassed("AudioPannerNode has one output."); |
| else |
| testFailed("AudioPannerNode should have one output."); |
| |
| if (panner.panningModel === panner.HRTF) |
| testPassed("panningModel default value is HRTF."); |
| else |
| testFailed("panningModel default value is not HRTF."); |
| |
| // Set the panning model and see if it can be read back correctly. |
| panner.panningModel = panner.EQUALPOWER; |
| if (panner.panningModel === 0) |
| testPassed("panningModel set to EQUALPOWER model and read correctly."); |
| else |
| testFailed("panningModel set to EQUALPOWER (0) but returned " + panner.panningModel); |
| |
| panner.panningModel = panner.HRTF; |
| if (panner.panningModel === 1) |
| testPassed("panningModel set to HRTF model and read correctly."); |
| else |
| testFailed("panningModel set to HRTF (1) but returned " + panner.panningModel); |
| |
| // SOUNDFIELD should throw exception because it is not |
| // currently implemented. (See https://bugs.webkit.org/show_bug.cgi?id=77367) |
| try { |
| panner.panningModel = panner.SOUNDFIELD; |
| testFailed("Setting panningModel to SOUNDFIELD should throw exception because it is not implemented."); |
| } catch(e) { |
| testPassed("Setting panningModel to SOUNDFIELD correctly throws exception because it is not implemented."); |
| } |
| |
| // Other invalid models should throw an exception. |
| try { |
| panner.panningModel = panner.SOUNDFIELD + 1; |
| testFailed("Illegal panningModel should throw exception."); |
| } catch(e) { |
| testPassed("Illegal panningModel correctly throws exception."); |
| } |
| |
| panner.distanceModel = panner.LINEAR_DISTANCE; |
| if (panner.distanceModel === 0) |
| testPassed("distanceModel set to LINEAR_DISTANCE and read correctly."); |
| else |
| testFailed("distanceModel set to LINEAR_DISTANCE (0) but returned " + panner.distanceModel); |
| |
| panner.distanceModel = panner.INVERSE_DISTANCE; |
| if (panner.distanceModel === 1) |
| testPassed("distanceModel set to INVERSE_DISTANCE and read correctly."); |
| else |
| testFailed("distanceModel set to INVERSE_DISTANCE (1) but returned " + panner.distanceModel); |
| |
| panner.distanceModel = panner.EXPONENTIAL_DISTANCE; |
| if (panner.distanceModel === 2) |
| testPassed("distanceModel set to EXPONENTIAL_DISTANCE and read correctly."); |
| else |
| testFailed("distanceModel set to EXPONENTIAL_DISTANCE (2) but returned " + panner.distanceModel); |
| |
| try { |
| panner.distanceModel = panner.EXPONENTIAL_DISTANCE + 1; |
| testFailed("Illegal distanceModel should throw exception."); |
| } catch(e) { |
| testPassed("Illegal distanceModel correctly throws exception."); |
| } |
| |
| finishJSTest(); |
| } |
| |
| runTest(); |
| successfullyParsed = true; |
| </script> |
| |
| <script src="../fast/js/resources/js-test-post.js"></script> |
| </body> |
| </html> |