| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>CSS Transitions Test: TransitionEvent interface</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-transitions-1/#interface-transitionevent"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="transitionevent-interface.js"></script> | |
| <script> | |
| test(function() { | |
| var event = new TransitionEvent(""); | |
| assert_true(event instanceof window.TransitionEvent); | |
| }, "the event is an instance of TransitionEvent"); | |
| test(function() { | |
| var event = new TransitionEvent(""); | |
| assert_true(event instanceof window.Event); | |
| }, "the event inherts from Event"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent(); | |
| }, 'First argument is required, so was expecting a TypeError.'); | |
| }, 'Missing type argument'); | |
| test(function() { | |
| var event = new TransitionEvent("test"); | |
| assert_equals(event.type, "test"); | |
| }, "type argument is string"); | |
| test(function() { | |
| var event = new TransitionEvent(null); | |
| assert_equals(event.type, "null"); | |
| }, "type argument is null"); | |
| test(function() { | |
| var event = new TransitionEvent(undefined); | |
| assert_equals(event.type, "undefined"); | |
| }, "event type set to undefined"); | |
| test(function() { | |
| var event = new TransitionEvent("test"); | |
| assert_equals(event.propertyName, ""); | |
| }, "propertyName has default value of empty string"); | |
| test(function() { | |
| var event = new TransitionEvent("test"); | |
| assert_equals(event.elapsedTime, 0.0); | |
| }, "elapsedTime has default value of 0.0"); | |
| test(function() { | |
| var event = new TransitionEvent("test"); | |
| assert_readonly(event, "propertyName", "readonly attribute value"); | |
| }, "propertyName is readonly"); | |
| test(function() { | |
| var event = new TransitionEvent("test"); | |
| assert_readonly(event, "elapsedTime", "readonly attribute value"); | |
| }, "elapsedTime is readonly"); | |
| test(function() { | |
| var event = new TransitionEvent("test", null); | |
| assert_equals(event.propertyName, ""); | |
| assert_equals(event.elapsedTime, 0.0); | |
| }, "animationEventInit argument is null"); | |
| test(function() { | |
| var event = new TransitionEvent("test", undefined); | |
| assert_equals(event.propertyName, ""); | |
| assert_equals(event.elapsedTime, 0.0); | |
| }, "animationEventInit argument is undefined"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {}); | |
| assert_equals(event.propertyName, ""); | |
| assert_equals(event.elapsedTime, 0.0); | |
| }, "animationEventInit argument is empty dictionary"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {pseudoElement: "::testPseudo"}); | |
| assert_equals(event.pseudoElement, "::testPseudo"); | |
| }, "TransitionEvent.pseudoElement initialized from the dictionary"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: "sample"}); | |
| assert_equals(event.propertyName, "sample"); | |
| }, "propertyName set to 'sample'"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: undefined}); | |
| assert_equals(event.propertyName, ""); | |
| }, "propertyName set to undefined"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: null}); | |
| assert_equals(event.propertyName, "null"); | |
| }, "propertyName set to null"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: false}); | |
| assert_equals(event.propertyName, "false"); | |
| }, "propertyName set to false"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: true}); | |
| assert_equals(event.propertyName, "true"); | |
| }, "propertyName set to true"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: 0.5}); | |
| assert_equals(event.propertyName, "0.5"); | |
| }, "propertyName set to a number"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: []}); | |
| assert_equals(event.propertyName, ""); | |
| }, "propertyName set to []"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: [1, 2, 3]}); | |
| assert_equals(event.propertyName, "1,2,3"); | |
| }, "propertyName set to [1, 2, 3]"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {propertyName: {sample: 0.5}}); | |
| assert_equals(event.propertyName, "[object Object]"); | |
| }, "propertyName set to an object"); | |
| test(function() { | |
| var event = new TransitionEvent("test", | |
| {propertyName: {valueOf: function () { return 'sample'; }}}); | |
| assert_equals(event.propertyName, "[object Object]"); | |
| }, "propertyName set to an object with a valueOf function"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: 0.5}); | |
| assert_equals(event.elapsedTime, 0.5); | |
| }, "elapsedTime set to 0.5"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: -0.5}); | |
| assert_equals(event.elapsedTime, -0.5); | |
| }, "elapsedTime set to -0.5"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: undefined}); | |
| assert_equals(event.elapsedTime, 0); | |
| }, "elapsedTime set to undefined"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: null}); | |
| assert_equals(event.elapsedTime, 0); | |
| }, "elapsedTime set to null"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: false}); | |
| assert_equals(event.elapsedTime, 0); | |
| }, "elapsedTime set to false"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: true}); | |
| assert_equals(event.elapsedTime, 1); | |
| }, "elapsedTime set to true"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: ""}); | |
| assert_equals(event.elapsedTime, 0); | |
| }, "elapsedTime set to ''"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: []}); | |
| assert_equals(event.elapsedTime, 0); | |
| }, "elapsedTime set to []"); | |
| test(function() { | |
| var event = new TransitionEvent("test", {elapsedTime: [0.5]}); | |
| assert_equals(event.elapsedTime, 0.5); | |
| }, "elapsedTime set to [0.5]"); | |
| test(function() { | |
| var event = new TransitionEvent( | |
| "test", {elapsedTime: { valueOf: function() { return 0.5; }}}); | |
| assert_equals(event.elapsedTime, 0.5); | |
| }, "elapsedTime set to an object with a valueOf function"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent("test", {elapsedTime: NaN}); | |
| }, 'elapsedTime cannot be NaN so was expecting a TypeError'); | |
| }, "elapsedTime cannot be set to NaN"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent("test", {elapsedTime: Infinity}); | |
| }, 'elapsedTime cannot be Infinity so was expecting a TypeError'); | |
| }, "elapsedTime cannot be set to Infinity"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent("test", {elapsedTime: -Infinity}); | |
| }, 'elapsedTime cannot be -Infinity so was expecting a TypeError'); | |
| }, "elapsedTime cannot be set to -Infinity"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent("test", {elapsedTime: "sample"}); | |
| }, 'elapsedTime cannot be a string so was expecting a TypeError'); | |
| }, "elapsedTime cannot be set to 'sample'"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent("test", {elapsedTime: [0.5, 1.0]}); | |
| }, 'elapsedTime cannot be a multi-element array so was expecting a TypeError'); | |
| }, "elapsedTime cannot be set to [0.5, 1.0]"); | |
| test(function() { | |
| assert_throws_js(TypeError, function() { | |
| new TransitionEvent("test", {elapsedTime: { sample: 0.5}}); | |
| }, 'elapsedTime cannot be an object so was expecting a TypeError'); | |
| }, "elapsedTime cannot be set to an object"); | |
| test(function() { | |
| var eventInit = {propertyName: "sample", elapsedTime: 0.5}; | |
| var event = new TransitionEvent("test", eventInit); | |
| assert_equals(event.propertyName, "sample"); | |
| assert_equals(event.elapsedTime, 0.5); | |
| }, "TransitionEventInit properties set value"); | |
| </script> |