undefined reference to 'JSC::B3::BasicBlock::fallThrough() const
[WebKit-https.git] / LayoutTests / http / wpt / web-animations / interfaces / AnimationEffectTiming / duration.html
1 <!DOCTYPE html>
2 <meta charset=utf-8>
3 <title>duration tests</title>
4 <link rel="help" href="http://w3c.github.io/web-animations/#dom-animationeffecttiming-duration">
5 <link rel="author" title="Ryo Motozawa" href="mailto:motozawa@mozilla-japan.org">
6 <script src="/resources/testharness.js"></script>
7 <script src="/resources/testharnessreport.js"></script>
8 <script src="../../testcommon.js"></script>
9 <body>
10 <div id="log"></div>
11 <script>
12 'use strict';
13
14 test(function(t) {
15   var anim = createDiv(t).animate(null);
16   assert_equals(anim.effect.timing.duration, 'auto');
17 }, 'Test default value');
18
19 test(function(t) {
20   var div = createDiv(t);
21   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
22   anim.effect.timing.duration = 123.45;
23   assert_times_equal(anim.effect.timing.duration, 123.45,
24                      'set duration 123.45');
25   assert_times_equal(anim.effect.getComputedTiming().duration, 123.45,
26                      'getComputedTiming() after set duration 123.45');
27 }, 'set duration 123.45');
28
29 test(function(t) {
30   var div = createDiv(t);
31   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
32   anim.effect.timing.duration = 'auto';
33   assert_equals(anim.effect.timing.duration, 'auto', 'set duration \'auto\'');
34   assert_equals(anim.effect.getComputedTiming().duration, 0,
35                 'getComputedTiming() after set duration \'auto\'');
36 }, 'set duration auto');
37
38 test(function(t) {
39   var div = createDiv(t);
40   var anim = div.animate({ opacity: [ 0, 1 ] }, { duration: 'auto' });
41   assert_equals(anim.effect.timing.duration, 'auto', 'set duration \'auto\'');
42   assert_equals(anim.effect.getComputedTiming().duration, 0,
43                 'getComputedTiming() after set duration \'auto\'');
44 }, 'set auto duration in animate as object');
45
46 test(function(t) {
47   var div = createDiv(t);
48   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
49   anim.effect.timing.duration = Infinity;
50   assert_equals(anim.effect.timing.duration, Infinity, 'set duration Infinity');
51   assert_equals(anim.effect.getComputedTiming().duration, Infinity,
52                 'getComputedTiming() after set duration Infinity');
53 }, 'set duration Infinity');
54
55 test(function(t) {
56   var div = createDiv(t);
57   assert_throws({ name: 'TypeError' }, function() {
58     div.animate({ opacity: [ 0, 1 ] }, -1);
59   });
60 }, 'set negative duration in animate using a duration parameter');
61
62 test(function(t) {
63   var div = createDiv(t);
64   assert_throws({ name: 'TypeError' }, function() {
65     div.animate({ opacity: [ 0, 1 ] }, -Infinity);
66   });
67 }, 'set negative Infinity duration in animate using a duration parameter');
68
69 test(function(t) {
70   var div = createDiv(t);
71   assert_throws({ name: 'TypeError' }, function() {
72     div.animate({ opacity: [ 0, 1 ] }, NaN);
73   });
74 }, 'set NaN duration in animate using a duration parameter');
75
76 test(function(t) {
77   var div = createDiv(t);
78   assert_throws({ name: 'TypeError' }, function() {
79     div.animate({ opacity: [ 0, 1 ] }, { duration: -1 });
80   });
81 }, 'set negative duration in animate using an options object');
82
83 test(function(t) {
84   var div = createDiv(t);
85   assert_throws({ name: 'TypeError' }, function() {
86     div.animate({ opacity: [ 0, 1 ] }, { duration: -Infinity });
87   });
88 }, 'set negative Infinity duration in animate using an options object');
89
90 test(function(t) {
91   var div = createDiv(t);
92   assert_throws({ name: 'TypeError' }, function() {
93     div.animate({ opacity: [ 0, 1 ] }, { duration: NaN });
94   });
95 }, 'set NaN duration in animate using an options object');
96
97 test(function(t) {
98   var div = createDiv(t);
99   assert_throws({ name: 'TypeError' }, function() {
100     div.animate({ opacity: [ 0, 1 ] }, { duration: 'abc' });
101   });
102 }, 'set abc string duration in animate using an options object');
103
104 test(function(t) {
105   var div = createDiv(t);
106   assert_throws({ name: 'TypeError' }, function() {
107     div.animate({ opacity: [ 0, 1 ] }, { duration: '100' });
108   });
109 }, 'set 100 string duration in animate using an options object');
110
111 test(function(t) {
112   var div = createDiv(t);
113   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
114   assert_throws({ name: 'TypeError' }, function() {
115     anim.effect.timing.duration = -1;
116   });
117 }, 'set negative duration');
118
119 test(function(t) {
120   var div = createDiv(t);
121   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
122   assert_throws({ name: 'TypeError' }, function() {
123     anim.effect.timing.duration = -Infinity;
124   });
125 }, 'set negative Infinity duration');
126
127 test(function(t) {
128   var div = createDiv(t);
129   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
130   assert_throws({ name: 'TypeError' }, function() {
131     anim.effect.timing.duration = NaN;
132   });
133 }, 'set NaN duration');
134
135 test(function(t) {
136   var div = createDiv(t);
137   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
138   assert_throws({ name: 'TypeError' }, function() {
139     anim.effect.timing.duration = 'abc';
140   });
141 }, 'set duration abc');
142
143 test(function(t) {
144   var div = createDiv(t);
145   var anim = div.animate({ opacity: [ 0, 1 ] }, 2000);
146   assert_throws({ name: 'TypeError' }, function() {
147     anim.effect.timing.duration = '100';
148   });
149 }, 'set duration string 100');
150
151 promise_test(function(t) {
152   var anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
153   return anim.ready.then(function() {
154     var originalStartTime   = anim.startTime;
155     var originalCurrentTime = anim.currentTime;
156     assert_equals(anim.effect.getComputedTiming().duration, 100 * MS_PER_SEC,
157                   'Initial duration should be as set on KeyframeEffect');
158
159     anim.effect.timing.duration = 200 * MS_PER_SEC;
160     assert_equals(anim.effect.getComputedTiming().duration, 200 * MS_PER_SEC,
161                   'Effect duration should have been updated');
162     assert_times_equal(anim.startTime, originalStartTime,
163                        'startTime should be unaffected by changing effect ' +
164                        'duration');
165     assert_times_equal(anim.currentTime, originalCurrentTime,
166                        'currentTime should be unaffected by changing effect ' +
167                        'duration');
168   });
169 }, 'Extending an effect\'s duration does not change the start or current time');
170
171 </script>
172 </body>