servo/tests/wpt/css-tests/css-transitions-1_dev/html/transition-timing-function-001.htm
2017-01-08 02:26:27 +03:00

112 lines
No EOL
4.9 KiB
HTML

<!DOCTYPE html>
<html><head>
<meta charset="utf-8">
<title>CSS Transitions Test: Parsing transition-timing-function</title>
<meta content="Test checks that transition-timing-function values are parsed properly" name="assert">
<link href="http://www.w3.org/TR/css3-transitions/#transition-timing-function-property" rel="help" title="2.3. The 'transition-timing-function' Property">
<link href="http://rodneyrehm.de/en/" rel="author" title="Rodney Rehm">
<meta content="dom" name="flags">
<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)',
// 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)',
// 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>