diff options
author | Adam Conrad <422184+acconrad@users.noreply.github.com> | 2019-01-05 15:02:44 +0000 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-01-05 10:02:44 -0500 |
commit | f44322128b1ebb3d3d0db5ab9527ee4cdfbc7942 (patch) | |
tree | 4ec076859376986f7b3c9b66406431c068257e43 /js/event_target_test.ts | |
parent | ad01085406bbcb0d0d66eb3e05d4781a3aebee21 (diff) |
Add Event web API (#1059)
Diffstat (limited to 'js/event_target_test.ts')
-rw-r--r-- | js/event_target_test.ts | 66 |
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); +}); |