| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <script> |
| description("Tests that HTMLTableElement.caption / tHead / tFoot are nullable and behave according to specification."); |
| |
| var table = document.createElement("table"); |
| shouldBe("table.__proto__", "HTMLTableElement.prototype"); |
| var caption = document.createElement("caption"); |
| shouldBe("caption.__proto__", "HTMLTableCaptionElement.prototype"); |
| var thead = document.createElement("thead"); |
| shouldBe("thead.__proto__", "HTMLTableSectionElement.prototype"); |
| var tfoot = document.createElement("tFoot"); |
| shouldBe("tfoot.__proto__", "HTMLTableSectionElement.prototype"); |
| |
| debug(""); |
| debug("* HTMLTableElement.caption"); |
| shouldBeNull("table.caption"); |
| evalAndLog("table.caption = caption"); |
| shouldBe("table.caption", "caption"); |
| shouldThrow("table.caption = document.body", "'TypeError: The HTMLTableElement.caption attribute must be an instance of HTMLTableCaptionElement'"); |
| shouldBe("table.caption", "caption"); |
| evalAndLog("table.caption = null"); |
| shouldBeNull("table.caption"); |
| evalAndLog("table.caption = caption"); |
| shouldBe("table.caption", "caption"); |
| evalAndLog("table.caption = undefined"); // undefined is converted to null for nullable attributes. |
| shouldBeNull("table.caption"); |
| |
| debug(""); |
| debug("* HTMLTableElement.tHead"); |
| shouldBeNull("table.tHead"); |
| evalAndLog("table.tHead = thead"); |
| shouldBe("table.tHead", "thead"); |
| shouldThrow("table.tHead = document.body", "'TypeError: The HTMLTableElement.tHead attribute must be an instance of HTMLTableSectionElement'"); |
| shouldBe("table.tHead", "thead"); |
| shouldThrowErrorName("table.tHead = tfoot", "HierarchyRequestError"); |
| shouldBe("table.tHead", "thead"); |
| evalAndLog("table.tHead = null"); |
| shouldBeNull("table.tHead"); |
| evalAndLog("table.tHead = thead"); |
| shouldBe("table.tHead", "thead"); |
| evalAndLog("table.tHead = undefined"); // undefined is converted to null for nullable attributes. |
| shouldBeNull("table.tHead"); |
| |
| debug(""); |
| debug("* HTMLTableElement.tFoot"); |
| shouldBeNull("table.tFoot"); |
| evalAndLog("table.tFoot = tfoot"); |
| shouldBe("table.tFoot", "tfoot"); |
| shouldThrow("table.tFoot = document.body", "'TypeError: The HTMLTableElement.tFoot attribute must be an instance of HTMLTableSectionElement'"); |
| shouldBe("table.tFoot", "tfoot"); |
| shouldThrowErrorName("table.tFoot = thead", "HierarchyRequestError"); |
| shouldBe("table.tFoot", "tfoot"); |
| evalAndLog("table.tFoot = null"); |
| shouldBeNull("table.tFoot"); |
| evalAndLog("table.tFoot = tfoot"); |
| shouldBe("table.tFoot", "tfoot"); |
| evalAndLog("table.tFoot = undefined"); // undefined is converted to null for nullable attributes. |
| shouldBeNull("table.tFoot"); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |