summaryrefslogtreecommitdiffstats
path: root/devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js')
-rw-r--r--devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js b/devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js
new file mode 100644
index 000000000..9d542d5f0
--- /dev/null
+++ b/devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js
@@ -0,0 +1,52 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Test that the WebAudioActor receives and emits the `automation-event` events
+ * with correct arguments from the content.
+ */
+
+add_task(function* () {
+ let { target, front } = yield initBackend(AUTOMATION_URL);
+ let events = [];
+
+ let expected = [
+ ["setValueAtTime", 0.2, 0],
+ ["linearRampToValueAtTime", 1, 0.3],
+ ["exponentialRampToValueAtTime", 0.75, 0.6],
+ ["setValueCurveAtTime", [-1, 0, 1], 0.7, 0.3],
+ ];
+
+ front.on("automation-event", onAutomationEvent);
+
+ let [_, __, [destNode, oscNode, gainNode], [connect1, connect2]] = yield Promise.all([
+ front.setup({ reload: true }),
+ once(front, "start-context"),
+ get3(front, "create-node"),
+ get2(front, "connect-node")
+ ]);
+
+ is(events.length, 4, "correct number of events fired");
+
+ function onAutomationEvent(e) {
+ let { eventName, paramName, args } = e;
+ let exp = expected[events.length];
+
+ is(eventName, exp[0], "correct eventName in event");
+ is(paramName, "frequency", "correct paramName in event");
+ is(args.length, exp.length - 1, "correct length in args");
+
+ args.forEach((a, i) => {
+ // In the case of an array
+ if (typeof a === "object") {
+ a.forEach((f, j) => is(f, exp[i + 1][j], `correct argument in Float32Array: ${f}`));
+ } else {
+ is(a, exp[i + 1], `correct ${i + 1}th argument in args: ${a}`);
+ }
+ });
+ events.push([eventName].concat(args));
+ }
+
+ front.off("automation-event", onAutomationEvent);
+ yield removeTab(target.tab);
+});