summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html')
-rw-r--r--testing/web-platform/tests/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html237
1 files changed, 237 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html b/testing/web-platform/tests/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html
new file mode 100644
index 0000000000..e8325388d1
--- /dev/null
+++ b/testing/web-platform/tests/webaudio/the-audio-api/the-analysernode-interface/test-analysernode.html
@@ -0,0 +1,237 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ 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);
+
+ assert_equals(
+ analyser.channelCount,
+ 2,
+ "analyser node has 2 input channels by default"
+ );
+ assert_equals(
+ analyser.channelCountMode,
+ "max",
+ "Correct channelCountMode for the analyser node"
+ );
+ assert_equals(
+ analyser.channelInterpretation,
+ "speakers",
+ "Correct channelCountInterpretation for the analyser node"
+ );
+
+ assert_equals(
+ analyser.fftSize,
+ 2048,
+ "Correct default value for fftSize"
+ );
+ assert_equals(
+ analyser.frequencyBinCount,
+ 1024,
+ "Correct default value for frequencyBinCount"
+ );
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 0;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 1;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 8;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 100;
+ }); // non-power of two
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 2049;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 4097;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 8193;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 16385;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 32769;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.fftSize = 65536;
+ });
+ analyser.fftSize = 1024;
+ assert_equals(
+ analyser.frequencyBinCount,
+ 512,
+ "Correct new value for frequencyBinCount"
+ );
+
+ assert_equals(
+ analyser.minDecibels,
+ -100,
+ "Correct default value for minDecibels"
+ );
+ assert_equals(
+ analyser.maxDecibels,
+ -30,
+ "Correct default value for maxDecibels"
+ );
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.minDecibels = -30;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.minDecibels = -29;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.maxDecibels = -100;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.maxDecibels = -101;
+ });
+
+ assert_true(
+ Math.abs(analyser.smoothingTimeConstant - 0.8) < 0.001,
+ "Correct default value for smoothingTimeConstant"
+ );
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.smoothingTimeConstant = -0.1;
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser.smoothingTimeConstant = 1.1;
+ });
+ analyser.smoothingTimeConstant = 0;
+ analyser.smoothingTimeConstant = 1;
+ }
+
+ function testConstructor() {
+ var context = new AudioContext();
+
+ var analyser = new AnalyserNode(context);
+ assert_equals(
+ analyser.channelCount,
+ 2,
+ "analyser node has 2 input channels by default"
+ );
+ assert_equals(
+ analyser.channelCountMode,
+ "max",
+ "Correct channelCountMode for the analyser node"
+ );
+ assert_equals(
+ analyser.channelInterpretation,
+ "speakers",
+ "Correct channelCountInterpretation for the analyser node"
+ );
+
+ assert_equals(
+ analyser.fftSize,
+ 2048,
+ "Correct default value for fftSize"
+ );
+ assert_equals(
+ analyser.frequencyBinCount,
+ 1024,
+ "Correct default value for frequencyBinCount"
+ );
+ assert_equals(
+ analyser.minDecibels,
+ -100,
+ "Correct default value for minDecibels"
+ );
+ assert_equals(
+ analyser.maxDecibels,
+ -30,
+ "Correct default value for maxDecibels"
+ );
+ assert_true(
+ Math.abs(analyser.smoothingTimeConstant - 0.8) < 0.001,
+ "Correct default value for smoothingTimeConstant"
+ );
+
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 0 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 1 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 8 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 100 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 2049 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 4097 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 8193 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 16385 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 32769 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { fftSize: 65536 });
+ });
+ analyser = new AnalyserNode(context, { fftSize: 1024 });
+ assert_equals(
+ analyser.frequencyBinCount,
+ 512,
+ "Correct new value for frequencyBinCount"
+ );
+
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { minDecibels: -30 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { minDecibels: -29 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { maxDecibels: -100 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { maxDecibels: -101 });
+ });
+
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: -0.1 });
+ });
+ assert_throws_dom("INDEX_SIZE_ERR", function() {
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: -1.1 });
+ });
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: 0 });
+ analyser = new AnalyserNode(context, { smoothingTimeConstant: 1 });
+ }
+ test(testNode, "Test AnalyserNode API");
+ test(testConstructor, "Test AnalyserNode's ctor API");
+ </script>
+</head>
+</body>
+</html>