Chromium Code Reviews| Index: LayoutTests/fast/dom/Node/textContent.html |
| diff --git a/LayoutTests/fast/dom/Node/textContent.html b/LayoutTests/fast/dom/Node/textContent.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..cd99252760f5f0335ddf615a9e0358a5aff8d3e4 |
| --- /dev/null |
| +++ b/LayoutTests/fast/dom/Node/textContent.html |
| @@ -0,0 +1,259 @@ |
| +<!DOCTYPE html> |
| +<html> |
| +<head> |
| +<script src="../../../resources/testharness.js"></script> |
| +<script src="../../../resources/testharnessreport.js"></script> |
| +</head> |
| +<body> |
| +<script> |
| +var documents, doctypes; |
| +setup(function() { |
| + documents = [ |
| + [document, "parser"], |
| + [document.implementation.createDocument("", "test", null), "createDocument"], |
| + [document.implementation.createHTMLDocument("title"), "createHTMLDocument"], |
| + ] |
| + doctypes = [ |
| + [document.doctype, "parser"], |
| + [document.implementation.createDocumentType("x", "", ""), "script"], |
| + ] |
| +}) |
| + |
| +// Getting |
| +// DocumentFragment, Element: |
| +test(function() { |
| + var element = document.createElement("div") |
|
haraken
2014/07/12 15:46:13
Nit: We normally add ';' to each statement.
kangil_
2014/07/12 16:12:09
Done.
|
| + assert_equals(element.textContent, "") |
| +}, "For an empty Element, textContent should be the empty string") |
| + |
| +test(function() { |
| + assert_equals(document.createDocumentFragment().textContent, "") |
| +}, "For an empty DocumentFragment, textContent should be the empty string") |
| + |
| +test(function() { |
| + var el = document.createElement("div") |
| + el.appendChild(document.createComment(" abc ")) |
| + el.appendChild(document.createTextNode("\tDEF\t")) |
| + el.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + assert_equals(el.textContent, "\tDEF\t") |
| +}, "Element with children") |
| + |
| +test(function() { |
| + var el = document.createElement("div") |
| + var child = document.createElement("div") |
| + el.appendChild(child) |
| + child.appendChild(document.createComment(" abc ")) |
| + child.appendChild(document.createTextNode("\tDEF\t")) |
| + child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + assert_equals(el.textContent, "\tDEF\t") |
| +}, "Element with descendants") |
| + |
| +test(function() { |
| + var df = document.createDocumentFragment() |
| + df.appendChild(document.createComment(" abc ")) |
| + df.appendChild(document.createTextNode("\tDEF\t")) |
| + df.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + assert_equals(df.textContent, "\tDEF\t") |
| +}, "DocumentFragment with children") |
| + |
| +test(function() { |
| + var df = document.createDocumentFragment() |
| + var child = document.createElement("div") |
| + df.appendChild(child) |
| + child.appendChild(document.createComment(" abc ")) |
| + child.appendChild(document.createTextNode("\tDEF\t")) |
| + child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + assert_equals(df.textContent, "\tDEF\t") |
| +}, "DocumentFragment with descendants") |
| + |
| +// Text, ProcessingInstruction, Comment: |
| +test(function() { |
| + assert_equals(document.createTextNode("").textContent, "") |
| +}, "For an empty Text, textContent should be the empty string") |
| + |
| +test(function() { |
| + assert_equals(document.createProcessingInstruction("x", "").textContent, "") |
| +}, "For an empty ProcessingInstruction, textContent should be the empty string") |
| + |
| +test(function() { |
| + assert_equals(document.createComment("").textContent, "") |
| +}, "For an empty Comment, textContent should be the empty string") |
| + |
| +test(function() { |
| + assert_equals(document.createTextNode("abc").textContent, "abc") |
| +}, "For a Text with data, textContent should be that data") |
| + |
| +test(function() { |
| + assert_equals(document.createProcessingInstruction("x", "abc").textContent, "abc") |
| +}, "For a ProcessingInstruction with data, textContent should be that data") |
| + |
| +test(function() { |
| + assert_equals(document.createComment("abc").textContent, "abc") |
| +}, "For a Comment with data, textContent should be that data") |
| + |
| +// Any other node: |
| +documents.forEach(function(argument) { |
| + var doc = argument[0], creator = argument[1] |
| + test(function() { |
| + assert_equals(doc.textContent, null) |
| + }, "For Documents created by " + creator + ", textContent should be null") |
| +}) |
| + |
| +doctypes.forEach(function(argument) { |
| + var doctype = argument[0], creator = argument[1] |
| + test(function() { |
| + assert_equals(doctype.textContent, null) |
| + }, "For DocumentType created by " + creator + ", textContent should be null") |
| +}) |
| + |
| +// Setting |
| +// DocumentFragment, Element: |
| +var arguments = [ |
| + [null, null], |
| + [undefined, null], |
| + ["", null], |
| + [42, "42"], |
| + ["abc", "abc"], |
| + ["<b>xyz<\/b>", "<b>xyz<\/b>"], |
| + ["d\0e", "d\0e"] |
| + // XXX unpaired surrogate? |
| +] |
| +arguments.forEach(function(aValue) { |
| + var argument = aValue[0], expectation = aValue[1] |
| + var check = function(aElementOrDocumentFragment) { |
| + if (expectation === null) { |
| + assert_equals(aElementOrDocumentFragment.textContent, "") |
| + assert_equals(aElementOrDocumentFragment.firstChild, null) |
| + } else { |
| + assert_equals(aElementOrDocumentFragment.textContent, expectation) |
| + assert_equals(aElementOrDocumentFragment.childNodes.length, 1, |
| + "Should have one child") |
| + var firstChild = aElementOrDocumentFragment.firstChild |
| + assert_true(firstChild instanceof Text, "child should be a Text") |
| + assert_equals(firstChild.data, expectation) |
| + } |
| + } |
| + |
| + test(function() { |
| + var el = document.createElement("div") |
| + el.textContent = argument |
| + check(el) |
| + }, "Element without children set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var el = document.createElement("div") |
| + var text = el.appendChild(document.createTextNode("")) |
| + el.textContent = argument |
| + check(el) |
| + assert_equals(text.parentNode, null, "Preexisting Text should have been removed") |
| + }, "Element with empty text node as child set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var el = document.createElement("div") |
| + el.appendChild(document.createComment(" abc ")) |
| + el.appendChild(document.createTextNode("\tDEF\t")) |
| + el.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + el.textContent = argument |
| + check(el) |
| + }, "Element with children set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var el = document.createElement("div") |
| + var child = document.createElement("div") |
| + el.appendChild(child) |
| + child.appendChild(document.createComment(" abc ")) |
| + child.appendChild(document.createTextNode("\tDEF\t")) |
| + child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + el.textContent = argument |
| + check(el) |
| + assert_equals(child.childNodes.length, 3, "Should not have changed the internal structure of the removed nodes.") |
| + }, "Element with descendants set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var df = document.createDocumentFragment() |
| + df.textContent = argument |
| + check(df) |
| + }, "DocumentFragment without children set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var df = document.createDocumentFragment() |
| + var text = df.appendChild(document.createTextNode("")) |
| + df.textContent = argument |
| + check(df) |
| + assert_equals(text.parentNode, null, "Preexisting Text should have been removed") |
| + }, "DocumentFragment with empty text node as child set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var df = document.createDocumentFragment() |
| + df.appendChild(document.createComment(" abc ")) |
| + df.appendChild(document.createTextNode("\tDEF\t")) |
| + df.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + df.textContent = argument |
| + check(df) |
| + }, "DocumentFragment with children set to " + format_value(argument)) |
| + |
| + test(function() { |
| + var df = document.createDocumentFragment() |
| + var child = document.createElement("div") |
| + df.appendChild(child) |
| + child.appendChild(document.createComment(" abc ")) |
| + child.appendChild(document.createTextNode("\tDEF\t")) |
| + child.appendChild(document.createProcessingInstruction("x", " ghi ")) |
| + df.textContent = argument |
| + check(df) |
| + assert_equals(child.childNodes.length, 3, "Should not have changed the internal structure of the removed nodes.") |
| + }, "DocumentFragment with descendants set to " + format_value(argument)) |
| +}) |
| + |
| +// Text, ProcessingInstruction, Comment: |
| +test(function() { |
| + var text = document.createTextNode("abc") |
| + text.textContent = "def" |
| + assert_equals(text.textContent, "def") |
| + assert_equals(text.data, "def") |
| +}, "For a Text, textContent should set the data") |
| + |
| +test(function() { |
| + var pi = document.createProcessingInstruction("x", "abc") |
| + pi.textContent = "def" |
| + assert_equals(pi.textContent, "def") |
| + assert_equals(pi.data, "def") |
| + assert_equals(pi.target, "x") |
| +}, "For a ProcessingInstruction, textContent should set the data") |
| + |
| +test(function() { |
| + var comment = document.createComment("abc") |
| + comment.textContent = "def" |
| + assert_equals(comment.textContent, "def") |
| + assert_equals(comment.data, "def") |
| +}, "For a Comment, textContent should set the data") |
| + |
| +// Any other node: |
| +documents.forEach(function(argument) { |
| + var doc = argument[0], creator = argument[1] |
| + test(function() { |
| + var root = doc.documentElement |
| + doc.textContent = "a" |
| + assert_equals(doc.textContent, null) |
| + assert_equals(doc.documentElement, root) |
| + }, "For Documents created by " + creator + ", setting textContent should do nothing") |
| +}) |
| + |
| +doctypes.forEach(function(argument) { |
| + var doctype = argument[0], creator = argument[1] |
| + test(function() { |
| + var props = { |
| + name: doctype.name, |
| + publicId: doctype.publicId, |
| + systemId: doctype.systemId, |
| + } |
| + doctype.textContent = "b" |
| + assert_equals(doctype.textContent, null) |
| + assert_equals(doctype.name, props.name, "name should not change") |
| + assert_equals(doctype.publicId, props.publicId, "publicId should not change") |
| + assert_equals(doctype.systemId, props.systemId, "systemId should not change") |
| + }, "For DocumentType created by " + creator + ", setting textContent should do nothing") |
| +}) |
| +</script> |
| +</body> |
| +</html> |