'use strict'; const controller = new CaptureController(); const type = 'my-event-type'; const listeners = {}; const listener_count = 10; for (let i = 0; i < listener_count; i++) { listeners[i] = { callback: (event) => { assert_equals(event.type, type, `Event type sent to listener ${i}`); listeners[i].execution_count++; } }; } test(() => { for (const i in listeners) { listeners[i].execution_count = 0; controller.addEventListener(type, listeners[i].callback); } controller.dispatchEvent(new Event(type)); for (const i in listeners) { assert_equals( listeners[i].execution_count, 1, `Callback execution count for listener ${i}`); } }, 'Registering listeners on CaptureController and dispatching an event.'); test(() => { for (const i in listeners) { listeners[i].execution_count = 0; } controller.dispatchEvent(new Event(type)); controller.dispatchEvent(new Event(type)); controller.dispatchEvent(new Event(type)); for (const i in listeners) { assert_equals( listeners[i].execution_count, 3, `Callback execution count for listener ${i}`); } }, 'Dispatching an multiple events to CaptureController.'); test(() => { for (const i in listeners) { listeners[i].execution_count = 0; if (i % 3) { listeners[i].removed = false; } else { listeners[i].removed = true; controller.removeEventListener(type, listeners[i].callback); }; } controller.dispatchEvent(new Event(type)); controller.dispatchEvent(new Event(type)); for (const i in listeners) { assert_equals( listeners[i].execution_count, listeners[i].removed ? 0 : 2, `Callback execution count for listener ${i}`); } }, 'Unregistering listeners from CaptureController and dispatching an event.');