83 lines
2.5 KiB
HTML
83 lines
2.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>This tests that anon table content works well with continuation. It generates divs with display: table-cell inside a span and moves those cells out of the generated tables by setting display:block on them. This test checks that no matter how they form the continuation their order should always be 1 2 3 4 etc.</title>
|
|
<style>
|
|
.cell {
|
|
display: table-cell;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
<script>
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
var permArr = [];
|
|
var usedChars = [];
|
|
|
|
function permutateDivMoveOrder(input) {
|
|
var ch;
|
|
for (var i = 0; i < input.length; i++) {
|
|
ch = input.splice(i, 1)[0];
|
|
usedChars.push(ch);
|
|
if (input.length == 0)
|
|
permArr.push(usedChars.slice());
|
|
permutateDivMoveOrder(input);
|
|
input.splice(i, 0, ch);
|
|
usedChars.pop();
|
|
}
|
|
return permArr;
|
|
}
|
|
|
|
function generateContent() {
|
|
var content = "<span>[";
|
|
for (var i = 0; i < numberOfDivs; ++i)
|
|
content += "<div id=" + i + " class='cell'>" + i + "</div>";
|
|
content += "]</span>";
|
|
return content;
|
|
}
|
|
|
|
function validateDivsPosition()
|
|
{
|
|
var firstDiv = document.getElementById("0");
|
|
var prevOffsetLeft = firstDiv.offsetLeft;
|
|
var prevOffsetTop = firstDiv.offsetTop;
|
|
for (var i = 1; i < numberOfDivs; ++i) {
|
|
var currentDiv = document.getElementById(i);
|
|
var pass = (prevOffsetLeft < currentDiv.offsetLeft && prevOffsetTop == currentDiv.offsetTop)
|
|
|| (prevOffsetLeft == currentDiv.offsetLeft && prevOffsetTop < currentDiv.offsetTop)
|
|
|| (prevOffsetLeft > currentDiv.offsetLeft && prevOffsetTop < currentDiv.offsetTop);
|
|
if (!pass)
|
|
return false;
|
|
prevOffsetLeft = currentDiv.offsetLeft;
|
|
prevOffsetTop = currentDiv.offsetTop;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function runTest(tests) {
|
|
var failed = "";
|
|
for (var i = 0; i < tests.length; ++i) {
|
|
document.body.innerHTML = generateContent();
|
|
for (var j = 0; j < numberOfDivs; ++j) {
|
|
document.getElementById(tests[i][j]).classList.toggle("cell");
|
|
if (!validateDivsPosition()) {
|
|
failed += " " + i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var result = "Test run: " + tests.length;
|
|
if (failed.length)
|
|
result += "<br>Failed cases: " + failed;
|
|
else
|
|
result += "<br>All passed.";
|
|
document.body.innerHTML = result;
|
|
}
|
|
|
|
var numberOfDivs = 6; // 6! = 720 tests.
|
|
runTest(permutateDivMoveOrder([0, 1, 2, 3, 4, 5]));
|
|
</script>
|
|
</html> |