Index: LayoutTests/web-animations-api/element-animate-list-of-keyframes.html |
diff --git a/LayoutTests/web-animations-api/element-animate-list-of-keyframes.html b/LayoutTests/web-animations-api/element-animate-list-of-keyframes.html |
index 35c06e8e94dbd660dfbd4eb1b061f4f6e3d0eb3b..8993069a756d6bdad1032b5cf26fad6ec1dc1ae4 100644 |
--- a/LayoutTests/web-animations-api/element-animate-list-of-keyframes.html |
+++ b/LayoutTests/web-animations-api/element-animate-list-of-keyframes.html |
@@ -50,6 +50,58 @@ test(function() { |
assert_equals(e2Style.backgroundColor, 'rgb(64, 64, 64)'); |
}, 'Calling animate() should start an animation. CamelCase property names should be parsed.'); |
+test(function() { |
+ var player = e1.animate([ |
+ {left: '10px', offset: '0'}, |
+ {left: '100px', offset: '1'} |
+ ], durationValue); |
+ player.pause(); |
+ player.currentTime = durationValue / 2; |
+ assert_equals(e1Style.left, '55px'); |
+}, 'Offsets may be specified as strings.'); |
+ |
+test(function() { |
+ var player = e1.animate([ |
+ {opacity: '0.5', offset: 0.5}, |
+ {opacity: '0.9', offset: 1}, |
+ {opacity: '0', offset: 0} |
+ ], durationValue); |
+ player.pause(); |
+ player.currentTime = durationValue / 4; |
+ assert_equals(e1Style.opacity, '0.25'); |
+}, 'Keyframes with offsets should become sorted by offset.'); |
+ |
+test(function() { |
+ var player = e1.animate([ |
+ {opacity: '1', offset: -1}, |
+ {opacity: '1', offset: NaN}, |
+ {opacity: '1', offset: 2}, |
+ {opacity: '0.5', offset: 1}, |
+ {opacity: '0', offset: 0} |
+ ], durationValue); |
+ player.pause(); |
+ player.currentTime = durationValue / 2; |
+ assert_equals(e1Style.opacity, '0.25'); |
+}, 'Keyframes with offsets outside the range [0.0, 1.0] are ignored.'); |
+ |
+test(function() { |
+ var keyframes = [ |
+ {opacity: '0.5'}, |
+ {opacity: '1', offset: 1}, |
+ {opacity: '0', offset: 0} |
+ ]; |
+ assert_throws('InvalidModificationError', function() { e1.animate(keyframes, durationValue); }); |
+}, 'Should throw when keyframes are not loosely sorted and any have no offset.'); |
+ |
+test(function() { |
+ var keyframes = [ |
+ {opacity: '0.5', offset: null}, |
+ {opacity: '1', offset: 1}, |
+ {opacity: '0', offset: 0} |
+ ]; |
+ assert_throws('InvalidModificationError', function() { e1.animate(keyframes, durationValue); }); |
+}, 'Should throw when keyframes are not loosely sorted and any have null offset.'); |
+ |
var keyframesWithInvalid = [ |
{width: '0px', backgroundColor: 'octarine', offset: 0}, |
{width: '1000px', foo: 'bar', offset: 1}]; |