servo/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html

94 lines
4.2 KiB
HTML

<!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>
</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');
var defaultValue = 'ease';
var values = {
// keywords
'ease': 'ease',
'linear': 'linear',
'ease-in': 'ease-in',
'ease-out': 'ease-out',
'ease-in-out': 'ease-in-out',
'step-start': 'steps(1, start)',
'step-end': 'steps(1)',
// 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)',
'steps(3)': 'steps(3)',
'steps(3, jump-start)': 'steps(3, jump-start)',
'steps(3, jump-end)': 'steps(3)',
'steps(3, jump-both)': 'steps(3, jump-both)',
'steps(3, jump-none)': 'steps(3, jump-none)',
// invalid
'cubic-bezier(foobar)': defaultValue,
'steps(foobar)': defaultValue,
'steps(3.3, end)': defaultValue,
'steps(3, top)': defaultValue,
'steps(-3, top)': defaultValue,
'steps(0, jump-start)': defaultValue,
'steps(0, jump-end)': defaultValue,
'steps(0, jump-both)': defaultValue,
'steps(1, jump-none)': 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>