1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_bug415860.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,240 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<!-- 1.7 +https://bugzilla.mozilla.org/show_bug.cgi?id=415860 1.8 +--> 1.9 +<head> 1.10 + <title>Test for Bug 415860</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=415860">Mozilla Bug 415860</a> 1.16 +<p id="display"></p> 1.17 +<div id="content" style="display: none"> 1.18 + 1.19 +</div> 1.20 +<div id="testdata"> </div> 1.21 +<pre id="test"> 1.22 +<script class="testbody" type="text/javascript"> 1.23 + 1.24 +/** Test for Bug 415860 **/ 1.25 + 1.26 +function tests() { 1.27 + // #text node 1.28 + n = document.getElementById('testdata').firstChild; 1.29 + s = getSelection(); 1.30 + 1.31 + // Initial text.. 1.32 + n.textContent = "Hello!"; 1.33 + 1.34 + // select the second last character 1.35 + r = document.createRange(); 1.36 + r.setStart(n, 4); 1.37 + r.setEnd(n, 5); 1.38 + s.addRange(r); 1.39 + 1.40 + ok(s == "o", "Should have selected 'o'"); 1.41 + ok(r.toString() == "o", "Range should be 'o'"); 1.42 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.43 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.44 + 1.45 + // Update the text 1.46 + n.textContent = "Hello!"; 1.47 + 1.48 + ok(s == "", "Should have selected ''"); 1.49 + ok(r.toString() == "", "Range should be ''"); 1.50 + ok(r.collapsed == true, "Range should be collapsed"); 1.51 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.52 + 1.53 + // select the last character 1.54 + r = document.createRange(); 1.55 + r.setStart(n, 5); 1.56 + r.setEnd(n, 6); 1.57 + s.addRange(r); 1.58 + 1.59 + ok(s == "!", "Should have selected '!'"); 1.60 + ok(r.toString() == "!", "Range should be '!'"); 1.61 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.62 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.63 + 1.64 + // Update the text 1.65 + n.textContent = "Hello!"; 1.66 + ok(s == "", "Should have selected ''"); 1.67 + ok(r.toString() == "", "Range should be ''"); 1.68 + ok(r.collapsed == true, "Range should be collapsed"); 1.69 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.70 + 1.71 + r = document.createRange(); 1.72 + r.setStart(n, 5); 1.73 + r.setEnd(n, 6); 1.74 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.75 + ok(r.toString() == "!", "Range should be '!'"); 1.76 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.77 + 1.78 + r.setStart(n, 0); 1.79 + r.setEnd(n, 6); 1.80 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.81 + ok(r.toString() == "Hello!", "Range should be 'Hello!'"); 1.82 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.83 + 1.84 + n.deleteData(0, 1); 1.85 + ok(n.nodeValue == "ello!", "Node value should be 'ello!'"); 1.86 + ok(r.toString() == "ello!", "Range should be 'ello!'"); 1.87 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.88 + 1.89 + n.deleteData(0, 4); 1.90 + ok(n.nodeValue == "!", "Node value should be '!'"); 1.91 + ok(r.toString() == "!", "Range should be '!'"); 1.92 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.93 + 1.94 + n.textContent = "Hello!"; 1.95 + r.setStart(n, 0); 1.96 + r.setEnd(n, 6); 1.97 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.98 + ok(r.toString() == "Hello!", "Range should be 'Hello!'"); 1.99 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.100 + 1.101 + n.replaceData(0, 6, "hELLO?"); 1.102 + ok(n.nodeValue == "hELLO?", "Node value should be 'hELLO?'"); 1.103 + ok(r.toString() == "", "Range should be ''"); 1.104 + ok(r.collapsed == true, "Range should be collapsed"); 1.105 + 1.106 + n.textContent = "Hello!"; 1.107 + r.setStart(n, 1); 1.108 + r.setEnd(n, 3); 1.109 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.110 + ok(r.toString() == "el", "Range should be 'el'"); 1.111 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.112 + 1.113 + n.replaceData(2, 6, "END"); 1.114 + ok(n.nodeValue == "HeEND", "Node value should be 'HeEND!'"); 1.115 + ok(r.toString() == "e", "Range should be 'e'"); 1.116 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.117 + 1.118 + n.textContent = "Hello!"; 1.119 + r.setStart(n, 1); 1.120 + r.setEnd(n, 5); 1.121 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.122 + ok(r.toString() == "ello", "Range should be 'ello'"); 1.123 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.124 + 1.125 + n.replaceData(2, 1, "MID"); 1.126 + ok(n.nodeValue == "HeMIDlo!", "Node value should be 'HeMIDlo!'"); 1.127 + ok(r.toString() == "eMIDlo", "Range should be 'eMIDlo'"); 1.128 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.129 + 1.130 + n.textContent = "Hello!"; 1.131 + r.setStart(n, 0); 1.132 + r.setEnd(n, 6); 1.133 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.134 + ok(r.toString() == "Hello!", "Range should be 'Hello!'"); 1.135 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.136 + 1.137 + n.textContent = "hELLO?..."; 1.138 + ok(n.nodeValue == "hELLO?...", "Node value should be 'hELLO?...'"); 1.139 + ok(r.toString() == "", "Range should be ''"); 1.140 + ok(r.collapsed == true, "Range should be collapsed"); 1.141 + 1.142 + n.textContent = "Hello!"; 1.143 + r.setStart(n, 1); 1.144 + r.setEnd(n, 6); 1.145 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.146 + ok(r.toString() == "ello!", "Range should be 'ello!'"); 1.147 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.148 + 1.149 + n.textContent = "Hello!"; 1.150 + r.setStart(n, 0); 1.151 + r.setEnd(n, 5); 1.152 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.153 + ok(r.toString() == "Hello", "Range should be 'Hello'"); 1.154 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.155 + 1.156 + n.textContent = "hELLO?..."; 1.157 + ok(n.nodeValue == "hELLO?...", "Node value should be 'hELLO?...'"); 1.158 + ok(r.toString() == "", "Range should be ''"); 1.159 + ok(r.collapsed == true, "Range should be collapsed"); 1.160 + 1.161 + n.textContent = "Hello!"; 1.162 + r.setStart(n, 0); 1.163 + r.setEnd(n, 5); 1.164 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.165 + ok(r.toString() == "Hello", "Range should be 'Hello'"); 1.166 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.167 + 1.168 + n.textContent = "..."; 1.169 + ok(n.nodeValue == "...", "Node value should be '...'"); 1.170 + ok(r.toString() == "", "Range should be ''"); 1.171 + ok(r.collapsed == true, "Range should be collapsed"); 1.172 + 1.173 + n.textContent = "Hello!"; 1.174 + r.setStart(n, 1); 1.175 + r.setEnd(n, 5); 1.176 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.177 + ok(r.toString() == "ello", "Range should be 'ello'"); 1.178 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.179 + 1.180 + n.textContent = "..."; 1.181 + ok(n.nodeValue == "...", "Node value should be '...'"); 1.182 + ok(r.toString() == "", "Range should be ''"); 1.183 + ok(r.collapsed == true, "Range should be collapsed"); 1.184 + 1.185 + n.textContent = "$"; 1.186 + r.setStart(n, 0); 1.187 + r.setEnd(n, 1); 1.188 + ok(n.nodeValue == "$", "Node value should be $'"); 1.189 + ok(r.toString() == "$", "Range should be '$'"); 1.190 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.191 + 1.192 + n.textContent = "?"; 1.193 + ok(n.nodeValue == "?", "Node value should be '?'"); 1.194 + ok(r.toString() == "", "Range should be ''"); 1.195 + ok(r.collapsed == true, "Range should be collapsed"); 1.196 + 1.197 + n.textContent = "Hello!"; 1.198 + r.setStart(n, 3); 1.199 + r.setEnd(n, 6); 1.200 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.201 + ok(r.toString() == "lo!", "Range should be 'lo!'"); 1.202 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.203 + 1.204 + n.replaceData(1, 4, "MID"); 1.205 + ok(n.nodeValue == "HMID!", "Node value should be 'HMID!'"); 1.206 + ok(r.toString() == "MID!", "Range should be 'MID!'"); 1.207 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.208 + 1.209 + n.textContent = "Hello!"; 1.210 + r.setStart(n, 3); 1.211 + r.setEnd(n, 6); 1.212 + ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'"); 1.213 + ok(r.toString() == "lo!", "Range should be 'lo!'"); 1.214 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.215 + 1.216 + n.replaceData(1, 2, "MID"); 1.217 + ok(n.nodeValue == "HMIDlo!", "Node value should be 'HMIDlo!'"); 1.218 + ok(r.toString() == "MIDlo!", "Range should be 'MIDlo!'"); 1.219 + ok(r.collapsed == false, "Range shouldn't be collapsed"); 1.220 + 1.221 + n.textContent = "Hello!"; 1.222 + r = document.createRange(); 1.223 + r.setStart(n, 6); 1.224 + r.setEnd(n, 6); 1.225 + ok(n.nodeValue == "Hello!", " Node value should be 'Hello!'"); 1.226 + ok(r.toString() == "", " Range should be ''"); 1.227 + ok(r.startOffset == 6, "Start offset should be 6"); 1.228 + ok(r.endOffset == 6, "End offset should be 6"); 1.229 + 1.230 + n.textContent = "Hello!"; 1.231 + ok(n.nodeValue == "Hello!", " Node value should be 'Hello!'"); 1.232 + ok(r.toString() == "", " Range should be ''"); 1.233 + ok(r.startOffset == 0, "Start offset should be 0"); 1.234 + ok(r.endOffset == 0, "End offset should be 0"); 1.235 +} 1.236 + 1.237 +tests(); 1.238 + 1.239 +</script> 1.240 +</pre> 1.241 +</body> 1.242 +</html> 1.243 +