timeline_display_transform_animations_test.html revision 4a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724
1<!DOCTYPE html>
2<!--
3Copyright (c) 2013 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import" href="/tracing/ui/base/animation_controller.html">
9<link rel="import" href="/tracing/ui/timeline_display_transform.html">
10<link rel="import" href="/tracing/ui/timeline_display_transform_animations.html">
11
12<script>
13'use strict';
14
15tr.b.unittest.testSuite(function() { // @suppress longLineCheck
16  var TimelineDisplayTransform = tr.ui.TimelineDisplayTransform;
17  var TimelineDisplayTransformPanAnimation =
18      tr.ui.TimelineDisplayTransformPanAnimation;
19  var TimelineDisplayTransformZoomToAnimation =
20      tr.ui.TimelineDisplayTransformZoomToAnimation;
21
22  test('panBasic', function() {
23    var target = new TimelineDisplayTransform();
24    target.cloneAnimationState = function() {
25      return this.clone();
26    };
27
28    var a = new TimelineDisplayTransformPanAnimation(10, 20, 100);
29
30    var controller = new tr.ui.b.AnimationController();
31    controller.target = target;
32    controller.queueAnimation(a, 0);
33
34    assert.isTrue(a.affectsPanY);
35    tr.b.forcePendingRAFTasksToRun(50);
36    assert.isAbove(target.panX, 0);
37    tr.b.forcePendingRAFTasksToRun(100);
38    assert.isFalse(controller.hasActiveAnimation);
39    assert.equal(target.panX, 10);
40    assert.equal(target.panY, 20);
41  });
42
43  test('zoomBasic', function() {
44    var target = new TimelineDisplayTransform();
45    target.panY = 30;
46    target.cloneAnimationState = function() {
47      return this.clone();
48    };
49
50    var a = new TimelineDisplayTransformZoomToAnimation(10, 20, 30, 5, 100);
51
52    var controller = new tr.ui.b.AnimationController();
53    controller.target = target;
54    controller.queueAnimation(a, 0);
55
56    assert.isFalse(a.affectsPanY);
57    tr.b.forcePendingRAFTasksToRun(100);
58    assert.equal(target.scaleX, 5);
59  });
60
61  test('panTakeover', function() {
62    var target = new TimelineDisplayTransform();
63    target.cloneAnimationState = function() {
64      return this.clone();
65    };
66
67    var b = new TimelineDisplayTransformPanAnimation(10, 0, 100);
68    var a = new TimelineDisplayTransformPanAnimation(10, 0, 100);
69
70    var controller = new tr.ui.b.AnimationController();
71    controller.target = target;
72    controller.queueAnimation(a, 0);
73
74    tr.b.forcePendingRAFTasksToRun(50);
75    controller.queueAnimation(b, 50);
76
77    tr.b.forcePendingRAFTasksToRun(100);
78    assert.isTrue(controller.hasActiveAnimation);
79
80    tr.b.forcePendingRAFTasksToRun(150);
81    assert.isFalse(controller.hasActiveAnimation);
82    assert.equal(target.panX, 20);
83  });
84});
85</script>
86