transitionevent-interface.html (7756B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>CSS Transitions Test: TransitionEvent interface</title> 4 <link rel="help" href="https://drafts.csswg.org/css-transitions-1/#interface-transitionevent"> 5 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="transitionevent-interface.js"></script> 9 10 <script> 11 test(function() { 12 var event = new TransitionEvent(""); 13 assert_true(event instanceof window.TransitionEvent); 14 }, "the event is an instance of TransitionEvent"); 15 16 test(function() { 17 var event = new TransitionEvent(""); 18 assert_true(event instanceof window.Event); 19 }, "the event inherts from Event"); 20 21 test(function() { 22 assert_throws_js(TypeError, function() { 23 new TransitionEvent(); 24 }, 'First argument is required, so was expecting a TypeError.'); 25 }, 'Missing type argument'); 26 27 test(function() { 28 var event = new TransitionEvent("test"); 29 assert_equals(event.type, "test"); 30 }, "type argument is string"); 31 32 test(function() { 33 var event = new TransitionEvent(null); 34 assert_equals(event.type, "null"); 35 }, "type argument is null"); 36 37 test(function() { 38 var event = new TransitionEvent(undefined); 39 assert_equals(event.type, "undefined"); 40 }, "event type set to undefined"); 41 42 test(function() { 43 var event = new TransitionEvent("test"); 44 assert_equals(event.propertyName, ""); 45 }, "propertyName has default value of empty string"); 46 47 test(function() { 48 var event = new TransitionEvent("test"); 49 assert_equals(event.elapsedTime, 0.0); 50 }, "elapsedTime has default value of 0.0"); 51 52 test(function() { 53 var event = new TransitionEvent("test"); 54 assert_readonly(event, "propertyName", "readonly attribute value"); 55 }, "propertyName is readonly"); 56 57 test(function() { 58 var event = new TransitionEvent("test"); 59 assert_readonly(event, "elapsedTime", "readonly attribute value"); 60 }, "elapsedTime is readonly"); 61 62 test(function() { 63 var event = new TransitionEvent("test", null); 64 assert_equals(event.propertyName, ""); 65 assert_equals(event.elapsedTime, 0.0); 66 }, "animationEventInit argument is null"); 67 68 test(function() { 69 var event = new TransitionEvent("test", undefined); 70 assert_equals(event.propertyName, ""); 71 assert_equals(event.elapsedTime, 0.0); 72 }, "animationEventInit argument is undefined"); 73 74 test(function() { 75 var event = new TransitionEvent("test", {}); 76 assert_equals(event.propertyName, ""); 77 assert_equals(event.elapsedTime, 0.0); 78 }, "animationEventInit argument is empty dictionary"); 79 80 test(function() { 81 var event = new TransitionEvent("test", {pseudoElement: "::testPseudo"}); 82 assert_equals(event.pseudoElement, "::testPseudo"); 83 }, "TransitionEvent.pseudoElement initialized from the dictionary"); 84 85 test(function() { 86 var event = new TransitionEvent("test", {propertyName: "sample"}); 87 assert_equals(event.propertyName, "sample"); 88 }, "propertyName set to 'sample'"); 89 90 test(function() { 91 var event = new TransitionEvent("test", {propertyName: undefined}); 92 assert_equals(event.propertyName, ""); 93 }, "propertyName set to undefined"); 94 95 test(function() { 96 var event = new TransitionEvent("test", {propertyName: null}); 97 assert_equals(event.propertyName, "null"); 98 }, "propertyName set to null"); 99 100 test(function() { 101 var event = new TransitionEvent("test", {propertyName: false}); 102 assert_equals(event.propertyName, "false"); 103 }, "propertyName set to false"); 104 105 test(function() { 106 var event = new TransitionEvent("test", {propertyName: true}); 107 assert_equals(event.propertyName, "true"); 108 }, "propertyName set to true"); 109 110 test(function() { 111 var event = new TransitionEvent("test", {propertyName: 0.5}); 112 assert_equals(event.propertyName, "0.5"); 113 }, "propertyName set to a number"); 114 115 test(function() { 116 var event = new TransitionEvent("test", {propertyName: []}); 117 assert_equals(event.propertyName, ""); 118 }, "propertyName set to []"); 119 120 test(function() { 121 var event = new TransitionEvent("test", {propertyName: [1, 2, 3]}); 122 assert_equals(event.propertyName, "1,2,3"); 123 }, "propertyName set to [1, 2, 3]"); 124 125 test(function() { 126 var event = new TransitionEvent("test", {propertyName: {sample: 0.5}}); 127 assert_equals(event.propertyName, "[object Object]"); 128 }, "propertyName set to an object"); 129 130 test(function() { 131 var event = new TransitionEvent("test", 132 {propertyName: {valueOf: function () { return 'sample'; }}}); 133 assert_equals(event.propertyName, "[object Object]"); 134 }, "propertyName set to an object with a valueOf function"); 135 136 test(function() { 137 var event = new TransitionEvent("test", {elapsedTime: 0.5}); 138 assert_equals(event.elapsedTime, 0.5); 139 }, "elapsedTime set to 0.5"); 140 141 test(function() { 142 var event = new TransitionEvent("test", {elapsedTime: -0.5}); 143 assert_equals(event.elapsedTime, -0.5); 144 }, "elapsedTime set to -0.5"); 145 146 test(function() { 147 var event = new TransitionEvent("test", {elapsedTime: undefined}); 148 assert_equals(event.elapsedTime, 0); 149 }, "elapsedTime set to undefined"); 150 151 test(function() { 152 var event = new TransitionEvent("test", {elapsedTime: null}); 153 assert_equals(event.elapsedTime, 0); 154 }, "elapsedTime set to null"); 155 156 test(function() { 157 var event = new TransitionEvent("test", {elapsedTime: false}); 158 assert_equals(event.elapsedTime, 0); 159 }, "elapsedTime set to false"); 160 161 test(function() { 162 var event = new TransitionEvent("test", {elapsedTime: true}); 163 assert_equals(event.elapsedTime, 1); 164 }, "elapsedTime set to true"); 165 166 test(function() { 167 var event = new TransitionEvent("test", {elapsedTime: ""}); 168 assert_equals(event.elapsedTime, 0); 169 }, "elapsedTime set to ''"); 170 171 test(function() { 172 var event = new TransitionEvent("test", {elapsedTime: []}); 173 assert_equals(event.elapsedTime, 0); 174 }, "elapsedTime set to []"); 175 176 test(function() { 177 var event = new TransitionEvent("test", {elapsedTime: [0.5]}); 178 assert_equals(event.elapsedTime, 0.5); 179 }, "elapsedTime set to [0.5]"); 180 181 test(function() { 182 var event = new TransitionEvent( 183 "test", {elapsedTime: { valueOf: function() { return 0.5; }}}); 184 assert_equals(event.elapsedTime, 0.5); 185 }, "elapsedTime set to an object with a valueOf function"); 186 187 test(function() { 188 assert_throws_js(TypeError, function() { 189 new TransitionEvent("test", {elapsedTime: NaN}); 190 }, 'elapsedTime cannot be NaN so was expecting a TypeError'); 191 }, "elapsedTime cannot be set to NaN"); 192 193 test(function() { 194 assert_throws_js(TypeError, function() { 195 new TransitionEvent("test", {elapsedTime: Infinity}); 196 }, 'elapsedTime cannot be Infinity so was expecting a TypeError'); 197 }, "elapsedTime cannot be set to Infinity"); 198 199 test(function() { 200 assert_throws_js(TypeError, function() { 201 new TransitionEvent("test", {elapsedTime: -Infinity}); 202 }, 'elapsedTime cannot be -Infinity so was expecting a TypeError'); 203 }, "elapsedTime cannot be set to -Infinity"); 204 205 test(function() { 206 assert_throws_js(TypeError, function() { 207 new TransitionEvent("test", {elapsedTime: "sample"}); 208 }, 'elapsedTime cannot be a string so was expecting a TypeError'); 209 }, "elapsedTime cannot be set to 'sample'"); 210 211 test(function() { 212 assert_throws_js(TypeError, function() { 213 new TransitionEvent("test", {elapsedTime: [0.5, 1.0]}); 214 }, 'elapsedTime cannot be a multi-element array so was expecting a TypeError'); 215 }, "elapsedTime cannot be set to [0.5, 1.0]"); 216 217 test(function() { 218 assert_throws_js(TypeError, function() { 219 new TransitionEvent("test", {elapsedTime: { sample: 0.5}}); 220 }, 'elapsedTime cannot be an object so was expecting a TypeError'); 221 }, "elapsedTime cannot be set to an object"); 222 223 test(function() { 224 var eventInit = {propertyName: "sample", elapsedTime: 0.5}; 225 var event = new TransitionEvent("test", eventInit); 226 assert_equals(event.propertyName, "sample"); 227 assert_equals(event.elapsedTime, 0.5); 228 }, "TransitionEventInit properties set value"); 229 </script>