Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<title>Limits on col/colgroup.span</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<style>
div.square {
height:20px;
width:20px;
border:1px solid lime;
}
main table {
border-collapse:collapse;
border:1px solid blue;
}
main table col {
border-left:2px solid black;
}
</style>
<div id=log></div>
<main>
<table id=table1>
<col span=1000>
<tr>
<td colspan=999><div class="square"></div></td>
<td><div class="square"></div></td>
</tr>
<tr>
<td colspan=1000><div class="square"></div></td>
</tr>
</table>
<br>
These two must look the same, each having 2 cells in one row:
<table id=table2>
<col span=1000>
<tr>
<td colspan=1000><div class="square"></div></td>
<td><div class="square"></div></td>
</tr>
</table>
<br>
<table id=table3>
<col id="colspan-3" span=1001>
<tr>
<td colspan=1000><div class="square"></div></td>
<td><div class="square"></div></td>
</tr>
</table>
<table>
<tr>
<td id="colspan-limit-test1" colspan=5></td>
<td id="colspan-limit-test2" colspan=0></td>
<td id="colspan-limit-test3" colspan=1000></td>
<td id="colspan-limit-test4" colspan=1001></td>
<td id="colspan-limit-test5" colspan=5555555></td>
</tr>
</table>
</main>
<script>
test(() => {
assert_equals(table1.offsetWidth, 53);
}, "col span of 1000 must work");
test(() => {
assert_equals(table2.offsetWidth, 51, "table2 width");
assert_equals(table3.offsetWidth, 51, "table3 width");
}, "col span of 1001 must be treated as 1000");
test(() => {
let td = document.createElement("td");
td.colSpan = 5;
assert_equals(td.colSpan, 5);
td.colSpan = 0;
assert_equals(td.colSpan, 1);
td.colSpan = 1000;
assert_equals(td.colSpan, 1000);
td.colSpan = 1001;
assert_equals(td.colSpan, 1000);
td.colSpan = 555555;
assert_equals(td.colSpan, 1000);
}, "colspan must be clamped to [1, 1000] when set via script");
test(() => {
assert_equals(document.getElementById("colspan-limit-test1").colSpan, 5);
assert_equals(document.getElementById("colspan-limit-test2").colSpan, 1);
assert_equals(document.getElementById("colspan-limit-test3").colSpan, 1000);
assert_equals(document.getElementById("colspan-limit-test4").colSpan, 1000);
assert_equals(document.getElementById("colspan-limit-test5").colSpan, 1000);
}, "colspan must be clamped to [1, 1000] when parsing attributes");
test(() => {
let column = document.getElementById("colspan-3");
column.span = 5;
assert_equals(column.span, 5);
column.span = 0;
assert_equals(column.span, 1);
column.span = 1000;
assert_equals(column.span, 1000);
column.span = 1001;
assert_equals(column.span, 1000);
column.span = 555555;
assert_equals(column.span, 1000);
}, "column span must be clamped to [1, 1000] when set via script");
</script>