<!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>
