Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>Test parsing of grid item shorthands (grid-column, grid-row, grid-area)</title>
<link rel="author" title="Simon Sapin" href="mailto:simon.sapin@exyr.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel='stylesheet' href='/resources/testharness.css'>
</head>
<body>
<script>
// For various specified values of the grid-column and grid-row shorthands,
// test the computed values of the corresponding longhands.
var grid_column_row_test_cases = [
{
specified: "3 / 4",
expected_start: "3",
expected_end: "4",
},
{
specified: "foo / span bar",
expected_start: "foo",
expected_end: "span bar",
},
// "When the second value is omitted,
// if the first value is a <custom-ident>,
// the grid-row-end/grid-column-end longhand
// is also set to that <custom-ident>;
// otherwise, it is set to auto."
{
specified: "foo",
expected_start: "foo",
expected_end: "foo",
},
{
specified: "7",
expected_start: "7",
expected_end: "auto",
},
{
specified: "foo 7",
expected_start: "7 foo",
expected_end: "auto",
},
{
specified: "span foo",
expected_start: "span foo",
expected_end: "auto",
},
{
specified: "foo 7 span",
expected_start: "span 7 foo",
expected_end: "auto",
},
{
specified: "7 span",
expected_start: "span 7",
expected_end: "auto",
},
];
// For various specified values of the grid-area shorthand,
// test the computed values of the corresponding longhands.
var grid_area_test_cases = [
{
specified: "10 / 20 / 30 / 40",
gridRowStart: "10",
gridColumnStart: "20",
gridRowEnd: "30",
gridColumnEnd: "40",
},
{
specified: "foo / bar / baz",
gridRowStart: "foo",
gridColumnStart: "bar",
gridRowEnd: "baz",
gridColumnEnd: "bar",
},
{
specified: "foo / span bar / baz",
gridRowStart: "foo",
gridColumnStart: "span bar",
gridRowEnd: "baz",
gridColumnEnd: "auto",
},
{
specified: "foo / bar",
gridRowStart: "foo",
gridColumnStart: "bar",
gridRowEnd: "foo",
gridColumnEnd: "bar",
},
{
specified: "foo / 4",
gridRowStart: "foo",
gridColumnStart: "4",
gridRowEnd: "foo",
gridColumnEnd: "auto",
},
{
specified: "foo",
gridRowStart: "foo",
gridColumnStart: "foo",
gridRowEnd: "foo",
gridColumnEnd: "foo",
},
{
specified: "7",
gridRowStart: "7",
gridColumnStart: "auto",
gridRowEnd: "auto",
gridColumnEnd: "auto",
},
]
grid_column_row_test_cases.forEach(function(test_case) {
["Column", "Row"].forEach(function(axis) {
var shorthand = "grid" + axis;
var start_longhand = "grid" + axis + "Start";
var end_longhand = "grid" + axis + "End";
test(function() {
var element = document.createElement('div');
document.body.appendChild(element);
element.style[shorthand] = test_case.specified;
var computed = window.getComputedStyle(element);
assert_equals(computed[start_longhand], test_case.expected_start);
assert_equals(computed[end_longhand], test_case.expected_end);
}, "test parsing of '" + shorthand + ": " + test_case.specified + "'");
});
});
grid_area_test_cases.forEach(function(test_case) {
test(function() {
var element = document.createElement('div');
document.body.appendChild(element);
element.style.gridArea = test_case.specified;
var computed = window.getComputedStyle(element);
[
"gridRowStart", "gridColumnStart", "gridRowEnd", "gridColumnEnd"
].forEach(function(longhand) {
assert_equals(computed[longhand], test_case[longhand], longhand);
});
}, "test parsing of 'grid-area: " + test_case.specified + "'");
});
</script>
</body>
</html>