diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/tabular-data/the-tr-element')
5 files changed, 360 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/cells.html b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/cells.html new file mode 100644 index 0000000000..2678d3b1c2 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/cells.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTMLTableRowElement#cells</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<table> + <tr id="testTr"> + <td>First</td> + <div><td>Second</td></div> + <td>Third + <table> + <tr><td>Nested first</td></tr> + </table> + </td> + <img> + </tr> +</table> +<script> +var tr = document.getElementById("testTr"); + +test(function () { + tr.insertBefore(document.createElementNS("foo", "td"), tr.children[1]); + assert_array_equals(tr.cells, [tr.children[0], tr.children[2], tr.children[3]]); +}, "HTMLTableRowElement cells ignores nested tables and non-HTML elements"); +</script> diff --git a/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/deleteCell.html b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/deleteCell.html new file mode 100644 index 0000000000..9962617a71 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/deleteCell.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTMLTableRowElement#deleteCell</title> +<link rel="author" title="Intel" href="http://www.intel.com/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<table> + <tr id="testTr"> + <td>ABCDE</td> + <td>12345</td> + <td>ABC12</td> + </tr> +</table> + +<script> + +var tr = document.getElementById("testTr"); + +test(function () { + tr.deleteCell(0); + assert_equals(tr.cells[0].innerHTML, "12345"); + assert_equals(tr.cells.length, 2); +}, "HTMLTableRowElement deleteCell(0)"); + +test(function () { + tr.deleteCell(-1); + assert_equals(tr.cells[tr.cells.length - 1].innerHTML, "12345"); + assert_equals(tr.cells.length, 1); +}, "HTMLTableRowElement deleteCell(-1)"); + +test(function () { + assert_throws_dom("IndexSizeError", function () { + tr.deleteCell(-2); + }); +}, "HTMLTableRowElement deleteCell(-2)"); + +test(function () { + assert_throws_dom("IndexSizeError", function () { + tr.deleteCell(tr.cells.length); + }); +}, "HTMLTableRowElement deleteCell(cells.length)"); + +test(function () { + assert_equals(tr.cells.length, 1); + tr.deleteCell(-1); + assert_equals(tr.cells.length, 0); + tr.deleteCell(-1); + assert_equals(tr.cells.length, 0); +}, "HTMLTableRowElement deleteCell(-1) with no cells"); + +test(function () { + assert_equals(tr.cells.length, 0); + assert_throws_dom("IndexSizeError", function () { + tr.deleteCell(0); + }); +}, "HTMLTableRowElement deleteCell(0) with no cells"); + +</script> diff --git a/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/insertCell.html b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/insertCell.html new file mode 100644 index 0000000000..11cd213fe7 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/insertCell.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTMLTableRowElement#insertCell</title> +<link rel="author" title="Intel" href="http://www.intel.com/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="log"></div> + +<table> + <tr id="testTr"></tr> +</table> + +<script> + +var tr = document.getElementById("testTr"); + +test(function () { + var tdEle = tr.insertCell(0); + assert_equals(tr.cells[0], tdEle); + assert_equals(tr.cells.length, 1); +}, "HTMLTableRowElement insertCell(0)"); + +test(function () { + var tdEle = tr.insertCell(-1); + assert_equals(tr.cells[tr.cells.length - 1], tdEle); + assert_equals(tr.cells.length, 2); +}, "HTMLTableRowElement insertCell(-1)"); + + +test(function () { + var tdEle = tr.insertCell(tr.cells.length); + assert_equals(tr.cells[tr.cells.length - 1], tdEle); + assert_equals(tr.cells.length, 3); +}, "HTMLTableRowElement insertCell(cells.length)"); + +test(function () { + var tdEle = tr.insertCell(); + assert_equals(tr.cells[tr.cells.length - 1], tdEle); + assert_equals(tr.cells.length, 4); +}, "HTMLTableRowElement insertCell()"); + +test(function () { + assert_throws_dom("IndexSizeError", function () { + tr.insertCell(-2); + }); +}, "HTMLTableRowElement insertCell(-2)"); + +test(function () { + assert_throws_dom("IndexSizeError", function () { + tr.insertCell(tr.cells.length + 1); + }); +}, "HTMLTableRowElement insertCell(cells.length + 1)"); + +test(function () { + var table = document.createElementNS("http://www.w3.org/1999/xhtml", "foo:table") + var row = table.insertRow(0); + var cell = row.insertCell(0); + + assert_equals(row.cells[0], cell); + assert_equals(cell.prefix, null); +}, "HTMLTableRowElement insertCell will not copy table's prefix"); + +</script> diff --git a/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/rowIndex.html b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/rowIndex.html new file mode 100644 index 0000000000..117712563d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/rowIndex.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<title>HTMLTableRowElement.rowIndex</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +test(function() { + var row = document.createElement("table") + .appendChild(document.createElement("div")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElement("thead")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, 0); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElement("tbody")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, 0); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElement("tfoot")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, 0); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, 0); +}); +test(function() { + var row = document.createElementNS("", "table") + .appendChild(document.createElement("thead")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElementNS("", "table") + .appendChild(document.createElement("tbody")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElementNS("", "table") + .appendChild(document.createElement("tfoot")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElementNS("", "table") + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElementNS("", "thead")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElementNS("", "tbody")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +test(function() { + var row = document.createElement("table") + .appendChild(document.createElementNS("", "tfoot")) + .appendChild(document.createElement("tr")); + assert_equals(row.rowIndex, -1); +}); +</script> diff --git a/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/sectionRowIndex.html b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/sectionRowIndex.html new file mode 100644 index 0000000000..ef5366739e --- /dev/null +++ b/testing/web-platform/tests/html/semantics/tabular-data/the-tr-element/sectionRowIndex.html @@ -0,0 +1,130 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>HTMLTableRowElement.sectionRowIndex</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<table> + <thead> + <tr id="ht1"></tr> + </thead> + <tr id="t1"></tr> + <tr id="t2"> + <td> + <table> + <thead> + <tr id="nht1"></tr> + </thead> + <tr></tr> + <tr id="nt1"></tr> + <tbody> + <tr id="nbt1"></tr> + </tbody> + </table> + </td> + </tr> + <tbody> + <tr></tr> + <tr id="bt1"></tr> + </tbody> + <tfoot> + <tr></tr> + <tr></tr> + <tr id="ft1"></tr> + </tfoot> +</table> + +<script> +test(function() { + var tHeadRow = document.getElementById('ht1'); + assert_equals(tHeadRow.sectionRowIndex, 0); +}, "Row in thead in HTML"); + +test(function() { + var tRow1 = document.getElementById('t1'); + assert_equals(tRow1.sectionRowIndex, 0); +}, "Row in implicit tbody in HTML"); + +test(function() { + var tRow2 = document.getElementById('t2'); + assert_equals(tRow2.sectionRowIndex, 1); +}, "Other row in implicit tbody in HTML"); + +test(function() { + var tBodyRow = document.getElementById('bt1'); + assert_equals(tBodyRow.sectionRowIndex, 1); +}, "Row in explicit tbody in HTML"); + +test(function() { + var tFootRow = document.getElementById('ft1'); + assert_equals(tFootRow.sectionRowIndex, 2); +}, "Row in tfoot in HTML"); + +test(function() { + var childHeadRow = document.getElementById('nht1'); + assert_equals(childHeadRow.sectionRowIndex, 0); +}, "Row in thead in nested table in HTML"); + +test(function() { + var childRow = document.getElementById('nt1'); + assert_equals(childRow.sectionRowIndex, 1); +}, "Row in implicit tbody in nested table in HTML"); + +test(function() { + var childBodyRow = document.getElementById('nbt1'); + assert_equals(childBodyRow.sectionRowIndex, 0); +}, "Row in explicit tbody in nested table in HTML"); + +/* script create element test */ +var mkTrElm = function (elst) { + var elm = document.createElement("table"); + elst.forEach(function(item) { + elm = elm.appendChild(document.createElement(item)); + }); + return elm.appendChild(document.createElement("tr")); +}; + +test(function() { + assert_equals(mkTrElm([]).sectionRowIndex, 0); +}, "Row in script-created table"); + +test(function() { + assert_equals(mkTrElm(["div"]).sectionRowIndex, -1); +}, "Row in script-created div in table"); + +test(function() { + assert_equals(mkTrElm(["thead"]).sectionRowIndex, 0); +}, "Row in script-created thead in table"); + +test(function() { + assert_equals(mkTrElm(["tbody"]).sectionRowIndex, 0); +}, "Row in script-created tbody in table"); + +test(function() { + assert_equals(mkTrElm(["tfoot"]).sectionRowIndex, 0); +}, "Row in script-created tfoot in table"); + +test(function() { + assert_equals(mkTrElm(["tbody", "tr"]).sectionRowIndex, -1); +}, "Row in script-created tr in tbody in table"); + +test(function() { + assert_equals(mkTrElm(["tbody", "tr", "td"]).sectionRowIndex, -1); +}, "Row in script-created td in tr in tbody in table"); + +test(function() { + assert_equals(mkTrElm(["tbody", "tr", "td", "table"]).sectionRowIndex, 0); +}, "Row in script-created nested table"); + +test(function() { + assert_equals(mkTrElm(["tbody", "tr", "td", "table", "thead"]).sectionRowIndex, 0); +}, "Row in script-created thead in nested table"); + +test(function() { + assert_equals(mkTrElm(["tbody", "tr", "td", "table", "tbody"]).sectionRowIndex, 0); +}, "Row in script-created tbody in nested table"); + +test(function() { + assert_equals(mkTrElm(["tbody", "tr", "td", "table", "tfoot"]).sectionRowIndex, 0); +}, "Row in script-created tfoot in nested table"); +</script> |