function testLines(elementName, grid, expectedValues) {
is(grid.cols.lines.length, expectedValues.length, elementName + " has expected number of lines.");
for (let i = 0; i < grid.cols.lines.length; i++) {
// 'number' is optional.
if (typeof(expectedValues[i].number) != "undefined") {
is(grid.cols.lines[i].number, expectedValues[i].number, elementName + " line " + (i + 1) + " has expected number.");
} else {
// If 'number' is omitted, assume that first line is line 1 and increase from there.
is(grid.cols.lines[i].number, (i + 1), elementName + " line " + (i + 1) + " has expected number.");
}
// 'negativeNumber' is optional.
if (typeof(expectedValues[i].negativeNumber) != "undefined") {
// Check for the supplied number.
is(grid.cols.lines[i].negativeNumber, expectedValues[i].negativeNumber, elementName + " line " + (i + 1) + " has expected negativeNumber.");
}
// 'start' is optional.
if (typeof(expectedValues[i].start) != "undefined") {
is(grid.cols.lines[i].start, expectedValues[i].start, elementName + " line " + (i + 1) + " has expected start.");
}
// 'breadth' is optional.
if (typeof(expectedValues[i].breadth) != "undefined") {
is(grid.cols.lines[i].breadth, 0, elementName + " line " + (i + 1) + " has zero breadth.");
}
// 'names' is optional.
if (typeof(expectedValues[i].names) != "undefined") {
is(grid.cols.lines[i].names + "", expectedValues[i].names, elementName + " line " + (i + 1) + " has expected names.");
}
// 'todo_names' is optional.
if (typeof(expectedValues[i].todo_names) != "undefined") {
todo_is(grid.cols.lines[i].names + "", expectedValues[i].todo_names, elementName + " line " + (i + 1) + " has expected names.");
}
}
}
function runTests() {
let wrapper;
let grid;
let expectedValues;
// test resolved value of grid-template-columns
let templateColumnsText = getComputedStyle(wrapper).gridTemplateColumns;
is(templateColumnsText, "50px 0px 0px 100px 0px 0px 0px", "Resolved value of grid-template-columns reports removed auto-fits as '0px'.");
// test starts, breadths, and states
expectedValues = [
{ "start": 0, "breadth": 50, "state": "static" },
{ "start": 50, "breadth": 0, "state": "static" },
{ "start": 50, "breadth": 0, "state": "removed" },
{ "start": 50, "breadth": 100, "state": "repeat" },
{ "start": 150, "breadth": 0, "state": "removed" },
{ "start": 150, "breadth": 0, "state": "removed" },
{ "start": 150, "breadth": 0, "state": "removed" },
];
for (let i = 0; i < grid.cols.tracks.length; i++) {
is(grid.cols.tracks[i].start, expectedValues[i].start, "Column " + (i + 1) + " has expected start.");
is(grid.cols.tracks[i].breadth, expectedValues[i].breadth, "Column " + (i + 1) + " has expected breadth.");
is(grid.cols.tracks[i].state, expectedValues[i].state, "Column " + (i + 1) + " has expected state.");
}
// test auto-fill count of tracks
is(grid.cols.tracks.length, 10, "Grid column track array respects auto-fill columns.");
if (grid.cols.tracks.length == 10) {
// test for static and repeat
is(grid.cols.tracks[1].state, "static", "Grid column track 2 is marked as static.");
is(grid.cols.tracks[2].state, "repeat", "Grid column track 3 is marked as repeat.");
}
// test resolved value of grid-template-columns
templateColumnsText = getComputedStyle(wrapper).gridTemplateColumns;
is(templateColumnsText, "[real-before before] 0px [after before] 0px [after before] 0px [after before] 0px [after before] 0px [after before] 0px [after real-after]", "Resolved value of grid-template-columns no longer lists 'none' when all auto-fit tracks are empty.");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.