JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0
[ckeditor.git] / _source / tests / core / dom / documentfragment.html
diff --git a/_source/tests/core/dom/documentfragment.html b/_source/tests/core/dom/documentfragment.html
new file mode 100644 (file)
index 0000000..fefd611
--- /dev/null
@@ -0,0 +1,292 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>CKEDITOR.dom.documentFragment</title>\r
+       <link rel="stylesheet" type="text/css" href="../../test.css" />\r
+       <script type="text/javascript" src="../../../ckeditor.js"></script>\r
+       <script type="text/javascript" src="../../test.js"></script>\r
+       <script type="text/javascript">\r
+       //<![CDATA[\r
+var tc;\r
+CKEDITOR.test.addTestCase( tc = ( function()\r
+{\r
+       // Local reference to the "assert" object.\r
+       var assert = YAHOO.util.Assert,\r
+               doc = CKEDITOR.document;\r
+\r
+       return {\r
+\r
+               test_appendTo : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner =\r
+                                       new CKEDITOR.dom.element( 'b' );\r
+                       frag.append( inner );\r
+                       var container = CKEDITOR.document.getById( 'fragmentContainer1' );\r
+                       frag.appendTo( container );\r
+                       assert.isTrue( container.getLast().equals( inner ) );\r
+               },\r
+\r
+               test_append : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner =\r
+                                       new CKEDITOR.dom.element( 'b' );\r
+                       frag.append( inner );\r
+                       var container = CKEDITOR.document.getById( 'fragmentContainer3' );\r
+                       container.append( frag );\r
+                       assert.isTrue( container.getLast().equals( inner ) );\r
+               },\r
+\r
+               test_getFirst : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner =\r
+                                       new CKEDITOR.dom.element( 'b' );\r
+                       frag.append( inner );\r
+                       var first = frag.getFirst();\r
+                       assert.isTrue( first.equals( inner ) );\r
+               },\r
+\r
+               test_getLast : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner =\r
+                                       new CKEDITOR.dom.element( 'b' ), lastInner = inner.clone();\r
+                       frag.append( inner );\r
+                       frag.append( lastInner );\r
+                       var last = frag.getLast();\r
+                       assert.isTrue( last.equals( lastInner ) );\r
+               },\r
+\r
+               test_moveChildren : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner1 = new CKEDITOR.dom.element( 'b' ),\r
+                       inner2 = new CKEDITOR.dom.element( 'i' );\r
+                       frag.append( inner1 );\r
+                       frag.append( inner2 );\r
+\r
+                       // Move to element\r
+                       var element = new CKEDITOR.dom.element( 'span' );\r
+                       frag.moveChildren( element, true );\r
+                       assert.isTrue( element.getFirst().equals( inner1 ) );\r
+                       assert.isTrue( element.getLast().equals( inner2 ) );\r
+               },\r
+\r
+               test_moveChildren2 : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner1 = new CKEDITOR.dom.element( 'b' ),\r
+                               inner2 = new CKEDITOR.dom.element( 'i' );\r
+                       frag.append( inner1 );\r
+                       frag.append( inner2 );\r
+\r
+                       // Move to fragment\r
+                       var anotherFrag = new CKEDITOR.dom.documentFragment(\r
+                               CKEDITOR.document );\r
+                       frag.moveChildren( anotherFrag, true );\r
+                       assert.isTrue( anotherFrag.getFirst().equals( inner1 ) );\r
+                       assert.isTrue( anotherFrag.getLast().equals( inner2 ) );\r
+               },\r
+\r
+               test_appendText : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'script' );\r
+                       element.appendText( 'Test appendText' );\r
+                       assert.areEqual( 'Test appendText', element.$.text );\r
+               },\r
+\r
+               test_ltrim : function()\r
+               {\r
+                       // IE need special treatement to setup this tc, see\r
+                       // next tc for this.\r
+                       if ( CKEDITOR.env.ie )\r
+                               return;\r
+                       var element = CKEDITOR.dom.element.createFromHtml(\r
+                               '<div id="trimTarget">\t\ntext\t\n</div>'\r
+                       );\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       element.moveChildren( frag );\r
+                       frag.ltrim();\r
+                       var ct = new CKEDITOR.dom.element( 'div' );\r
+                       ct.append( frag );\r
+                       assert.areSame( 'text\t\n', ct.getText() );\r
+               },\r
+\r
+               test_ltrim_ie : function()\r
+               {\r
+                       if ( !CKEDITOR.env.ie )\r
+                               return;\r
+                       // IE dom operation will trim preceding empty text,\r
+                       // here we use 'splitText' way to create leading spaces\r
+                       // instead for testing.\r
+                       var emptyTextNode = doc.createText( '@ \ttext\t ');\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( doc );\r
+                       frag.append( emptyTextNode );\r
+                       frag.getFirst().$.splitText( 1 );\r
+                       frag.getFirst().remove();\r
+                       frag.ltrim();\r
+                       var ct = new CKEDITOR.dom.element( 'div' );\r
+                       ct.append( frag );\r
+                       assert.areSame( 'text\t ', ct.getText() );\r
+               },\r
+\r
+               test_rtrim : function()\r
+               {\r
+                       if ( CKEDITOR.env.ie )\r
+                               return;\r
+                       var element = CKEDITOR.dom.element.createFromHtml(\r
+                               '<div id="trimTarget">\t\ntext\t\n</div>'\r
+                       );\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       element.moveChildren( frag );\r
+                       frag.rtrim();\r
+                       var ct = new CKEDITOR.dom.element( 'div' );\r
+                       ct.append( frag );\r
+\r
+                       assert.areSame( '\t\ntext', ct.getText() );\r
+               },\r
+\r
+               /**\r
+                *@see test_ltrim_ie\r
+                */\r
+               test_rtrim_ie : function()\r
+               {\r
+                       if ( !CKEDITOR.env.ie )\r
+                               return;\r
+                       var emptyTextNode = doc.createText( '@ \ttext\t ');\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( doc );\r
+                       frag.append( emptyTextNode );\r
+                       frag.getFirst().$.splitText( 1 );\r
+                       frag.getFirst().remove();\r
+                       frag.rtrim();\r
+                       var ct = new CKEDITOR.dom.element( 'div' );\r
+                       ct.append( frag );\r
+                       assert.areSame( ' \ttext', ct.getText() );\r
+               },\r
+\r
+\r
+               test_trim : function()\r
+               {\r
+                       if ( !CKEDITOR.env.ie )\r
+                               return;\r
+                       var element = CKEDITOR.dom.element.createFromHtml(\r
+                               '<div id="trimTarget">\t\ntext\t\n</div>'\r
+                       );\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       element.moveChildren( frag );\r
+                       frag.trim();\r
+                       var ct = new CKEDITOR.dom.element( 'div' );\r
+                       ct.append( frag );\r
+                       assert.areSame( 'text', ct.getText() );\r
+               },\r
+\r
+\r
+               /**\r
+                *@see test_ltrim_ie\r
+                */\r
+               test_trim_ie : function()\r
+               {\r
+                       if ( !CKEDITOR.env.ie )\r
+                               return;\r
+                       var emptyTextNode = doc.createText( '@ \t\ntext\t\n ');\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( doc );\r
+                       frag.append( emptyTextNode );\r
+                       frag.getFirst().$.splitText( 1 );\r
+                       frag.getFirst().remove();\r
+                       frag.trim();\r
+                       var ct = new CKEDITOR.dom.element( 'div' );\r
+                       ct.append( frag );\r
+                       assert.areSame( 'text', ct.getText() );\r
+               },\r
+\r
+               test_insertAfter : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner = new CKEDITOR.dom.element( 'b' );\r
+                       frag.append( inner );\r
+                       var container = CKEDITOR.document.getById( 'fragmentContainer2' );\r
+                       var sibling = CKEDITOR.document.getById( 'fragmentSibling1' );\r
+                       frag.insertAfterNode( sibling );\r
+                       assert.isTrue( container.getLast().equals( inner ) );\r
+               },\r
+\r
+               test_getChildCount : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner1 = new CKEDITOR.dom.element( 'b' ),\r
+                               inner2 = new CKEDITOR.dom.element( 'i' );\r
+                       frag.append( inner1 );\r
+                       frag.append( inner2 );\r
+\r
+                       assert.areEqual( 2, frag.getChildCount() );\r
+               },\r
+\r
+               test_getChild : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner1 = new CKEDITOR.dom.element( 'b' ),\r
+                               inner2 = new CKEDITOR.dom.element( 'i' );\r
+                       frag.append( inner1 );\r
+                       frag.append( inner2 );\r
+\r
+                       assert.isTrue( inner2.equals( frag.getChild( 1 ) ) );\r
+               },\r
+\r
+               test_getChildren : function()\r
+               {\r
+                       var frag =\r
+                                       new CKEDITOR.dom.documentFragment( CKEDITOR.document );\r
+                       var inner1 = new CKEDITOR.dom.element( 'b' ),\r
+                               inner2 = new CKEDITOR.dom.element( 'i' );\r
+                       frag.append( inner1 );\r
+                       frag.append( inner2 );\r
+\r
+                       var childNodesList = frag.getChildren();\r
+                       assert.areEqual( 2, childNodesList.count() );\r
+                       assert.isTrue( inner2.equals( childNodesList.getItem( 1 ) ) );\r
+               },\r
+\r
+               test_getDocument : function()\r
+               {\r
+                       var doc = CKEDITOR.document,\r
+                               innerDoc = new CKEDITOR.dom.document(\r
+                                       doc.getById( 'innerFrame' ).$.contentWindow.document );\r
+                       var frag1 = new CKEDITOR.dom.documentFragment( doc ),\r
+                               frag2 = new CKEDITOR.dom.documentFragment( innerDoc );\r
+\r
+                       assert.isTrue( doc.equals( frag1.getDocument() ) );\r
+                       assert.isTrue( innerDoc.equals( frag2.getDocument() ) );\r
+               },\r
+\r
+               name :document.title\r
+       };\r
+} )() );\r
+\r
+//window.onload = tc.test_rtrim_ie;\r
+       //]]>\r
+       </script>\r
+</head>\r
+<body>\r
+       <div id="fragmentContainer1"></div>\r
+       <div id="fragmentContainer2"><div id="fragmentSibling1"></div></div>\r
+       <div id="fragmentContainer3"></div>\r
+       <iframe id="innerFrame" name="innerFrame" src="about:blank"></iframe>\r
+</body>\r
+</html>\r