JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0
[ckeditor.git] / _tests / core / dom / documentfragment.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
2 <html xmlns="http://www.w3.org/1999/xhtml">\r
3 <head>\r
4         <title>CKEDITOR.dom.documentFragment</title>\r
5         <link rel="stylesheet" type="text/css" href="../../test.css" />\r
6         <script type="text/javascript" src="../../../ckeditor.js"></script>\r
7         <script type="text/javascript" src="../../test.js"></script>\r
8         <script type="text/javascript">\r
9         //<![CDATA[\r
10 var tc;\r
11 CKEDITOR.test.addTestCase( tc = ( function()\r
12 {\r
13         // Local reference to the "assert" object.\r
14         var assert = YAHOO.util.Assert,\r
15                 doc = CKEDITOR.document;\r
16 \r
17         return {\r
18 \r
19                 test_appendTo : function()\r
20                 {\r
21                         var frag =\r
22                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
23                         var inner =\r
24                                         new CKEDITOR.dom.element( 'b' );\r
25                         frag.append( inner );\r
26                         var container = CKEDITOR.document.getById( 'fragmentContainer1' );\r
27                         frag.appendTo( container );\r
28                         assert.isTrue( container.getLast().equals( inner ) );\r
29                 },\r
30 \r
31                 test_append : function()\r
32                 {\r
33                         var frag =\r
34                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
35                         var inner =\r
36                                         new CKEDITOR.dom.element( 'b' );\r
37                         frag.append( inner );\r
38                         var container = CKEDITOR.document.getById( 'fragmentContainer3' );\r
39                         container.append( frag );\r
40                         assert.isTrue( container.getLast().equals( inner ) );\r
41                 },\r
42 \r
43                 test_getFirst : function()\r
44                 {\r
45                         var frag =\r
46                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
47                         var inner =\r
48                                         new CKEDITOR.dom.element( 'b' );\r
49                         frag.append( inner );\r
50                         var first = frag.getFirst();\r
51                         assert.isTrue( first.equals( inner ) );\r
52                 },\r
53 \r
54                 test_getLast : function()\r
55                 {\r
56                         var frag =\r
57                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
58                         var inner =\r
59                                         new CKEDITOR.dom.element( 'b' ), lastInner = inner.clone();\r
60                         frag.append( inner );\r
61                         frag.append( lastInner );\r
62                         var last = frag.getLast();\r
63                         assert.isTrue( last.equals( lastInner ) );\r
64                 },\r
65 \r
66                 test_moveChildren : function()\r
67                 {\r
68                         var frag =\r
69                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
70                         var inner1 = new CKEDITOR.dom.element( 'b' ),\r
71                         inner2 = new CKEDITOR.dom.element( 'i' );\r
72                         frag.append( inner1 );\r
73                         frag.append( inner2 );\r
74 \r
75                         // Move to element\r
76                         var element = new CKEDITOR.dom.element( 'span' );\r
77                         frag.moveChildren( element, true );\r
78                         assert.isTrue( element.getFirst().equals( inner1 ) );\r
79                         assert.isTrue( element.getLast().equals( inner2 ) );\r
80                 },\r
81 \r
82                 test_moveChildren2 : function()\r
83                 {\r
84                         var frag =\r
85                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
86                         var inner1 = new CKEDITOR.dom.element( 'b' ),\r
87                                 inner2 = new CKEDITOR.dom.element( 'i' );\r
88                         frag.append( inner1 );\r
89                         frag.append( inner2 );\r
90 \r
91                         // Move to fragment\r
92                         var anotherFrag = new CKEDITOR.dom.documentFragment(\r
93                                 CKEDITOR.document );\r
94                         frag.moveChildren( anotherFrag, true );\r
95                         assert.isTrue( anotherFrag.getFirst().equals( inner1 ) );\r
96                         assert.isTrue( anotherFrag.getLast().equals( inner2 ) );\r
97                 },\r
98 \r
99                 test_appendText : function()\r
100                 {\r
101                         var element = new CKEDITOR.dom.element( 'script' );\r
102                         element.appendText( 'Test appendText' );\r
103                         assert.areEqual( 'Test appendText', element.$.text );\r
104                 },\r
105 \r
106                 test_ltrim : function()\r
107                 {\r
108                         // IE need special treatement to setup this tc, see\r
109                         // next tc for this.\r
110                         if ( CKEDITOR.env.ie )\r
111                                 return;\r
112                         var element = CKEDITOR.dom.element.createFromHtml(\r
113                                 '<div id="trimTarget">\t\ntext\t\n</div>'\r
114                         );\r
115                         var frag =\r
116                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
117                         element.moveChildren( frag );\r
118                         frag.ltrim();\r
119                         var ct = new CKEDITOR.dom.element( 'div' );\r
120                         ct.append( frag );\r
121                         assert.areSame( 'text\t\n', ct.getText() );\r
122                 },\r
123 \r
124                 test_ltrim_ie : function()\r
125                 {\r
126                         if ( !CKEDITOR.env.ie )\r
127                                 return;\r
128                         // IE dom operation will trim preceding empty text,\r
129                         // here we use 'splitText' way to create leading spaces\r
130                         // instead for testing.\r
131                         var emptyTextNode = doc.createText( '@ \ttext\t ');\r
132                         var frag =\r
133                                         new CKEDITOR.dom.documentFragment( doc );\r
134                         frag.append( emptyTextNode );\r
135                         frag.getFirst().$.splitText( 1 );\r
136                         frag.getFirst().remove();\r
137                         frag.ltrim();\r
138                         var ct = new CKEDITOR.dom.element( 'div' );\r
139                         ct.append( frag );\r
140                         assert.areSame( 'text\t ', ct.getText() );\r
141                 },\r
142 \r
143                 test_rtrim : function()\r
144                 {\r
145                         if ( CKEDITOR.env.ie )\r
146                                 return;\r
147                         var element = CKEDITOR.dom.element.createFromHtml(\r
148                                 '<div id="trimTarget">\t\ntext\t\n</div>'\r
149                         );\r
150                         var frag =\r
151                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
152                         element.moveChildren( frag );\r
153                         frag.rtrim();\r
154                         var ct = new CKEDITOR.dom.element( 'div' );\r
155                         ct.append( frag );\r
156 \r
157                         assert.areSame( '\t\ntext', ct.getText() );\r
158                 },\r
159 \r
160                 /**\r
161                  *@see test_ltrim_ie\r
162                  */\r
163                 test_rtrim_ie : function()\r
164                 {\r
165                         if ( !CKEDITOR.env.ie )\r
166                                 return;\r
167                         var emptyTextNode = doc.createText( '@ \ttext\t ');\r
168                         var frag =\r
169                                         new CKEDITOR.dom.documentFragment( doc );\r
170                         frag.append( emptyTextNode );\r
171                         frag.getFirst().$.splitText( 1 );\r
172                         frag.getFirst().remove();\r
173                         frag.rtrim();\r
174                         var ct = new CKEDITOR.dom.element( 'div' );\r
175                         ct.append( frag );\r
176                         assert.areSame( ' \ttext', ct.getText() );\r
177                 },\r
178 \r
179 \r
180                 test_trim : function()\r
181                 {\r
182                         if ( !CKEDITOR.env.ie )\r
183                                 return;\r
184                         var element = CKEDITOR.dom.element.createFromHtml(\r
185                                 '<div id="trimTarget">\t\ntext\t\n</div>'\r
186                         );\r
187                         var frag =\r
188                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
189                         element.moveChildren( frag );\r
190                         frag.trim();\r
191                         var ct = new CKEDITOR.dom.element( 'div' );\r
192                         ct.append( frag );\r
193                         assert.areSame( 'text', ct.getText() );\r
194                 },\r
195 \r
196 \r
197                 /**\r
198                  *@see test_ltrim_ie\r
199                  */\r
200                 test_trim_ie : function()\r
201                 {\r
202                         if ( !CKEDITOR.env.ie )\r
203                                 return;\r
204                         var emptyTextNode = doc.createText( '@ \t\ntext\t\n ');\r
205                         var frag =\r
206                                         new CKEDITOR.dom.documentFragment( doc );\r
207                         frag.append( emptyTextNode );\r
208                         frag.getFirst().$.splitText( 1 );\r
209                         frag.getFirst().remove();\r
210                         frag.trim();\r
211                         var ct = new CKEDITOR.dom.element( 'div' );\r
212                         ct.append( frag );\r
213                         assert.areSame( 'text', ct.getText() );\r
214                 },\r
215 \r
216                 test_insertAfter : function()\r
217                 {\r
218                         var frag =\r
219                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
220                         var inner = new CKEDITOR.dom.element( 'b' );\r
221                         frag.append( inner );\r
222                         var container = CKEDITOR.document.getById( 'fragmentContainer2' );\r
223                         var sibling = CKEDITOR.document.getById( 'fragmentSibling1' );\r
224                         frag.insertAfterNode( sibling );\r
225                         assert.isTrue( container.getLast().equals( inner ) );\r
226                 },\r
227 \r
228                 test_getChildCount : function()\r
229                 {\r
230                         var frag =\r
231                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
232                         var inner1 = new CKEDITOR.dom.element( 'b' ),\r
233                                 inner2 = new CKEDITOR.dom.element( 'i' );\r
234                         frag.append( inner1 );\r
235                         frag.append( inner2 );\r
236 \r
237                         assert.areEqual( 2, frag.getChildCount() );\r
238                 },\r
239 \r
240                 test_getChild : function()\r
241                 {\r
242                         var frag =\r
243                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
244                         var inner1 = new CKEDITOR.dom.element( 'b' ),\r
245                                 inner2 = new CKEDITOR.dom.element( 'i' );\r
246                         frag.append( inner1 );\r
247                         frag.append( inner2 );\r
248 \r
249                         assert.isTrue( inner2.equals( frag.getChild( 1 ) ) );\r
250                 },\r
251 \r
252                 test_getChildren : function()\r
253                 {\r
254                         var frag =\r
255                                         new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
256                         var inner1 = new CKEDITOR.dom.element( 'b' ),\r
257                                 inner2 = new CKEDITOR.dom.element( 'i' );\r
258                         frag.append( inner1 );\r
259                         frag.append( inner2 );\r
260 \r
261                         var childNodesList = frag.getChildren();\r
262                         assert.areEqual( 2, childNodesList.count() );\r
263                         assert.isTrue( inner2.equals( childNodesList.getItem( 1 ) ) );\r
264                 },\r
265 \r
266                 test_getDocument : function()\r
267                 {\r
268                         var doc = CKEDITOR.document,\r
269                                 innerDoc = new CKEDITOR.dom.document(\r
270                                         doc.getById( 'innerFrame' ).$.contentWindow.document );\r
271                         var frag1 = new CKEDITOR.dom.documentFragment( doc ),\r
272                                 frag2 = new CKEDITOR.dom.documentFragment( innerDoc );\r
273 \r
274                         assert.isTrue( doc.equals( frag1.getDocument() ) );\r
275                         assert.isTrue( innerDoc.equals( frag2.getDocument() ) );\r
276                 },\r
277 \r
278                 name :document.title\r
279         };\r
280 } )() );\r
281 \r
282 //window.onload = tc.test_rtrim_ie;\r
283         //]]>\r
284         </script>\r
285 </head>\r
286 <body>\r
287         <div id="fragmentContainer1"></div>\r
288         <div id="fragmentContainer2"><div id="fragmentSibling1"></div></div>\r
289         <div id="fragmentContainer3"></div>\r
290         <iframe id="innerFrame" name="innerFrame" src="about:blank"></iframe>\r
291 </body>\r
292 </html>\r