|
1 <!DOCTYPE html> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=421765 |
|
5 --> |
|
6 <head> |
|
7 <title>Text.wholeText tests</title> |
|
8 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
10 </head> |
|
11 <body> |
|
12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=421765">Mozilla Bug 421765</a> |
|
13 <p id="display"></p> |
|
14 <div id="content" style="display: none"></div> |
|
15 |
|
16 <iframe id="xmlDocument" src="wholeTexty-helper.xml"></iframe> |
|
17 |
|
18 <pre id="test"> |
|
19 <script class="testbody" type="text/javascript"> |
|
20 |
|
21 /** Test for Bug 421765 **/ |
|
22 |
|
23 SimpleTest.waitForExplicitFinish(); |
|
24 |
|
25 var xmlDoc; |
|
26 |
|
27 function text(t) { return document.createTextNode(t); } |
|
28 function element() { return document.createElement("div"); } |
|
29 function cdata(t) |
|
30 { |
|
31 xmlDoc = $("xmlDocument").contentDocument; |
|
32 // document.createCDATASection isn't implemented; clone for the win |
|
33 var node = xmlDoc.documentElement.firstChild.cloneNode(false); |
|
34 is(node.nodeType, Node.CDATA_SECTION_NODE, |
|
35 "er, why isn't this a CDATA section node?"); |
|
36 node.data = t; |
|
37 return node; |
|
38 } |
|
39 |
|
40 |
|
41 function firstTests() |
|
42 { |
|
43 var outer = element(); |
|
44 var first = text("first"); |
|
45 var second = element(); |
|
46 second.appendChild(text("element contents")); |
|
47 outer.appendChild(first); |
|
48 outer.appendChild(second); |
|
49 |
|
50 is(first.wholeText, "first", "wrong wholeText for first"); |
|
51 |
|
52 var insertedText = text("-continued"); |
|
53 outer.insertBefore(insertedText, second); |
|
54 |
|
55 is(first.wholeText, "first-continued", |
|
56 "wrong wholeText for first after insertedText insertion"); |
|
57 is(insertedText.wholeText, "first-continued", |
|
58 "wrong wholeText for insertedText after insertedText insertion"); |
|
59 |
|
60 var cdataNode = cdata("zero-") |
|
61 outer.insertBefore(cdataNode, first); |
|
62 |
|
63 is(first.wholeText, "zero-first-continued", |
|
64 "wrong wholeText for first after cdataNode insertion"); |
|
65 is(cdataNode.wholeText, "zero-first-continued", |
|
66 "wrong wholeText for cdataNode after cdataNode insertion"); |
|
67 is(insertedText.wholeText, "zero-first-continued", |
|
68 "wrong wholeText for insertedText after cdataNode insertion"); |
|
69 |
|
70 outer.insertBefore(element(), first); |
|
71 |
|
72 is(first.wholeText, "first-continued", |
|
73 "wrong wholeText for first after element insertion"); |
|
74 is(cdataNode.wholeText, "zero-", |
|
75 "wrong wholeText for cdataNode after element insertion"); |
|
76 is(insertedText.wholeText, "first-continued", |
|
77 "wrong wholeText for insertedText after element insertion"); |
|
78 |
|
79 var cdataNode2 = cdata("-interrupted"); |
|
80 outer.insertBefore(cdataNode2, insertedText); |
|
81 |
|
82 is(first.wholeText, "first-interrupted-continued", |
|
83 "wrong wholeText for first after cdataNode2 insertion"); |
|
84 is(cdataNode2.wholeText, "first-interrupted-continued", |
|
85 "wrong wholeText for cdataNode2 after cdataNode2 insertion"); |
|
86 is(insertedText.wholeText, "first-interrupted-continued", |
|
87 "wrong wholeText for insertedText after cdataNode2 insertion"); |
|
88 } |
|
89 |
|
90 function middleTests() |
|
91 { |
|
92 var outer = element(); |
|
93 var first = element(); |
|
94 var last = element(); |
|
95 var middle = text("middle"); |
|
96 first.appendChild(text("first element contents")); |
|
97 last.appendChild(text("last element contents")); |
|
98 outer.appendChild(first); |
|
99 outer.appendChild(middle); |
|
100 outer.appendChild(last); |
|
101 |
|
102 is(middle.wholeText, "middle", "wrong wholeText for middle"); |
|
103 |
|
104 var beforeMiddle = text("before-"); |
|
105 outer.insertBefore(beforeMiddle, middle); |
|
106 |
|
107 is(middle.wholeText, "before-middle", |
|
108 "wrong wholeText for middle after beforeMiddle insertion"); |
|
109 is(beforeMiddle.wholeText, "before-middle", |
|
110 "wrong wholeText for beforeMiddle after beforeMiddle insertion"); |
|
111 |
|
112 var midElement = element(); |
|
113 midElement.appendChild(text("middle element")); |
|
114 outer.insertBefore(midElement, middle); |
|
115 |
|
116 is(middle.wholeText, "middle", |
|
117 "wrong wholeText for middle after midElement insertion"); |
|
118 is(beforeMiddle.wholeText, "before-", |
|
119 "wrong wholeText for beforeMiddle after midElement insertion"); |
|
120 |
|
121 var cdataNode = cdata("after"); |
|
122 outer.insertBefore(cdataNode, midElement); |
|
123 |
|
124 is(cdataNode.wholeText, "before-after", |
|
125 "wrong wholeText for cdataNode after cdataNode insertion"); |
|
126 is(beforeMiddle.wholeText, "before-after", |
|
127 "wrong wholeText for beforeMiddle after cdataNode insertion"); |
|
128 is(middle.wholeText, "middle", |
|
129 "wrong wholeText for middle after cdataNode insertion"); |
|
130 |
|
131 var cdataNode2 = cdata("before-"); |
|
132 outer.insertBefore(cdataNode2, middle); |
|
133 |
|
134 is(cdataNode.wholeText, "before-after", |
|
135 "wrong wholeText for cdataNode after cdataNode2 insertion"); |
|
136 is(beforeMiddle.wholeText, "before-after", |
|
137 "wrong wholeText for beforeMiddle after cdataNode2 insertion"); |
|
138 is(cdataNode2.wholeText, "before-middle", |
|
139 "wrong wholeText for middle after cdataNode2 insertion"); |
|
140 is(middle.wholeText, "before-middle", |
|
141 "wrong wholeText for middle after cdataNode2 insertion"); |
|
142 } |
|
143 |
|
144 function lastTests() |
|
145 { |
|
146 var outer = element(); |
|
147 var first = element(); |
|
148 var second = text("second"); |
|
149 first.appendChild(text("element contents")); |
|
150 outer.appendChild(first); |
|
151 outer.appendChild(second); |
|
152 |
|
153 is(second.wholeText, "second", "wrong wholeText for second"); |
|
154 |
|
155 var insertedText = text("before-"); |
|
156 outer.insertBefore(insertedText, second); |
|
157 |
|
158 is(second.wholeText, "before-second", |
|
159 "wrong wholeText for second after insertedText insertion"); |
|
160 is(insertedText.wholeText, "before-second", |
|
161 "wrong wholeText for insertedText after insertedText insertion"); |
|
162 |
|
163 var cdataNode = cdata("zero-") |
|
164 outer.insertBefore(cdataNode, insertedText); |
|
165 |
|
166 is(cdataNode.wholeText, "zero-before-second", |
|
167 "wrong wholeText for cdataNode after cdataNode insertion"); |
|
168 is(second.wholeText, "zero-before-second", |
|
169 "wrong wholeText for second after cdataNode insertion"); |
|
170 is(insertedText.wholeText, "zero-before-second", |
|
171 "wrong wholeText for insertedText after cdataNode insertion"); |
|
172 |
|
173 outer.insertBefore(element(), second); |
|
174 |
|
175 is(second.wholeText, "second", |
|
176 "wrong wholeText for second after element insertion"); |
|
177 is(cdataNode.wholeText, "zero-before-", |
|
178 "wrong wholeText for cdataNode after element insertion"); |
|
179 is(insertedText.wholeText, "zero-before-", |
|
180 "wrong wholeText for insertedText after element insertion"); |
|
181 |
|
182 var cdataNode2 = cdata("interrupted-"); |
|
183 outer.insertBefore(cdataNode2, insertedText); |
|
184 |
|
185 is(second.wholeText, "second", |
|
186 "wrong wholeText for second after cdataNode2 insertion"); |
|
187 is(cdataNode2.wholeText, "zero-interrupted-before-", |
|
188 "wrong wholeText for cdataNode2 after cdataNode2 insertion"); |
|
189 is(insertedText.wholeText, "zero-interrupted-before-", |
|
190 "wrong wholeText for insertedText after cdataNode2 insertion"); |
|
191 } |
|
192 |
|
193 function noParentTests() |
|
194 { |
|
195 var textNode = text("foobar"); |
|
196 is(textNode.wholeText, textNode.data, |
|
197 "orphaned textNode should have wholeText == data"); |
|
198 is(textNode.wholeText, "foobar", |
|
199 "orphaned textNode should have wholeText == 'foobar'"); |
|
200 |
|
201 var cdataSection = cdata("baz"); |
|
202 is(cdataSection.wholeText, cdataSection.data, |
|
203 "orphaned cdatasection should have wholeText == data"); |
|
204 is(cdataSection.wholeText, "baz", |
|
205 "orphaned cdatasection should have wholeText == data"); |
|
206 } |
|
207 |
|
208 function tests() |
|
209 { |
|
210 try |
|
211 { |
|
212 firstTests(); |
|
213 middleTests(); |
|
214 lastTests(); |
|
215 noParentTests(); |
|
216 } |
|
217 catch (e) |
|
218 { |
|
219 ok(false, "error thrown: " + e); |
|
220 } |
|
221 finally |
|
222 { |
|
223 SimpleTest.finish(); |
|
224 } |
|
225 } |
|
226 |
|
227 window.addEventListener("load", tests, false); |
|
228 </script> |
|
229 </pre> |
|
230 </body> |
|
231 </html> |
|
232 |