diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /dom/base/test/test_bug352728.html | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'dom/base/test/test_bug352728.html')
-rw-r--r-- | dom/base/test/test_bug352728.html | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/dom/base/test/test_bug352728.html b/dom/base/test/test_bug352728.html new file mode 100644 index 000000000..faf2f681a --- /dev/null +++ b/dom/base/test/test_bug352728.html @@ -0,0 +1,139 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=352728 +--> +<head> + <title>Test for Bug 352728</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=352728">Mozilla Bug 352728</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> +/** Test for Bug 352728 **/ + +function checkTypes(aNode, aNodeType, aTypeArray) +{ + for (var i = 0; i < aTypeArray.length; ++i) { + ok(aNode instanceof aTypeArray[i], aNodeType + " type test " + i, + aNodeType + " should be a " + aTypeArray[i]); + } +} + +function checkInterfaces(aNode, aNodeType, aInterfaceArray) +{ + for (var i = 0; i < aInterfaceArray.length; ++i) { + ok(aNode instanceof SpecialPowers.Ci[aInterfaceArray[i]], + aNodeType + " interface test " + i, + aNodeType + " should be a " + aInterfaceArray[i]); + } +} + +function testCharacterData(aNode, aText) +{ + is(aNode.length, aText.length, "Text length should match"); + is(aNode.data, aText, "Text content should match"); + is(aNode.nodeValue, aText, "Check nodeValue"); + is(aNode.localName, undefined, "Check localName") + is(aNode.namespaceURI, undefined, "Check namespaceURI"); +} + +function testComment(aText) +{ + try { + var comment = document.createComment(aText); + var types = [ Comment, CharacterData, Node ]; + checkTypes(comment, "comment", types); + + var interfaces = [ "nsIDOMComment", "nsIDOMCharacterData", "nsIDOMNode", + "nsIDOMEventTarget" ]; + checkInterfaces(comment, "comment", interfaces); + + testCharacterData(comment, aText); + is(comment.nodeName, "#comment", "Check nodeName"); + is(comment.nodeType, Node.COMMENT_NODE, "Check nodeType"); + } catch (e) { + ok(0, "Correct functioning of comment stuff", "something broke: " + e); + } +} + +function testCDATASection(aText, aShouldSucceed) +{ + try { + var cdataSection = document.createCDATASection(aText); + ok(0, "Invalid CDATA section creation", + "Shouldn't create CDATA sections in HTML"); + } catch (e) { + is(e.name, "NotSupportedError", "Check exception"); + is(e.code, DOMException.NOT_SUPPORTED_ERR, "Check exception code"); + } +} + +function testPI(aTarget, aData, aShouldSucceed, aReason) +{ + try { + var pi = document.createProcessingInstruction(aTarget, aData); + var types = [ ProcessingInstruction, Node ]; + checkTypes(pi, "processing instruction", types); + + var interfaces = [ "nsIDOMProcessingInstruction", "nsIDOMNode", + "nsIDOMEventTarget" ]; + checkInterfaces(pi, "processing instruction", interfaces); + + is(pi.target, aTarget, "Check target"); + is(pi.data, aData, "Check data"); + is(pi.nodeName, aTarget, "Check nodeName"); + is(pi.nodeValue, aData, "Check nodeValue"); + is(pi.localName, undefined, "Check localName") + is(pi.namespaceURI, undefined, "Check namespaceURI"); + + is(pi.nodeType, Node.PROCESSING_INSTRUCTION_NODE, "Check nodeType"); + + if (!aShouldSucceed) { + ok(false, "Invalid processing instruction creation", aReason); + } + } catch (e) { + if (aShouldSucceed) { + ok(false, "Correct functioning of processing instruction stuff", + "something broke: " + e); + } else { + is(e.name, "InvalidCharacterError", "Check exception"); + is(e.code, DOMException.INVALID_CHARACTER_ERR, "Check exception code"); + } + } +} + +testComment("Some text"); +testComment("Some text with a '-' in it"); +testComment("Some text with a '-' and a '-' and another '-'"); +testComment("Some text -- this should create a node!"); +testComment("<!-- This is an HTML comment -->"); + +testCDATASection("Some text", true); +testCDATASection("Some text with a '?' in it", true); +testCDATASection("Some text with a '>' in it", true); +testCDATASection("Some text with a '?' and a '>' in it", true); +testCDATASection("Some text with a '? >' in it", true); +testCDATASection("Some text -- ?> this should be ok", true); +testCDATASection("Some text ]]> this should not create a node!", false); + +testPI("foo", "bar", true); +testPI("foo:bar", "baz", true); +testPI("foo", "bar?", true); +testPI("foo", "bar>", true); +testPI("foo", "bar? >", true); +testPI("<aaa", "bar", false, "Target should not contain '<'"); +testPI("aaa>", "bar", false, "Target should not contain '>'"); +testPI("aa?", "bar", false, "Target should not contain '?'"); +testPI("foo", "bar?>", false, "Data should not contain '?>'"); +</script> +</pre> +</body> +</html> + |