| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>AnimationEffectTiming easing tests</title> |
| <link rel="help" href="https://w3c.github.io/web-animations/#the-animationeffecttiming-interface"> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script> |
| var animate_with_easing = function(inputEasing) { |
| return document.documentElement.animate([], { easing : inputEasing }); |
| }; |
| |
| var assert_animate_with_easing_succeeds = function(inputEasing, expectedEasing) { |
| var animation = animate_with_easing(inputEasing); |
| assert_equals(animation.effect.timing.easing, expectedEasing); |
| }; |
| |
| var assert_animate_with_easing_roundtrips = function(inputEasing) { |
| assert_animate_with_easing_succeeds(inputEasing, inputEasing); |
| }; |
| |
| var assert_animate_with_easing_throws = function(inputEasing) { |
| assert_throws( |
| {name: 'TypeError'}, |
| function() { animate_with_easing(inputEasing); }, |
| 'with inputEasing=\'' + inputEasing + '\''); |
| }; |
| |
| test(function() { |
| assert_animate_with_easing_roundtrips('ease'); |
| assert_animate_with_easing_roundtrips('linear'); |
| assert_animate_with_easing_roundtrips('ease-in'); |
| assert_animate_with_easing_roundtrips('ease-out'); |
| assert_animate_with_easing_roundtrips('ease-in-out'); |
| assert_animate_with_easing_roundtrips('step-start'); |
| assert_animate_with_easing_roundtrips('step-middle'); |
| assert_animate_with_easing_roundtrips('step-end'); |
| assert_animate_with_easing_roundtrips('steps(3, start)'); |
| assert_animate_with_easing_roundtrips('steps(3, middle)'); |
| assert_animate_with_easing_roundtrips('steps(3, end)'); |
| assert_animate_with_easing_roundtrips('cubic-bezier(0.1, 5, 0.23, 0)'); |
| }, 'Valid easing functions should come out the same as they went in'); |
| |
| test(function() { |
| assert_animate_with_easing_succeeds('steps(3)', 'steps(3, end)'); |
| }, 'steps easing second parameter defaults to end'); |
| |
| test(function() { |
| assert_animate_with_easing_succeeds('eAse\\2d iN-ouT', 'ease-in-out'); |
| }, 'Should accept arbitrary casing and escape chararcters'); |
| |
| test(function() { |
| assert_animate_with_easing_throws(''); |
| assert_animate_with_easing_throws('initial'); |
| assert_animate_with_easing_throws('inherit'); |
| assert_animate_with_easing_throws('unset'); |
| assert_animate_with_easing_throws('steps(3, nowhere)'); |
| assert_animate_with_easing_throws('steps(-3, end)'); |
| assert_animate_with_easing_throws('cubic-bezier(0.1, 0, 4, 0.4)'); |
| assert_animate_with_easing_throws('function (a){return a}'); |
| assert_animate_with_easing_throws('function (x){return x}'); |
| assert_animate_with_easing_throws('function(x, y){return 0.3}'); |
| assert_animate_with_easing_throws('7'); |
| }, 'Invalid easing values should throw a TypeError'); |
| </script> |