diff options
Diffstat (limited to 'dom/base/test/test_bug352728.html')
-rw-r--r-- | dom/base/test/test_bug352728.html | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/dom/base/test/test_bug352728.html b/dom/base/test/test_bug352728.html new file mode 100644 index 0000000000..c5bc92da5c --- /dev/null +++ b/dom/base/test/test_bug352728.html @@ -0,0 +1,122 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=352728 +--> +<head> + <title>Test for Bug 352728</title> + <script 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 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); + + 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); + + 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> + |