--- /dev/null
+<!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