summaryrefslogtreecommitdiff
path: root/js/event_target_test.ts
diff options
context:
space:
mode:
authorAdam Conrad <422184+acconrad@users.noreply.github.com>2019-01-05 15:02:44 +0000
committerRyan Dahl <ry@tinyclouds.org>2019-01-05 10:02:44 -0500
commitf44322128b1ebb3d3d0db5ab9527ee4cdfbc7942 (patch)
tree4ec076859376986f7b3c9b66406431c068257e43 /js/event_target_test.ts
parentad01085406bbcb0d0d66eb3e05d4781a3aebee21 (diff)
Add Event web API (#1059)
Diffstat (limited to 'js/event_target_test.ts')
-rw-r--r--js/event_target_test.ts66
1 files changed, 66 insertions, 0 deletions
diff --git a/js/event_target_test.ts b/js/event_target_test.ts
new file mode 100644
index 000000000..ebb92c7f0
--- /dev/null
+++ b/js/event_target_test.ts
@@ -0,0 +1,66 @@
+// Copyright 2018 the Deno authors. All rights reserved. MIT license.
+import { test, assert, assertEqual } from "./test_util.ts";
+
+test(function addEventListenerTest() {
+ const document = new EventTarget();
+
+ assertEqual(document.addEventListener("x", null, false), undefined);
+ assertEqual(document.addEventListener("x", null, true), undefined);
+ assertEqual(document.addEventListener("x", null), undefined);
+});
+
+test(function constructedEventTargetCanBeUsedAsExpected() {
+ const target = new EventTarget();
+ const event = new Event("foo", { bubbles: true, cancelable: false });
+ let callCount = 0;
+
+ function listener(e) {
+ assertEqual(e, event);
+ ++callCount;
+ }
+
+ target.addEventListener("foo", listener);
+
+ target.dispatchEvent(event);
+ assertEqual(callCount, 1);
+
+ target.dispatchEvent(event);
+ assertEqual(callCount, 2);
+
+ target.removeEventListener("foo", listener);
+ target.dispatchEvent(event);
+ assertEqual(callCount, 2);
+});
+
+test(function anEventTargetCanBeSubclassed() {
+ class NicerEventTarget extends EventTarget {
+ on(type, listener?, options?) {
+ this.addEventListener(type, listener, options);
+ }
+
+ off(type, callback?, options?) {
+ this.removeEventListener(type, callback, options);
+ }
+ }
+
+ const target = new NicerEventTarget();
+ const event = new Event("foo", { bubbles: true, cancelable: false });
+ let callCount = 0;
+
+ function listener() {
+ ++callCount;
+ }
+
+ target.on("foo", listener);
+ assertEqual(callCount, 0);
+
+ target.off("foo", listener);
+ assertEqual(callCount, 0);
+});
+
+test(function removingNullEventListenerShouldSucceed() {
+ const document = new EventTarget();
+ assertEqual(document.removeEventListener("x", null, false), undefined);
+ assertEqual(document.removeEventListener("x", null, true), undefined);
+ assertEqual(document.removeEventListener("x", null), undefined);
+});