| <!doctype html> |
| <title>Event constructors</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <div id=log></div> |
| <script> |
| test(function() { |
| assert_throws(new TypeError(), function() { |
| new Event() |
| }) |
| }) |
| test(function() { |
| var test_error = { name: "test" } |
| assert_throws(test_error, function() { |
| new Event({ toString: function() { throw test_error; } }) |
| }) |
| }) |
| test(function() { |
| var ev = new Event("") |
| assert_equals(ev.type, "") |
| assert_equals(ev.target, null) |
| assert_equals(ev.srcElement, null) |
| assert_equals(ev.currentTarget, null) |
| assert_equals(ev.eventPhase, Event.NONE) |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, false) |
| assert_equals(ev.defaultPrevented, false) |
| assert_equals(ev.returnValue, true) |
| assert_equals(ev.isTrusted, false) |
| assert_true(ev.timeStamp > 0) |
| assert_true("initEvent" in ev) |
| }) |
| test(function() { |
| var ev = new Event("test") |
| assert_equals(ev.type, "test") |
| assert_equals(ev.target, null) |
| assert_equals(ev.srcElement, null) |
| assert_equals(ev.currentTarget, null) |
| assert_equals(ev.eventPhase, Event.NONE) |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, false) |
| assert_equals(ev.defaultPrevented, false) |
| assert_equals(ev.returnValue, true) |
| assert_equals(ev.isTrusted, false) |
| assert_true(ev.timeStamp > 0) |
| assert_true("initEvent" in ev) |
| }) |
| test(function() { |
| assert_throws(new TypeError(), function() { Event("test") }, |
| 'Calling Event constructor without "new" must throw'); |
| }) |
| test(function() { |
| var ev = new Event("I am an event", { bubbles: true, cancelable: false}) |
| assert_equals(ev.type, "I am an event") |
| assert_equals(ev.bubbles, true) |
| assert_equals(ev.cancelable, false) |
| }) |
| test(function() { |
| var ev = new Event("@", { bubblesIGNORED: true, cancelable: true}) |
| assert_equals(ev.type, "@") |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, true) |
| }) |
| test(function() { |
| var ev = new Event("@", { "bubbles\0IGNORED": true, cancelable: true}) |
| assert_equals(ev.type, "@") |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, true) |
| }) |
| test(function() { |
| var ev = new Event("Xx", { cancelable: true}) |
| assert_equals(ev.type, "Xx") |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, true) |
| }) |
| test(function() { |
| var ev = new Event("Xx", {}) |
| assert_equals(ev.type, "Xx") |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, false) |
| }) |
| test(function() { |
| var ev = new Event("Xx", {bubbles: true, cancelable: false, sweet: "x"}) |
| assert_equals(ev.type, "Xx") |
| assert_equals(ev.bubbles, true) |
| assert_equals(ev.cancelable, false) |
| assert_equals(ev.sweet, undefined) |
| }) |
| test(function() { |
| var called = [] |
| var ev = new Event("Xx", { |
| get cancelable() { |
| called.push("cancelable") |
| return false |
| }, |
| get bubbles() { |
| called.push("bubbles") |
| return true; |
| }, |
| get sweet() { |
| called.push("sweet") |
| return "x" |
| } |
| }) |
| assert_array_equals(called, ["bubbles", "cancelable"]) |
| assert_equals(ev.type, "Xx") |
| assert_equals(ev.bubbles, true) |
| assert_equals(ev.cancelable, false) |
| assert_equals(ev.sweet, undefined) |
| }) |
| test(function() { |
| var ev = new CustomEvent("$", {detail: 54, sweet: "x", sweet2: "x", cancelable:true}) |
| assert_equals(ev.type, "$") |
| assert_equals(ev.bubbles, false) |
| assert_equals(ev.cancelable, true) |
| assert_equals(ev.sweet, undefined) |
| assert_equals(ev.detail, 54) |
| }) |
| </script> |