Bug 1493432 [wpt PR 13168] - Add interface tests for TransitionEvent, a=testonly
authorStephen McGruer <smcgruer@chromium.org>
Fri, 28 Sep 2018 09:54:11 +0000
changeset 494488 8144d7627b787613dcfb81a1fe754d97bf8d8ad7
parent 494487 2ee6cf2cb1dc314a59594fc4e63123607f0248cf
child 494489 8ded955398d6da9e9a534e2e983d6583439be3b8
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1493432, 13168, 695504, 1239457, 593620
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1493432 [wpt PR 13168] - Add interface tests for TransitionEvent, a=testonly Automatic update from web-platform-testsAdd interface tests for TransitionEvent These are modelled after the similar tests that exist for AnimationEvent in css/css-animations, except written using more modern WPT style. Bug: 695504 Change-Id: I63573cf48aba6821f5e22486ef18217d0f2828ee Reviewed-on: https://chromium-review.googlesource.com/1239457 Reviewed-by: Stephen McGruer <smcgruer@chromium.org> Reviewed-by: Xida Chen <xidachen@chromium.org> Commit-Queue: Stephen McGruer <smcgruer@chromium.org> Cr-Commit-Position: refs/heads/master@{#593620} -- wpt-commits: b040cb2a07264d35b9f47cd9deb2fb2889fca6d4 wpt-pr: 13168
testing/web-platform/tests/css/css-transitions/transitionevent-interface.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-transitions/transitionevent-interface.html
@@ -0,0 +1,229 @@
+<!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(new 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(new 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(new 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(new 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(new 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(new 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(new 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>