| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>CSS Transitions Test: Parsing transition-timing-function</title> |
| <meta name="assert" content="Test checks that transition-timing-function values are parsed properly"> |
| <link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function-property"> |
| <link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/"> |
| <meta name="flags" content="dom"> |
| |
| <script src="/resources/testharness.js" type="text/javascript"></script> |
| <script src="/resources/testharnessreport.js" type="text/javascript"></script> |
| |
| <script src="./support/vendorPrefix.js" type="text/javascript"></script> |
| <script src="./support/helper.js" type="text/javascript"></script> |
| |
| <script id="metadata_cache">/* |
| { |
| "parse 'ease'": {}, |
| "parse 'linear'": {}, |
| "parse 'ease-in'": {}, |
| "parse 'ease-out'": {}, |
| "parse 'ease-in-out'": {}, |
| "parse 'step-start'": {}, |
| "parse 'step-end'": {}, |
| "parse 'cubic-bezier(0.1, 0.2, 0.3, 0.4)'": {}, |
| "parse 'cubic-bezier(0.1, -0.2, 0.3, -0.4)'": {}, |
| "parse 'cubic-bezier(0.1, 1.2, 0.3, 1.4)'": {}, |
| "parse 'steps(3, start)'": {}, |
| "parse 'steps(3, end)'": {}, |
| "parse 'steps(3)'": {}, |
| "parse 'cubic-bezier(foobar)'": { "flags": "invalid" }, |
| "parse 'steps(foobar)'": { "flags": "invalid" }, |
| "parse 'steps(3.3, end)'": { "flags": "invalid" }, |
| "parse 'steps(3, top)'": { "flags": "invalid" }, |
| "parse 'steps(-3, top)'": { "flags": "invalid" }, |
| "parse 'cubic-bezier(-0.1, -0.2, -0.3, -0.4)'": { "flags": "invalid" }, |
| "parse 'cubic-bezier(1.1, 1.2, 1.3, 1.4)'": { "flags": "invalid" } |
| } |
| */</script> |
| </head> |
| <body> |
| <!-- required by testharnessreport.js --> |
| <div id="log"></div> |
| <!-- elements used for testing --> |
| <div id="container"> |
| <div id="transition"></div> |
| </div> |
| |
| <script> |
| var transition = document.getElementById('transition'); |
| // "ease" |
| var defaultValue = 'cubic-bezier(0.25, 0.1, 0.25, 1)'; |
| var values = { |
| // keywords |
| 'ease': 'cubic-bezier(0.25, 0.1, 0.25, 1)', |
| 'linear': 'cubic-bezier(0, 0, 1, 1)', |
| 'ease-in': 'cubic-bezier(0.42, 0, 1, 1)', |
| 'ease-out': 'cubic-bezier(0, 0, 0.58, 1)', |
| 'ease-in-out': 'cubic-bezier(0.42, 0, 0.58, 1)', |
| 'step-start': 'steps(1, start)', |
| 'step-end': 'steps(1, end)', |
| // cubic bezier |
| 'cubic-bezier(0.1, 0.2, 0.3, 0.4)': 'cubic-bezier(0.1, 0.2, 0.3, 0.4)', |
| 'cubic-bezier(0.1, -0.2, 0.3, -0.4)': 'cubic-bezier(0.1, -0.2, 0.3, -0.4)', |
| 'cubic-bezier(0.1, 1.2, 0.3, 1.4)': 'cubic-bezier(0.1, 1.2, 0.3, 1.4)', |
| // steps |
| 'steps(3, start)': 'steps(3, start)', |
| 'steps(3, end)': 'steps(3, end)', |
| 'steps(3)': 'steps(3, end)', |
| // invalid |
| 'cubic-bezier(foobar)': defaultValue, |
| 'steps(foobar)': defaultValue, |
| 'steps(3.3, end)': defaultValue, |
| 'steps(3, top)': defaultValue, |
| 'steps(-3, top)': defaultValue, |
| // Both x values must be in the range [0, 1] |
| 'cubic-bezier(-0.1, -0.2, -0.3, -0.4)': defaultValue, |
| 'cubic-bezier(1.1, 1.2, 1.3, 1.4)': defaultValue |
| }; |
| |
| // these tests are supposed to fail and |
| // possibly make the engine issue a parser warning |
| var invalidTests = { |
| 'cubic-bezier(foobar)': true, |
| 'steps(foobar)': true, |
| 'steps(3.3, end)': true, |
| 'steps(3, top)': true, |
| 'steps(-3, top)': true, |
| // Both x values must be in the range [0, 1] |
| 'cubic-bezier(-0.1, -0.2, -0.3, -0.4)': true, |
| 'cubic-bezier(1.1, 1.2, 1.3, 1.4)': true |
| }; |
| |
| for (var key in values) { |
| if (Object.prototype.hasOwnProperty.call(values, key)) { |
| test(function() { |
| setStyle('#transition', { |
| 'transition-timing-function': key |
| }); |
| var result = computedStyle(transition, 'transition-timing-function'); |
| assert_equals(result, values[key], "Expected computed value"); |
| }, "parse '" + key + "'", |
| { |
| // mark tests that fail as such |
| flags: invalidTests[key] ? "invalid" : "" |
| }); |
| } |
| } |
| </script> |
| </body> |
| </html> |