summaryrefslogtreecommitdiffstats
path: root/dom/media/webaudio/test/test_analyserNode.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/webaudio/test/test_analyserNode.html')
-rw-r--r--dom/media/webaudio/test/test_analyserNode.html178
1 files changed, 178 insertions, 0 deletions
diff --git a/dom/media/webaudio/test/test_analyserNode.html b/dom/media/webaudio/test/test_analyserNode.html
new file mode 100644
index 0000000000..0793eeb2cb
--- /dev/null
+++ b/dom/media/webaudio/test/test_analyserNode.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Test AnalyserNode</title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="webaudio.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+function testNode() {
+ var context = new AudioContext();
+ var buffer = context.createBuffer(1, 2048, context.sampleRate);
+ for (var i = 0; i < 2048; ++i) {
+ buffer.getChannelData(0)[i] = Math.sin(440 * 2 * Math.PI * i / context.sampleRate);
+ }
+
+ var destination = context.destination;
+
+ var source = context.createBufferSource();
+
+ var analyser = context.createAnalyser();
+
+ source.buffer = buffer;
+
+ source.connect(analyser);
+ analyser.connect(destination);
+
+ is(analyser.channelCount, 2, "analyser node has 2 input channels by default");
+ is(analyser.channelCountMode, "max", "Correct channelCountMode for the analyser node");
+ is(analyser.channelInterpretation, "speakers", "Correct channelCountInterpretation for the analyser node");
+
+ is(analyser.fftSize, 2048, "Correct default value for fftSize");
+ is(analyser.frequencyBinCount, 1024, "Correct default value for frequencyBinCount");
+ expectException(function() {
+ analyser.fftSize = 0;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 1;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 8;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 100; // non-power of two
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 2049;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 4097;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 8193;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 16385;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 32769;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.fftSize = 65536;
+ }, DOMException.INDEX_SIZE_ERR);
+ analyser.fftSize = 1024;
+ is(analyser.frequencyBinCount, 512, "Correct new value for frequencyBinCount");
+
+ is(analyser.minDecibels, -100, "Correct default value for minDecibels");
+ is(analyser.maxDecibels, -30, "Correct default value for maxDecibels");
+ expectException(function() {
+ analyser.minDecibels = -30;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.minDecibels = -29;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.maxDecibels = -100;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.maxDecibels = -101;
+ }, DOMException.INDEX_SIZE_ERR);
+
+ ok(Math.abs(analyser.smoothingTimeConstant - 0.8) < 0.001, "Correct default value for smoothingTimeConstant");
+ expectException(function() {
+ analyser.smoothingTimeConstant = -0.1;
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser.smoothingTimeConstant = 1.1;
+ }, DOMException.INDEX_SIZE_ERR);
+ analyser.smoothingTimeConstant = 0;
+ analyser.smoothingTimeConstant = 1;
+}
+
+function testConstructor() {
+ var context = new AudioContext();
+
+ var analyser = new AnalyserNode(context);
+ is(analyser.channelCount, 2, "analyser node has 2 input channels by default");
+ is(analyser.channelCountMode, "max", "Correct channelCountMode for the analyser node");
+ is(analyser.channelInterpretation, "speakers", "Correct channelCountInterpretation for the analyser node");
+
+ is(analyser.fftSize, 2048, "Correct default value for fftSize");
+ is(analyser.frequencyBinCount, 1024, "Correct default value for frequencyBinCount");
+ is(analyser.minDecibels, -100, "Correct default value for minDecibels");
+ is(analyser.maxDecibels, -30, "Correct default value for maxDecibels");
+ ok(Math.abs(analyser.smoothingTimeConstant - 0.8) < 0.001, "Correct default value for smoothingTimeConstant");
+
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 0 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 1 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 8 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 100 }); // non-power of two
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 2049 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 4097 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 8193 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 16385 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 32769 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { fftSize: 65536 });
+ }, DOMException.INDEX_SIZE_ERR);
+ analyser = new AnalyserNode(context, { fftSize: 1024 });
+ is(analyser.frequencyBinCount, 512, "Correct new value for frequencyBinCount");
+
+ expectException(function() {
+ analyser = new AnalyserNode(context, { minDecibels: -30 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { minDecibels: -29 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { maxDecibels: -100 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { maxDecibels: -101 });
+ }, DOMException.INDEX_SIZE_ERR);
+
+ expectException(function() {
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: -0.1 });
+ }, DOMException.INDEX_SIZE_ERR);
+ expectException(function() {
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: -1.1 });
+ }, DOMException.INDEX_SIZE_ERR);
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: 0 });
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: 1 });
+}
+
+SimpleTest.waitForExplicitFinish();
+addLoadEvent(function() {
+
+ testNode();
+ testConstructor();
+
+ SimpleTest.finish();
+});
+
+</script>
+</pre>
+</body>
+</html>