Index: pkg/polymer/lib/elements/web-animations-js/test/testcases/test-addeventlistener.html |
diff --git a/pkg/polymer/lib/elements/web-animations-js/test/testcases/test-addeventlistener.html b/pkg/polymer/lib/elements/web-animations-js/test/testcases/test-addeventlistener.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c428be23ec5050ce0b424c222511a4828f082040 |
--- /dev/null |
+++ b/pkg/polymer/lib/elements/web-animations-js/test/testcases/test-addeventlistener.html |
@@ -0,0 +1,176 @@ |
+<!-- |
+Copyright 2013 Google Inc. All Rights Reserved. |
+ |
+Licensed under the Apache License, Version 2.0 (the "License"); |
+you may not use this file except in compliance with the License. |
+You may obtain a copy of the License at |
+ |
+ http://www.apache.org/licenses/LICENSE-2.0 |
+ |
+Unless required by applicable law or agreed to in writing, software |
+distributed under the License is distributed on an "AS IS" BASIS, |
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+See the License for the specific language governing permissions and |
+limitations under the License. |
+--> |
+ |
+<!DOCTYPE html><meta charset="UTF-8"> |
+<style> |
+.target { |
+ position: absolute; |
+ left: 0px; |
+ top: 0px; |
+ width: 100px; |
+ height: 100px; |
+ background-color: green; |
+} |
+</style> |
+<script src="../bootstrap.js"></script> |
+<script> |
+'use strict'; |
+ |
+var effect = { left: '100px' }; |
+ |
+var timingInput = { |
+ iterations: 2, |
+ duration: 0.25, |
+}; |
+ |
+function createAnimation() { |
+ var target = document.createElement('div'); |
+ target.className = 'target'; |
+ document.body.appendChild(target); |
+ return new Animation(target, effect, timingInput); |
+} |
+ |
+ |
+['start', 'iteration', 'end'].forEach(function (eventType) { |
+ var animation; |
+ |
+ animation = createAnimation(); |
+ var singleEventHandler = false; |
+ animation.addEventListener(eventType, function() { singleEventHandler = true; }) |
+ var testA = async_test('Check ' + eventType + ' event with single handler'); |
+ animation.addEventListener(eventType, function() { |
+ testA.step(function() { assert_true(singleEventHandler); }); |
+ testA.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ var animation = createAnimation(); |
+ var eventHandlingCount = 0; |
+ var addMultipleTimes = function() { eventHandlingCount++; }; |
+ animation.addEventListener(eventType, addMultipleTimes); |
+ animation.addEventListener(eventType, addMultipleTimes); |
+ var testB = async_test('Check ' + eventType + ' event with single handler added multiple times'); |
+ animation.addEventListener(eventType, function() { |
+ testB.step(function() { assert_equals(eventHandlingCount, 1); }); |
+ testB.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var multiEventHandlerA = false; |
+ var multiEventHandlerB = false; |
+ var multiEventHandlerC = false; |
+ animation.addEventListener(eventType, function() { multiEventHandlerA = true; }) |
+ animation.addEventListener(eventType, function() { multiEventHandlerB = true; }) |
+ animation.addEventListener(eventType, function() { multiEventHandlerC = true; }) |
+ var testC = async_test('Check ' + eventType + ' event with multiple handlers'); |
+ animation.addEventListener(eventType, function() { |
+ testC.step(function() { assert_true(multiEventHandlerA && multiEventHandlerB && multiEventHandlerC); }); |
+ testC.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var retainEventHandler = false; |
+ animation.addEventListener(eventType, function() { retainEventHandler = true; }); |
+ var removeEventHandler = true; |
+ var eventHandlerToRemove = function() { removeEventHandler = false; } |
+ animation.addEventListener(eventType, eventHandlerToRemove); |
+ animation.removeEventListener(eventType, eventHandlerToRemove); |
+ var testD = async_test('Check ' + eventType + ' event with event handler removed'); |
+ animation.addEventListener(eventType, function() { |
+ testD.step(function() { assert_true(retainEventHandler && removeEventHandler); }); |
+ testD.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var onEventHandler = false; |
+ animation['on' + eventType] = function() { onEventHandler = true; }; |
+ var testE = async_test('Check on' + eventType + ' handler'); |
+ animation.addEventListener(eventType, function() { |
+ testE.step(function() { assert_true(onEventHandler); }); |
+ testE.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var clearOnEventHandler = true; |
+ animation['on' + eventType] = function() { clearOnEventHandler = false; }; |
+ animation['on' + eventType] = null; |
+ var testF = async_test('Check clearing on' + eventType + ' handler'); |
+ animation.addEventListener(eventType, function() { |
+ testF.step(function() { assert_true(clearOnEventHandler); }); |
+ testF.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var onEventOrdering = ''; |
+ animation.addEventListener(eventType, function() { onEventOrdering += 'a'; }); |
+ animation['on' + eventType] = function() { onEventOrdering += '!'; }; |
+ animation.addEventListener(eventType, function() { onEventOrdering += 'b'; }); |
+ animation['on' + eventType] = function() { onEventOrdering += 'c'; }; |
+ animation.addEventListener(eventType, function() { onEventOrdering += 'd'; }); |
+ var testG = async_test('Check on' + eventType + ' handler ordering and overriding'); |
+ animation.addEventListener(eventType, function() { |
+ testG.step(function() { assert_equals(onEventOrdering, 'abcd'); }); |
+ testG.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var onEventOrderingAfterRemoval = ''; |
+ var eventHandlerToRemoveA = function() { onEventOrderingAfterRemoval += '!'; }; |
+ var eventHandlerToRemoveB = function() { onEventOrderingAfterRemoval += '!!'; }; |
+ animation.addEventListener(eventType, function() { onEventOrderingAfterRemoval += 'a'; }); |
+ animation.addEventListener(eventType, eventHandlerToRemoveA); |
+ animation['on' + eventType] = function() { onEventOrderingAfterRemoval += 'b'; }; |
+ animation.addEventListener(eventType, function() { onEventOrderingAfterRemoval += 'c'; }); |
+ animation.addEventListener(eventType, eventHandlerToRemoveB); |
+ animation.removeEventListener(eventType, eventHandlerToRemoveA); |
+ animation.removeEventListener(eventType, eventHandlerToRemoveB); |
+ var testH = async_test('Check on' + eventType + ' handler ordering after removal'); |
+ animation.addEventListener(eventType, function() { |
+ testH.step(function() { assert_equals(onEventOrderingAfterRemoval, 'abc'); }); |
+ testH.done(); |
+ }); |
+ document.timeline.play(animation); |
+ |
+ |
+ animation = createAnimation(); |
+ var onEventDuplication = 0; |
+ var duplicateFunction = function() { onEventDuplication += 1; }; |
+ animation.addEventListener(eventType, duplicateFunction); |
+ animation['on' + eventType] = duplicateFunction; |
+ var testI = async_test('Check on' + eventType + ' handler duplication'); |
+ animation.addEventListener(eventType, function() { |
+ testI.step(function() { assert_equals(onEventDuplication, 2); }); |
+ testI.done(); |
+ }); |
+ document.timeline.play(animation); |
+}); |
+ |
+timing_test(function(){at(1, function(){});}, 'Force testharness to execute to 1 second.'); |
+ |
+</script> |