OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <script src="../../resources/testharness.js"></script> |
| 3 <script src="../../resources/testharnessreport.js"></script> |
| 4 <script src="resources/keyframes-test.js"></script> |
| 5 <script> |
| 6 var keyframeA = {opacity: '0', left: '0px'}; |
| 7 var keyframeB = {opacity: '0.5', left: '50px'}; |
| 8 |
| 9 function createBadOffsetKeyframe(offset) { |
| 10 return {opacity: '1', left: '100px', offset: offset}; |
| 11 } |
| 12 |
| 13 // The interpolation expectations will always be the same because we always |
| 14 // put keyframeA before keyframeB and bad offset keyframes will be ignored. |
| 15 var expectations = { |
| 16 0: {opacity: '0', left: '0px'}, |
| 17 0.25: {opacity: '0.125', left: '12.5px'}, |
| 18 0.5: {opacity: '0.25', left: '25px'}, |
| 19 0.75: {opacity: '0.375', left: '37.5px'}, |
| 20 1: {opacity: '0.5', left: '50px'}, |
| 21 }; |
| 22 |
| 23 function testBadOffsetvalues(badOffsets) { |
| 24 badOffsets.forEach(function (badOffset) { |
| 25 var badOffsetKeyframe = createBadOffsetKeyframe(badOffset); |
| 26 var keyframeCases = { |
| 27 'case A': [ |
| 28 badOffsetKeyframe, |
| 29 keyframeA, |
| 30 keyframeB, |
| 31 ], |
| 32 'case B': [ |
| 33 keyframeA, |
| 34 badOffsetKeyframe, |
| 35 keyframeB, |
| 36 ], |
| 37 'case C': [ |
| 38 keyframeA, |
| 39 keyframeB, |
| 40 badOffsetKeyframe, |
| 41 ], |
| 42 'case D': [ |
| 43 badOffsetKeyframe, |
| 44 keyframeA, |
| 45 badOffsetKeyframe, |
| 46 keyframeB, |
| 47 badOffsetKeyframe, |
| 48 ], |
| 49 }; |
| 50 for (var caseLabel in keyframeCases) { |
| 51 assertAnimationStyles(keyframeCases[caseLabel], expectations, caseLabel); |
| 52 } |
| 53 }); |
| 54 } |
| 55 |
| 56 test(function() { |
| 57 testBadOffsetvalues(['garbage', NaN, undefined, {non: 'number'}]); |
| 58 }, |
| 59 'element.animate() with keyframes that have non-numeric offset values', |
| 60 { |
| 61 help: 'http://dev.w3.org/fxtf/web-animations/#the-keyframe-dictionary', |
| 62 assert: [ |
| 63 'element.animate() should start an animation when keyframes have non-numeric
offset values.', |
| 64 'Keyframes with non-numeric offsets should be ignored as input.', |
| 65 ], |
| 66 author: 'Alan Cutter', |
| 67 }); |
| 68 |
| 69 test(function() { |
| 70 testBadOffsetvalues([-0.1, -Math.PI, -1, Math.PI, 400, 2200]); |
| 71 }, |
| 72 'element.animate() with keyframes that have offset values beyond the range [0, 1
]', |
| 73 { |
| 74 help: 'http://dev.w3.org/fxtf/web-animations/#the-keyframe-dictionary', |
| 75 assert: [ |
| 76 'element.animate() should start an animation when keyframes have offset valu
es beyond the range [0, 1].', |
| 77 'Keyframes with offsets beyond the range [0, 1] should be ignored as input.'
, |
| 78 ], |
| 79 author: 'Alan Cutter', |
| 80 }); |
| 81 </script> |
OLD | NEW |