1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_text_wholeText.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,232 @@ 1.4 +<!DOCTYPE html> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=421765 1.8 +--> 1.9 +<head> 1.10 + <title>Text.wholeText tests</title> 1.11 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.12 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.13 +</head> 1.14 +<body> 1.15 +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=421765">Mozilla Bug 421765</a> 1.16 +<p id="display"></p> 1.17 +<div id="content" style="display: none"></div> 1.18 + 1.19 +<iframe id="xmlDocument" src="wholeTexty-helper.xml"></iframe> 1.20 + 1.21 +<pre id="test"> 1.22 +<script class="testbody" type="text/javascript"> 1.23 + 1.24 +/** Test for Bug 421765 **/ 1.25 + 1.26 +SimpleTest.waitForExplicitFinish(); 1.27 + 1.28 +var xmlDoc; 1.29 + 1.30 +function text(t) { return document.createTextNode(t); } 1.31 +function element() { return document.createElement("div"); } 1.32 +function cdata(t) 1.33 +{ 1.34 + xmlDoc = $("xmlDocument").contentDocument; 1.35 + // document.createCDATASection isn't implemented; clone for the win 1.36 + var node = xmlDoc.documentElement.firstChild.cloneNode(false); 1.37 + is(node.nodeType, Node.CDATA_SECTION_NODE, 1.38 + "er, why isn't this a CDATA section node?"); 1.39 + node.data = t; 1.40 + return node; 1.41 +} 1.42 + 1.43 + 1.44 +function firstTests() 1.45 +{ 1.46 + var outer = element(); 1.47 + var first = text("first"); 1.48 + var second = element(); 1.49 + second.appendChild(text("element contents")); 1.50 + outer.appendChild(first); 1.51 + outer.appendChild(second); 1.52 + 1.53 + is(first.wholeText, "first", "wrong wholeText for first"); 1.54 + 1.55 + var insertedText = text("-continued"); 1.56 + outer.insertBefore(insertedText, second); 1.57 + 1.58 + is(first.wholeText, "first-continued", 1.59 + "wrong wholeText for first after insertedText insertion"); 1.60 + is(insertedText.wholeText, "first-continued", 1.61 + "wrong wholeText for insertedText after insertedText insertion"); 1.62 + 1.63 + var cdataNode = cdata("zero-") 1.64 + outer.insertBefore(cdataNode, first); 1.65 + 1.66 + is(first.wholeText, "zero-first-continued", 1.67 + "wrong wholeText for first after cdataNode insertion"); 1.68 + is(cdataNode.wholeText, "zero-first-continued", 1.69 + "wrong wholeText for cdataNode after cdataNode insertion"); 1.70 + is(insertedText.wholeText, "zero-first-continued", 1.71 + "wrong wholeText for insertedText after cdataNode insertion"); 1.72 + 1.73 + outer.insertBefore(element(), first); 1.74 + 1.75 + is(first.wholeText, "first-continued", 1.76 + "wrong wholeText for first after element insertion"); 1.77 + is(cdataNode.wholeText, "zero-", 1.78 + "wrong wholeText for cdataNode after element insertion"); 1.79 + is(insertedText.wholeText, "first-continued", 1.80 + "wrong wholeText for insertedText after element insertion"); 1.81 + 1.82 + var cdataNode2 = cdata("-interrupted"); 1.83 + outer.insertBefore(cdataNode2, insertedText); 1.84 + 1.85 + is(first.wholeText, "first-interrupted-continued", 1.86 + "wrong wholeText for first after cdataNode2 insertion"); 1.87 + is(cdataNode2.wholeText, "first-interrupted-continued", 1.88 + "wrong wholeText for cdataNode2 after cdataNode2 insertion"); 1.89 + is(insertedText.wholeText, "first-interrupted-continued", 1.90 + "wrong wholeText for insertedText after cdataNode2 insertion"); 1.91 +} 1.92 + 1.93 +function middleTests() 1.94 +{ 1.95 + var outer = element(); 1.96 + var first = element(); 1.97 + var last = element(); 1.98 + var middle = text("middle"); 1.99 + first.appendChild(text("first element contents")); 1.100 + last.appendChild(text("last element contents")); 1.101 + outer.appendChild(first); 1.102 + outer.appendChild(middle); 1.103 + outer.appendChild(last); 1.104 + 1.105 + is(middle.wholeText, "middle", "wrong wholeText for middle"); 1.106 + 1.107 + var beforeMiddle = text("before-"); 1.108 + outer.insertBefore(beforeMiddle, middle); 1.109 + 1.110 + is(middle.wholeText, "before-middle", 1.111 + "wrong wholeText for middle after beforeMiddle insertion"); 1.112 + is(beforeMiddle.wholeText, "before-middle", 1.113 + "wrong wholeText for beforeMiddle after beforeMiddle insertion"); 1.114 + 1.115 + var midElement = element(); 1.116 + midElement.appendChild(text("middle element")); 1.117 + outer.insertBefore(midElement, middle); 1.118 + 1.119 + is(middle.wholeText, "middle", 1.120 + "wrong wholeText for middle after midElement insertion"); 1.121 + is(beforeMiddle.wholeText, "before-", 1.122 + "wrong wholeText for beforeMiddle after midElement insertion"); 1.123 + 1.124 + var cdataNode = cdata("after"); 1.125 + outer.insertBefore(cdataNode, midElement); 1.126 + 1.127 + is(cdataNode.wholeText, "before-after", 1.128 + "wrong wholeText for cdataNode after cdataNode insertion"); 1.129 + is(beforeMiddle.wholeText, "before-after", 1.130 + "wrong wholeText for beforeMiddle after cdataNode insertion"); 1.131 + is(middle.wholeText, "middle", 1.132 + "wrong wholeText for middle after cdataNode insertion"); 1.133 + 1.134 + var cdataNode2 = cdata("before-"); 1.135 + outer.insertBefore(cdataNode2, middle); 1.136 + 1.137 + is(cdataNode.wholeText, "before-after", 1.138 + "wrong wholeText for cdataNode after cdataNode2 insertion"); 1.139 + is(beforeMiddle.wholeText, "before-after", 1.140 + "wrong wholeText for beforeMiddle after cdataNode2 insertion"); 1.141 + is(cdataNode2.wholeText, "before-middle", 1.142 + "wrong wholeText for middle after cdataNode2 insertion"); 1.143 + is(middle.wholeText, "before-middle", 1.144 + "wrong wholeText for middle after cdataNode2 insertion"); 1.145 +} 1.146 + 1.147 +function lastTests() 1.148 +{ 1.149 + var outer = element(); 1.150 + var first = element(); 1.151 + var second = text("second"); 1.152 + first.appendChild(text("element contents")); 1.153 + outer.appendChild(first); 1.154 + outer.appendChild(second); 1.155 + 1.156 + is(second.wholeText, "second", "wrong wholeText for second"); 1.157 + 1.158 + var insertedText = text("before-"); 1.159 + outer.insertBefore(insertedText, second); 1.160 + 1.161 + is(second.wholeText, "before-second", 1.162 + "wrong wholeText for second after insertedText insertion"); 1.163 + is(insertedText.wholeText, "before-second", 1.164 + "wrong wholeText for insertedText after insertedText insertion"); 1.165 + 1.166 + var cdataNode = cdata("zero-") 1.167 + outer.insertBefore(cdataNode, insertedText); 1.168 + 1.169 + is(cdataNode.wholeText, "zero-before-second", 1.170 + "wrong wholeText for cdataNode after cdataNode insertion"); 1.171 + is(second.wholeText, "zero-before-second", 1.172 + "wrong wholeText for second after cdataNode insertion"); 1.173 + is(insertedText.wholeText, "zero-before-second", 1.174 + "wrong wholeText for insertedText after cdataNode insertion"); 1.175 + 1.176 + outer.insertBefore(element(), second); 1.177 + 1.178 + is(second.wholeText, "second", 1.179 + "wrong wholeText for second after element insertion"); 1.180 + is(cdataNode.wholeText, "zero-before-", 1.181 + "wrong wholeText for cdataNode after element insertion"); 1.182 + is(insertedText.wholeText, "zero-before-", 1.183 + "wrong wholeText for insertedText after element insertion"); 1.184 + 1.185 + var cdataNode2 = cdata("interrupted-"); 1.186 + outer.insertBefore(cdataNode2, insertedText); 1.187 + 1.188 + is(second.wholeText, "second", 1.189 + "wrong wholeText for second after cdataNode2 insertion"); 1.190 + is(cdataNode2.wholeText, "zero-interrupted-before-", 1.191 + "wrong wholeText for cdataNode2 after cdataNode2 insertion"); 1.192 + is(insertedText.wholeText, "zero-interrupted-before-", 1.193 + "wrong wholeText for insertedText after cdataNode2 insertion"); 1.194 +} 1.195 + 1.196 +function noParentTests() 1.197 +{ 1.198 + var textNode = text("foobar"); 1.199 + is(textNode.wholeText, textNode.data, 1.200 + "orphaned textNode should have wholeText == data"); 1.201 + is(textNode.wholeText, "foobar", 1.202 + "orphaned textNode should have wholeText == 'foobar'"); 1.203 + 1.204 + var cdataSection = cdata("baz"); 1.205 + is(cdataSection.wholeText, cdataSection.data, 1.206 + "orphaned cdatasection should have wholeText == data"); 1.207 + is(cdataSection.wholeText, "baz", 1.208 + "orphaned cdatasection should have wholeText == data"); 1.209 +} 1.210 + 1.211 +function tests() 1.212 +{ 1.213 + try 1.214 + { 1.215 + firstTests(); 1.216 + middleTests(); 1.217 + lastTests(); 1.218 + noParentTests(); 1.219 + } 1.220 + catch (e) 1.221 + { 1.222 + ok(false, "error thrown: " + e); 1.223 + } 1.224 + finally 1.225 + { 1.226 + SimpleTest.finish(); 1.227 + } 1.228 +} 1.229 + 1.230 +window.addEventListener("load", tests, false); 1.231 +</script> 1.232 +</pre> 1.233 +</body> 1.234 +</html> 1.235 +