Unreviewed, fix test failures after r239698.
[WebKit-https.git] / LayoutTests / mathml / roots-addChild.html
1 <!doctype html>
2 <html>
3   <head>
4     <title>MathML roots: adding children</title>
5
6     <!-- This test verifies insertion of children into an <mroot>/<msqrt> element using DOM operations. It should not crash and should render the same as the equivalent static page. -->
7
8     <style type="text/css">
9       div { border: 1px solid; margin: .5em; }
10     </style>
11     <script type="text/javascript">
12       var mathmlNS = "http://www.w3.org/1998/Math/MathML";
13
14       function newMn(n)
15       {
16         var t = document.createTextNode(n.toString());
17         var mn = document.createElementNS(mathmlNS, "mn");
18         mn.appendChild(t);
19         return mn;
20       }
21
22       function test1()
23       {
24         var test1content = document.getElementById("test1content");
25         var mroot = document.getElementById("test1").getElementsByTagNameNS(mathmlNS, "mroot");
26         var msqrt = document.getElementById("test1").getElementsByTagNameNS(mathmlNS, "msqrt");
27         var i;
28
29         // We insert children in normal order.
30         for (i = 1; i <= 7; i++) {
31           mroot[0].appendChild(newMn(i));
32           msqrt[0].appendChild(newMn(i));
33         }
34
35         // We insert children in reverse order.
36         for (i = 7; i >= 1; i--) {
37           mroot[1].insertBefore(newMn(i), mroot[1].firstChild);
38           msqrt[1].insertBefore(newMn(i), msqrt[1].firstChild);
39         }
40       }
41
42       function test2()
43       {
44         var msqrt = document.getElementById("test2").getElementsByTagNameNS(mathmlNS, "msqrt");
45         var mroot = document.getElementById("test2").getElementsByTagNameNS(mathmlNS, "mroot");
46         var i;
47         for (i = 0; i < msqrt.length; i++)
48           msqrt[i].insertBefore(newMn(1), msqrt[i].firstChild);
49         for (i = 0; i < mroot.length; i++)
50           mroot[i].insertBefore(newMn(1), mroot[i].firstChild);
51       }
52
53       function test3()
54       {
55         var msqrt = document.getElementById("test3").getElementsByTagNameNS(mathmlNS, "msqrt");
56         var mroot = document.getElementById("test3").getElementsByTagNameNS(mathmlNS, "mroot");
57         var i;
58         for (i = 0; i < msqrt.length; i++)
59           msqrt[i].appendChild(newMn(msqrt[i].childElementCount+1));
60         for (i = 0; i < mroot.length; i++)
61           mroot[i].appendChild(newMn(mroot[i].childElementCount+1));
62       }
63
64       function test4()
65       {
66         var msqrt = document.getElementById("test4").getElementsByTagNameNS(mathmlNS, "msqrt");
67         var mroot = document.getElementById("test4").getElementsByTagNameNS(mathmlNS, "mroot");
68         var i;
69         for (i = 0; i < msqrt.length; i++)
70           msqrt[i].insertBefore(newMn(2), msqrt[i].firstChild.nextSibling);
71         for (i = 0; i < mroot.length; i++)
72           mroot[i].insertBefore(newMn(2), mroot[i].firstChild.nextSibling);
73       }
74
75       function test5()
76       {
77         var msqrt = document.getElementById("test5").getElementsByTagNameNS(mathmlNS, "msqrt");
78         var mroot = document.getElementById("test5").getElementsByTagNameNS(mathmlNS, "mroot");
79         var i;
80         for (i = 0; i < msqrt.length; i++)
81           msqrt[i].insertBefore(newMn(msqrt[i].childElementCount), msqrt[i].lastChild);
82         for (i = 0; i < mroot.length; i++)
83           mroot[i].insertBefore(newMn(mroot[i].childElementCount), mroot[i].lastChild);
84       }
85
86       function test6()
87       {
88         var msqrt = document.getElementById("test6").getElementsByTagNameNS(mathmlNS, "msqrt");
89         var mroot = document.getElementById("test6").getElementsByTagNameNS(mathmlNS, "mroot");
90         var i;
91         for (i = 0; i < msqrt.length; i++)
92           msqrt[i].insertBefore(newMn(3), msqrt[i].firstChild.nextSibling.nextSibling);
93         for (i = 0; i < mroot.length; i++)
94           mroot[i].insertBefore(newMn(3), mroot[i].firstChild.nextSibling.nextSibling);
95       }
96
97       function test7()
98       {
99         var msqrt = document.getElementById("test7").getElementsByTagNameNS(mathmlNS, "msqrt");
100         var mroot = document.getElementById("test7").getElementsByTagNameNS(mathmlNS, "mroot");
101         var i;
102         for (i = 0; i < msqrt.length; i++)
103           msqrt[i].insertBefore(newMn(msqrt[i].childElementCount-1), msqrt[i].lastChild.previousSibling);
104         for (i = 0; i < mroot.length; i++)
105           mroot[i].insertBefore(newMn(mroot[i].childElementCount-1), mroot[i].lastChild.previousSibling);
106       }
107
108       function run()
109       {
110         test1();
111         test2();
112         test3();
113         test4();
114         test5();
115         test6();
116         test7();
117       }
118     </script>
119   </head>
120
121   <body onload="run()">
122
123     <!-- Test 1: insert in normal and reverse order. -->
124     <div id="test1">Test 1:
125       <math><mroot></mroot></math>
126       <math><msqrt></msqrt></math>
127       <math><mroot></mroot></math>
128       <math><msqrt></msqrt></math>
129     </div>
130
131     <!-- Test 2: insert an <mn> element at the first position in an <mroot>/<msqrt> element with various number of children. -->
132     <div id="test2">Test 2:
133       <math><msqrt></msqrt></math>
134       <math><msqrt><mn>2</mn></msqrt></math>
135       <math><msqrt><mn>2</mn><mn>3</mn></msqrt></math>
136       <math><msqrt><mn>2</mn><mn>3</mn><mn>4</mn></msqrt></math>
137       <math><mroot></mroot></math>
138       <math><mroot><mn>2</mn></mroot></math>
139       <math><mroot><mn>2</mn><mn>3</mn></mroot></math>
140       <math><mroot><mn>2</mn><mn>3</mn><mn>4</mn></mroot></math>
141     </div>
142
143     <!-- Test 3: insert an <mn> element at the last position in an <mroot>/<msqrt> element with various number of children. -->
144     <div id="test3">Test 3:
145       <math><msqrt></msqrt></math>
146       <math><msqrt><mn>1</mn></msqrt></math>
147       <math><msqrt><mn>1</mn><mn>2</mn></msqrt></math>
148       <math><msqrt><mn>1</mn><mn>2</mn><mn>3</mn></msqrt></math>
149       <math><mroot></mroot></math>
150       <math><mroot><mn>1</mn></mroot></math>
151       <math><mroot><mn>1</mn><mn>2</mn></mroot></math>
152       <math><mroot><mn>1</mn><mn>2</mn><mn>3</mn></mroot></math>
153     </div>
154
155     <!-- Test 4: insert an <mn> element at the second position in an <mroot>/<msqrt> element with various number of children. -->
156     <div id="test4">Test 4:
157       <math><msqrt><mn>1</mn></msqrt></math>
158       <math><msqrt><mn>1</mn><mn>3</mn></msqrt></math>
159       <math><msqrt><mn>1</mn><mn>3</mn><mn>4</mn></msqrt></math>
160       <math><msqrt><mn>1</mn><mn>3</mn><mn>4</mn><mn>5</mn></msqrt></math>
161       <math><mroot><mn>1</mn></mroot></math>
162       <math><mroot><mn>1</mn><mn>3</mn></mroot></math>
163       <math><mroot><mn>1</mn><mn>3</mn><mn>4</mn></mroot></math>
164       <math><mroot><mn>1</mn><mn>3</mn><mn>4</mn><mn>5</mn></mroot></math>
165     </div>
166
167     <!-- Test 5: insert an <mn> element at the penultimate position in an <mroot>/<msqrt> element with various number of children. -->
168     <div id="test5">Test 5:
169       <math><msqrt><mn>2</mn></msqrt></math>
170       <math><msqrt><mn>1</mn><mn>3</mn></msqrt></math>
171       <math><msqrt><mn>1</mn><mn>2</mn><mn>4</mn></msqrt></math>
172       <math><msqrt><mn>1</mn><mn>2</mn><mn>3</mn><mn>5</mn></msqrt></math>
173       <math><mroot><mn>2</mn></mroot></math>
174       <math><mroot><mn>1</mn><mn>3</mn></mroot></math>
175       <math><mroot><mn>1</mn><mn>2</mn><mn>4</mn></mroot></math>
176       <math><mroot><mn>1</mn><mn>2</mn><mn>3</mn><mn>5</mn></mroot></math>
177     </div>
178
179     <!-- Test 6: insert an <mn> element at the third position in an <mroot>/<msqrt> element with various number of children. -->
180     <div id="test6">Test 6:
181       <math><msqrt><mn>1</mn><mn>2</mn></msqrt></math>
182       <math><msqrt><mn>1</mn><mn>2</mn><mn>4</mn></msqrt></math>
183       <math><msqrt><mn>1</mn><mn>2</mn><mn>4</mn><mn>5</mn></msqrt></math>
184       <math><mroot><mn>1</mn><mn>2</mn></mroot></math>
185       <math><mroot><mn>1</mn><mn>2</mn><mn>4</mn></mroot></math>
186       <math><mroot><mn>1</mn><mn>2</mn><mn>4</mn><mn>5</mn></mroot></math>
187     </div>
188
189     <!-- Test 7: insert an <mn> element at the antipenultimate position in an <mroot>/<msqrt> element with various number of children. -->
190     <div id="test7">Test 7:
191       <math><msqrt><mn>2</mn><mn>3</mn></msqrt></math>
192       <math><msqrt><mn>1</mn><mn>3</mn><mn>4</mn></msqrt></math>
193       <math><msqrt><mn>1</mn><mn>2</mn><mn>4</mn><mn>5</mn></msqrt></math>
194       <math><mroot><mn>2</mn><mn>3</mn></mroot></math>
195       <math><mroot><mn>1</mn><mn>3</mn><mn>4</mn></mroot></math>
196       <math><mroot><mn>1</mn><mn>2</mn><mn>4</mn><mn>5</mn></mroot></math>
197     </div>
198
199   </body>
200 </html>