summaryrefslogtreecommitdiffstats
path: root/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js
blob: 8d60a5e4d650c9045c3b587cd2d6767288ca5aa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Tests that default properties are returned with the correct type
 * from the AudioNode actors.
 */

add_task(function* () {
  let { target, front } = yield initBackend(SIMPLE_NODES_URL);
  let [_, nodes] = yield Promise.all([
    front.setup({ reload: true }),
    getN(front, "create-node", 15)
  ]);

  yield loadFrameScripts();

  let allParams = yield Promise.all(nodes.map(node => node.getParams()));
  let types = [
    "AudioDestinationNode", "AudioBufferSourceNode", "ScriptProcessorNode",
    "AnalyserNode", "GainNode", "DelayNode", "BiquadFilterNode", "WaveShaperNode",
    "PannerNode", "ConvolverNode", "ChannelSplitterNode", "ChannelMergerNode",
    "DynamicsCompressorNode", "OscillatorNode", "StereoPannerNode"
  ];

  let defaults = yield Promise.all(types.map(type => nodeDefaultValues(type)));

  info(JSON.stringify(defaults));

  allParams.forEach((params, i) => {
    compare(params, defaults[i], types[i]);
  });

  yield removeTab(target.tab);
});

function compare(actual, expected, type) {
  actual.forEach(({ value, param }) => {
    value = getGripValue(value);
    if (typeof expected[param] === "function") {
      ok(expected[param](value), type + " has a passing value for " + param);
    }
    else {
      is(value, expected[param], type + " has correct default value and type for " + param);
    }
  });

  info(Object.keys(expected).join(",") + " - " + JSON.stringify(expected));

  is(actual.length, Object.keys(expected).length,
    type + " has correct amount of properties.");
}