| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/core/timeline_display_transform.html"> |
| <link rel="import" href="/core/timeline_display_transform_animations.html"> |
| <link rel="import" href="/base/ui/animation_controller.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tv.b.unittest.testSuite(function() { // @suppress longLineCheck |
| var TimelineDisplayTransform = tv.c.TimelineDisplayTransform; |
| var TimelineDisplayTransformPanAnimation = |
| tv.c.TimelineDisplayTransformPanAnimation; |
| var TimelineDisplayTransformZoomToAnimation = |
| tv.c.TimelineDisplayTransformZoomToAnimation; |
| |
| test('panBasic', function() { |
| var target = new TimelineDisplayTransform(); |
| target.cloneAnimationState = function() { |
| return this.clone(); |
| }; |
| |
| var a = new TimelineDisplayTransformPanAnimation(10, 20, 100); |
| |
| var controller = new tv.b.ui.AnimationController(); |
| controller.target = target; |
| controller.queueAnimation(a, 0); |
| |
| assert.isTrue(a.affectsPanY); |
| tv.b.forcePendingRAFTasksToRun(50); |
| assert.isAbove(target.panX, 0); |
| tv.b.forcePendingRAFTasksToRun(100); |
| assert.isFalse(controller.hasActiveAnimation); |
| assert.equal(target.panX, 10); |
| assert.equal(target.panY, 20); |
| }); |
| |
| test('zoomBasic', function() { |
| var target = new TimelineDisplayTransform(); |
| target.panY = 30; |
| target.cloneAnimationState = function() { |
| return this.clone(); |
| }; |
| |
| var a = new TimelineDisplayTransformZoomToAnimation(10, 20, 30, 5, 100); |
| |
| var controller = new tv.b.ui.AnimationController(); |
| controller.target = target; |
| controller.queueAnimation(a, 0); |
| |
| assert.isFalse(a.affectsPanY); |
| tv.b.forcePendingRAFTasksToRun(100); |
| assert.equal(target.scaleX, 5); |
| }); |
| |
| test('panTakeover', function() { |
| var target = new TimelineDisplayTransform(); |
| target.cloneAnimationState = function() { |
| return this.clone(); |
| }; |
| |
| var b = new TimelineDisplayTransformPanAnimation(10, 0, 100); |
| var a = new TimelineDisplayTransformPanAnimation(10, 0, 100); |
| |
| var controller = new tv.b.ui.AnimationController(); |
| controller.target = target; |
| controller.queueAnimation(a, 0); |
| |
| tv.b.forcePendingRAFTasksToRun(50); |
| controller.queueAnimation(b, 50); |
| |
| tv.b.forcePendingRAFTasksToRun(100); |
| assert.isTrue(controller.hasActiveAnimation); |
| |
| tv.b.forcePendingRAFTasksToRun(150); |
| assert.isFalse(controller.hasActiveAnimation); |
| assert.equal(target.panX, 20); |
| }); |
| }); |
| </script> |