-<!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.range</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
-\r
-var html1, html2;\r
-var tests;\r
-\r
-CKEDITOR.test.addTestCase( (function()\r
-{\r
- // Local references.\r
- var assert = CKEDITOR.test.assert;\r
- var getInnerHtml = CKEDITOR.test.getInnerHtml;\r
-\r
- var doc = new CKEDITOR.dom.document( document );\r
-\r
- var getRange = function( startId, endId )\r
- {\r
- var range = new CKEDITOR.dom.range( CKEDITOR.document );\r
- range.moveToBookmark( { startNode : startId, endNode : endId, serializable : true } );\r
- return range;\r
- };\r
-\r
- return tests = {\r
- test__constructor : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- assert.isNotNull( range, 'range must not be null' );\r
-\r
- assert.isNull( range.startContainer, 'startContainer must be null' );\r
- assert.isNull( range.startOffset, 'startOffset must be null' );\r
- assert.isNull( range.endContainer, 'endContainer must be null' );\r
- assert.isNull( range.endOffset, 'endOffset must be null' );\r
-\r
- assert.isTrue( range.collapsed, 'range must be collapsed' );\r
- },\r
-\r
- test_setStart : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( 'playground' ), 1 );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$ );\r
- assert.areSame( 1, range.startOffset );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$ );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed );\r
- },\r
-\r
- test_setEnd : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEnd( doc.getById( 'playground' ), 1 );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$ );\r
- assert.areSame( 1, range.startOffset );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$ );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed );\r
- },\r
-\r
- test_setStartAfter : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAfter( doc.getById( '_B' ) );\r
- range.setStartAfter( doc.getById( '_H1' ).getFirst() );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_setStartBefore : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartBefore( doc.getById( '_B' ) );\r
- range.setStartBefore( doc.getById( '_H1' ).getFirst() );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_setEndAfter : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEndAfter( doc.getById( '_H1' ).getFirst() );\r
- range.setEndAfter( doc.getById( '_B' ) );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_setEndBefore : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEndBefore( doc.getById( '_H1' ).getFirst() );\r
- range.setEndBefore( doc.getById( '_B' ) );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_setStartAt_1 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById('_Span'), CKEDITOR.POSITION_AFTER_START );\r
-\r
- assert.areSame( document.getElementById('_Span'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_Span'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setStartAt_2 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById('_Span'), CKEDITOR.POSITION_BEFORE_END );\r
-\r
- assert.areSame( document.getElementById('_Span'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_Span'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setStartAt_3 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById('_Span'), CKEDITOR.POSITION_BEFORE_START );\r
-\r
- assert.areSame( document.getElementById('_P'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_P'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setStartAt_4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById('_Span'), CKEDITOR.POSITION_AFTER_END );\r
-\r
- assert.areSame( document.getElementById('_P'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_P'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setEndAt_1 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEndAt( doc.getById('_Span'), CKEDITOR.POSITION_AFTER_START );\r
-\r
- assert.areSame( document.getElementById('_Span'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_Span'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setEndAt_2 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEndAt( doc.getById('_Span'), CKEDITOR.POSITION_BEFORE_END );\r
-\r
- assert.areSame( document.getElementById('_Span'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_Span'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setEndAt_3 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEndAt( doc.getById('_Span'), CKEDITOR.POSITION_BEFORE_START );\r
-\r
- assert.areSame( document.getElementById('_P'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_P'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_setEndAt_4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setEndAt( doc.getById('_Span'), CKEDITOR.POSITION_AFTER_END );\r
-\r
- assert.areSame( document.getElementById('_P'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_P'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_collapsed : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById( '_P' ), CKEDITOR.POSITION_AFTER_START );\r
-\r
- assert.isTrue( range.collapsed );\r
- },\r
-\r
- test_collapse : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAt( doc.getById( '_Para' ), CKEDITOR.POSITION_AFTER_START );\r
- range.setEndAt( doc.getById( '_Span' ), CKEDITOR.POSITION_BEFORE_END );\r
-\r
- assert.areSame( document.getElementById('_Para'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_Span'), range.endContainer.$, 'endContainer' );\r
- assert.isFalse( range.collapsed, 'collapsed' );\r
-\r
- range.collapse( true );\r
-\r
- assert.areSame( document.getElementById('_Para'), range.startContainer.$, 'startContainer' );\r
- assert.areSame( document.getElementById('_Para'), range.endContainer.$, 'endContainer' );\r
- assert.isTrue( range.collapsed, 'collapsed' );\r
- },\r
-\r
- test_selectNodeContents_Element : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- // Test with an Element node.\r
- range.selectNodeContents( doc.getById( '_Para' ) );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_selectNodeContents_Text : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- // Test with a Text node.\r
- range.selectNodeContents( doc.getById( '_Para' ).getFirst() );\r
-\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 8, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_collapse_ToStart : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById( '_P' ) );\r
- range.collapse( true );\r
-\r
- assert.areSame( document.getElementById( '_P' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_P' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_collapse_ToEnd : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById( '_Para' ) );\r
- range.collapse( false );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 3, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_insertNode_ElementContents : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById( '_B' ) );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( '_B' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_B' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_insertNode_ElementCollapsed : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartBefore( doc.getById( '_Para' ) );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_insertNode_ElementNotCollapsed : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartBefore( doc.getById( '_Para' ) );\r
- range.setStartBefore( doc.getById( '_H1' ) );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_insertNode_DiffElements : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById( '_Para' ) );\r
-\r
- range.setStart( doc.getById( '_H1' ), 0 );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
-\r
- assert.isTrue( range.startContainer.getChild( range.startOffset ).equals( newNode ), 'Start must be on new node' );\r
- },\r
-\r
- test_insertNode_TextCollapsed : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 3 );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_H1' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_insertNode_TextNotCollapsed : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 3 );\r
- range.setEnd( doc.getById( '_H1' ).getFirst(), 5 );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_H1' ).childNodes[2], range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_insertNode_Mixed : function()\r
- {\r
- var newNode = new CKEDITOR.dom.element( 'span' );\r
- newNode.setHtml( 'test_' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_P' ), 1 );\r
- range.insertNode( newNode );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_P' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_getCommonAncestor1 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 3 );\r
-\r
- assert.areSame( document.getElementById( '_H1' ).firstChild, range.getCommonAncestor().$ );\r
- },\r
-\r
- test_getCommonAncestor2 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ), 0 );\r
-\r
- assert.areSame( document.getElementById( '_H1' ), range.getCommonAncestor().$ );\r
- },\r
-\r
- test_getCommonAncestor3 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ), 0 );\r
- range.setEnd( doc.getById( '_Para' ), 0 );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.getCommonAncestor().$ );\r
- },\r
-\r
- test_getCommonAncestor4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_Para' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_B' ), 0 );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.getCommonAncestor().$ );\r
- },\r
-\r
- test_getCommonAncestor5 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getBody(), 0 );\r
- range.setEnd( doc.getById( '_B' ).getFirst(), 1 );\r
-\r
- assert.areSame( document.body, range.getCommonAncestor().$ );\r
- },\r
-\r
- test_getCommonAncestor6 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeB' ), 3 );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.getCommonAncestor().$ );\r
- },\r
-\r
- test_enlarge_element1 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> Test <b> <i> [Enlarge]</i> this</b> </p>\r
- // <p> Test <b> [<i> Enlarge</i>] this</b> </p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeI' ), 1 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element1_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>Test <b><i>[Enlarge]</i> this</b></p>\r
- // <p>Test <b>[<i>Enlarge</i>] this</b></p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeI' ), 1 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element2 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> Test <b> <i> [Enlarge</i> this]</b> </p>\r
- // <p> Test [<b> <i> Enlarge</i> this</b>] </p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeB' ), 3 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element2_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>Test <b><i>[Enlarge</i> this]</b></p>\r
- // <p>Test [<b><i>Enlarge</i> this</b>]</p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeB' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element3 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> [Test <b> <i> Enlarge]</i> this</b> </p>\r
- // <p> [Test <b> <i> Enlarge</i>] this</b> </p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeP' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_EnlargeI' ), 1 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element3_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>[Test <b><i>Enlarge]</i> this</b></p>\r
- // <p>[Test <b><i>Enlarge</i>] this</b></p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeP' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeI' ), 1 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element4 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> [Test <b> <i> Enlarge</i> this]</b> </p>\r
- // [<p> Test <b> <i> Enlarge</i> this</b> </p>]\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeP' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_EnlargeB' ).getChild( 2 ), 5 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ).parentNode, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP' ).getIndex(), range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP' ).parentNode, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP' ).getIndex() + 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element4_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>[Test <b><i>Enlarge</i> this]</b></p>\r
- // [<p>Test <b><i>Enlarge</i> this</b></p>]\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeP' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeB' ).getChild( 1 ), 5 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ).parentNode, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP' ).getIndex(), range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP' ).parentNode, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP' ).getIndex() + 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element5 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> Test<b> <i> [Enlarge</i> this]</b> </p>\r
- // <p> Test<b> [<i> Enlarge</i> this]</b> </p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI1' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeB1' ).getChild( 2 ), 5 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB1' ).childNodes[ 2 ], range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element5_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>Test<b> <i>[Enlarge</i> this]</b></p>\r
- // <p>Test<b> [<i>Enlarge</i> this]</b></p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI1' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeB1' ).getChild( 2 ), 5 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB1' ).childNodes[ 2 ], range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element6 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> <b> <i> [Enlarge</i>] this</b> </p>\r
- // <p> <b> [<i> Enlarge</i>] this</b> </p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI2' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeB2' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB2' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB2' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element6_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p><b><i>[Enlarge</i>] this</b></p>\r
- // <p><b>[<i>Enlarge</i>] this</b></p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI2' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeB2' ), 1 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeB2' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeB2' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element7 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> <b> <i> [Enlarge</i> this]</b> </p>\r
- // [<p> <b> <i> Enlarge</i> this</b> </p>]\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI2' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeB2' ), 3 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP2' ).parentNode, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP2' ).getIndex(), range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP2' ).parentNode, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP2' ).getIndex() + 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element7_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p><b><i>[Enlarge</i> this]</b></p>\r
- // [<p><b><i>Enlarge</i> this</b></p>]\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI2' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeB2' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP2' ).parentNode, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP2' ).getIndex(), range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP2' ).parentNode, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP2' ).getIndex() + 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element8 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p> Test <b> <i> [Enlarge</i> this</b> </p><p> <b> <i> Enlarge</i> this]</b> </p>\r
- // <p> Test [<b> <i> Enlarge</i> this</b> </p><p> <b> <i> Enlarge</i> this</b> </p>]\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 2 );\r
- range.setEnd( doc.getById( '_EnlargeB2' ), 3 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP2' ).parentNode, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP2' ).getIndex() + 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element8_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>Test <b><i>[Enlarge</i> this</b></p><p><b><i>Enlarge</i> this]</b></p>\r
- // <p>Test [<b><i>Enlarge</i> this</b></p><p><b><i>Enlarge</i> this</b></p>]\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeB2' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP2' ).parentNode, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( doc.getById( '_EnlargeP2' ).getIndex() + 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element9 : function()\r
- {\r
- // <p>Test<i> [Enlarge</i>]</p>\r
- // <p>Test<i> [Enlarge</i>]</p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI3' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_EnlargeP3' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeI3' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP3' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element10 : function()\r
- {\r
- // For IE, see the next test.\r
- if ( CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>Test <i> [Enlarge</i>]</p>\r
- // <p>Test [<i> Enlarge</i>]</p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI4' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_EnlargeP4' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP4' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP4' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element10_ie : function()\r
- {\r
- // IE normalizes whitespaces when parsing the HTML, so we need a\r
- // specific test for it.\r
- if ( !CKEDITOR.env.ie )\r
- return;\r
-\r
- // <p>Test <i>[Enlarge</i>]</p>\r
- // <p>Test [<i>Enlarge</i>]</p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI4' ).getFirst(), 0 );\r
- range.setEnd( doc.getById( '_EnlargeP4' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP4' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP4' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element11 : function()\r
- {\r
- // <p>Test <i>[Enlarge]</i></p>\r
- // <p>Test [<i>Enlarge</i>]</p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI5' ), 0 );\r
- range.setEnd( doc.getById( '_EnlargeI5' ), 1 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP5' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP5' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element12 : function()\r
- {\r
- // <p>Test <i><b></b>[Enlarge]</i></p>\r
- // <p>Test [<i><b></b>Enlarge</i>]</p>\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeI6' ), 1 );\r
- range.setEnd( doc.getById( '_EnlargeI6' ), 2 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP6' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP6' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_element13 : function()\r
- {\r
- // <p>Test <i><b></b>[Enlarge]</i></p>\r
- // <p>Test [<i><b></b>Enlarge</i>]</p>\r
-\r
- doc.getById( '_EnlargeP' ).setHtml( 'this <i>is some </i>sample text' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_EnlargeP' ), 0 );\r
- range.setEnd( doc.getById( '_EnlargeP' ).getChild( 1 ), 0 );\r
-\r
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP' ).childNodes[ 1 ], range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_list1 : function()\r
- {\r
- var range = getRange( 'S1', null );\r
- range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP7' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP7' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_list2 : function()\r
- {\r
- var range = getRange( 'S2', 'E2' );\r
- range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP8' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP8' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 4, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_list3 : function()\r
- {\r
- var range = getRange( 'S3', null );\r
- range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP9' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 2, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP9' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_list4 : function()\r
- {\r
- var range = getRange( 'S4', null );\r
- range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP10' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 3, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP10' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_list5 : function()\r
- {\r
- var range = getRange( 'S9', null );\r
- var bookmark = range.createBookmark();\r
- range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP15' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP15' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 4, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- range.moveToBookmark( bookmark );\r
- },\r
-\r
- test_enlarge_block1 : function()\r
- {\r
- var range = getRange( 'S5', null );\r
- range.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP11' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP11'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_block2 : function()\r
- {\r
- var range = getRange( 'S10', null );\r
- var bookmark = range.createBookmark();\r
- range.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP16' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP16'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- range.moveToBookmark( bookmark );\r
- },\r
-\r
- test_enlarge_block3 : function()\r
- {\r
- var range = getRange( 'S6', null );\r
- range.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP12' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP12'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_block4 : function()\r
- {\r
- var range = getRange( 'S7', null );\r
- range.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP13' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_EnlargeP13'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_enlarge_block5 : function()\r
- {\r
- var range = getRange( 'S8', null );\r
- range.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP14' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- /**\r
- * Test enlarge list when there's no nodes between\r
- * range start and the block boundary.\r
- */\r
- test_enlarge_block6 : function()\r
- {\r
- var range = getRange( 'S11', null );\r
- range.enlarge( CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS );\r
-\r
- assert.areSame( document.getElementById( '_EnlargeP17' ),\r
- range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- },\r
-\r
- test_deleteContents_W3C_1 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 1\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_Para' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_Para' ), 2 );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( 't text.', getInnerHtml( '_Para' ), 'HTML after deletion' );\r
-\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_W3C_2 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 2\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_B' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_B' ).getNext(), 1 );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( 'this is <b id="_b">s</b>text.', getInnerHtml( '_Para' ) );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 2, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_W3C_3 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 3\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_B' ).getPrevious(), 1 );\r
- range.setEnd( doc.getById( '_B' ).getFirst(), 1 );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( 't<b id="_b">ome</b> text.', getInnerHtml( '_Para' ) );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_W3C_4 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 4\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( 'playground' ).getLast().getFirst(), 1 );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( '<h1 id="_h1">f</h1><p>nother paragraph.</p>', getInnerHtml( 'playground' ) );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_Other : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ), 0 );\r
- range.setEnd( doc.getById( 'playground' ).getLast(), 1 );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( '<h1 id="_h1"></h1><p></p>', getInnerHtml( 'playground' ) );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_Other_2 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( 'playground' ), 0 );\r
- range.setEnd( doc.getById( 'playground' ), 2 );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( '<p>another paragraph.</p>', getInnerHtml( 'playground' ) );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame(document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_Other_3 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( doc.getById('_B') );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( '', getInnerHtml('_B') );\r
-\r
- assert.areSame( document.getElementById('_B'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('_B'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_deleteContents_Other_4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( doc.getById('_Para') );\r
-\r
- range.deleteContents();\r
-\r
- assert.areSame( '', getInnerHtml('_Para') );\r
-\r
- assert.areSame( document.getElementById('_Para'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('_Para'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_W3C_1 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.7 - Example 1\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_Para' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_Para' ), 2 );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'his is <b id="_b">some</b>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( 't text.', getInnerHtml( '_Para' ), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_W3C_2 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.7 - Example 2\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_B' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_B' ).getNext(), 2 );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<b>ome</b> t', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( 'this is <b id="_b">s</b>ext.', getInnerHtml( '_Para' ), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 2, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_W3C_3 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 3\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_B' ).getPrevious(), 1 );\r
- range.setEnd( doc.getById( '_B' ).getFirst(), 1 );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'his is <b>s</b>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( 't<b id="_b">ome</b> text.', getInnerHtml( '_Para' ), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById( '_Para' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_W3C_4 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 4\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( 'playground' ).getLast().getFirst(), 1 );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<h1>ckw3crange test</h1><p id="_para">this is <b id="_b">some</b> text.</p><p>a</p>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '<h1 id="_h1">f</h1><p>nother paragraph.</p>', getInnerHtml( 'playground' ) );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_Other : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_H1' ), 0 );\r
- range.setEnd( doc.getById( 'playground' ).getLast(), 1 );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<h1>fckw3crange test</h1><p id="_para">this is <b id="_b">some</b> text.</p><p>another paragraph.</p>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '<h1 id="_h1"></h1><p></p>', getInnerHtml( 'playground' ) );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_Other_2 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( 'playground' ), 0 );\r
- range.setEnd( doc.getById( 'playground' ), 2 );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<h1 id="_h1">fckw3crange test</h1><p id="_para">this is <b id="_b">some</b> text.</p>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '<p>another paragraph.</p>', getInnerHtml( 'playground' ) );\r
-\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_Other_3 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById('_B') );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'some', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '', getInnerHtml('_B'), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById('_B'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('_B'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_Other_4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById('_Para') );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'this is <b id="_b">some</b> text.', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '', getInnerHtml('_Para'), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById('_Para'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('_Para'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_Other_5 : function()\r
- {\r
- document.getElementById( 'playground' ).innerHTML = '<p><b><i>test</i></b></p>';\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStartAfter( new CKEDITOR.dom.element( document.getElementById( 'playground' ).getElementsByTagName('i')[0] ) );\r
- range.setEndAfter( new CKEDITOR.dom.element( document.getElementById( 'playground' ).getElementsByTagName('b')[0] ) );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<b></b>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '<p><b><i>test</i></b></p>', getInnerHtml( 'playground' ), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById( 'playground' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ).firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_extractContents_Other_6 : function()\r
- {\r
- document.getElementById( 'playground' ).innerHTML = '<p><b><i>test</i></b></p>';\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartBefore( new CKEDITOR.dom.element( document.getElementById( 'playground' ).getElementsByTagName('b')[0] ) );\r
- range.setEndBefore( new CKEDITOR.dom.element( document.getElementById( 'playground' ).getElementsByTagName('i')[0] ) );\r
-\r
- var docFrag = range.extractContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<b></b>', getInnerHtml( tmpDiv.$ ), 'Extracted HTML' );\r
- assert.areSame( '<p><b><i>test</i></b></p>', getInnerHtml( 'playground' ), 'HTML after extraction' );\r
-\r
- assert.areSame( document.getElementById( 'playground' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ).firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 0, range.endOffset, 'range.endOffset' );\r
- assert.isTrue( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_W3C_1 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.7 - Example 1\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_Para' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_Para' ), 2 );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'his is <b>some</b>', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- // The range must also remain unchanged.\r
- assert.areSame( document.getElementById( '_Para' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_Para' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_W3C_2 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.7 - Example 2\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_B' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( '_B' ).getNext(), 2 );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<b>ome</b> t', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- // The range must also remain unchanged.\r
- assert.areSame( document.getElementById( '_B' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_B' ).nextSibling, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_W3C_3 : function()\r
- {\r
- // W3C DOM Range Specs - Section 2.6 - Example 3\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.setStart( doc.getById( '_B' ).getPrevious(), 1 );\r
- range.setEnd( doc.getById( '_B' ).getFirst(), 1 );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'his is <b>s</b>', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- // The range must also remain unchanged.\r
- assert.areSame( document.getElementById( '_B' ).previousSibling, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( '_B' ).firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- // W3C DOM Range Specs - Section 2.6 - Example 4\r
- test_cloneContents_W3C_4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( '_H1' ).getFirst(), 1 );\r
- range.setEnd( doc.getById( 'playground' ).getLast().getFirst(), 1 );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<h1>ckw3crange test</h1><p>this is <b>some</b> text.</p><p>a</p>', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- // The range must also remain unchanged.\r
- assert.areSame( document.getElementById( '_H1' ).firstChild, range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 1, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ).lastChild.firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_Other : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( '_H1' ), 0 );\r
- range.setEnd( doc.getById( 'playground' ).getLast(), 1 );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<h1>fckw3crange test</h1><p>this is <b>some</b> text.</p><p>another paragraph.</p>', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- // The range must also remain unchanged.\r
- assert.areSame( document.getElementById( '_H1' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ).lastChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_Other_2 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( 'playground' ), 0 );\r
- range.setEnd( doc.getById( 'playground' ), 2 );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( '<h1>fckw3crange test</h1><p>this is <b>some</b> text.</p>', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- // The range must also remain unchanged.\r
- assert.areSame( document.getElementById( 'playground' ), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById( 'playground' ), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 2, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_Other_3 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById('_B') );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'some', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- assert.areSame( document.getElementById('_B'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('_B'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 1, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_cloneContents_Other_4 : function()\r
- {\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.selectNodeContents( doc.getById('_Para') );\r
-\r
- var bodyHtml = document.getElementById( 'playground' ).innerHTML;\r
-\r
- var docFrag = range.cloneContents();\r
-\r
- var tmpDiv = doc.createElement( 'div' );\r
- docFrag.appendTo( tmpDiv );\r
-\r
- assert.areSame( 'this is <b>some</b> text.', getInnerHtml( tmpDiv.$ ), 'Cloned HTML' );\r
-\r
- // The body HTML must remain unchanged.\r
- assert.areSame( bodyHtml.replace( /\s+_cke_expando=["\d]+/g, '' ), document.getElementById( 'playground' ).innerHTML.replace( /\s+_cke_expando=["\d]+/g, '' ), 'The HTML must remain untouched' );\r
-\r
- assert.areSame( document.getElementById('_Para'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('_Para'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_createBookmark2_1 : function()\r
- {\r
- doc.getById( 'playground' ).setHtml( '<p id="P">This is <b id="B">a test</b></p>' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( doc.getById( 'P' ), 0 );\r
- range.setEnd( doc.getById( 'B' ).getFirst(), 3 );\r
-\r
- var bookmark = range.createBookmark2();\r
-\r
- range = new CKEDITOR.dom.range( doc );\r
- range.moveToBookmark( bookmark );\r
-\r
- assert.areSame( document.getElementById('P'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 0, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('B').firstChild, range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 3, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- // This test is just like test_createBookmark2_3, but uses a "non\r
- // normalized" bookmark.\r
- test_createBookmark2_2 : function()\r
- {\r
- var html = '<p id="P">A B <b>C </b>D E</p>';\r
-\r
- doc.getById( 'playground' ).setHtml( html );\r
-\r
- var p = doc.getById( 'P' );\r
-\r
- // Split the text nodes.\r
- p.getFirst().split( 2 ); // Right before "B"\r
- p.getChild( 3 ).split( 2 ); // Right before "E"\r
-\r
- assert.areSame( 5, p.getChildCount(), 'The number of nodes after split doesn\'t match' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- // Create a range that enbraces "E".\r
- range.setStartBefore( p.getChild( 4 ) );\r
- range.setEndAfter( p.getChild( 4 ) );\r
-\r
- var bookmark = range.createBookmark2();\r
-\r
- range = new CKEDITOR.dom.range( doc );\r
- range.moveToBookmark( bookmark );\r
-\r
- assert.areSame( document.getElementById('P'), range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 4, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('P'), range.endContainer.$, 'range.endContainer' );\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_createBookmark2_3 : function()\r
- {\r
- var html = '<p id="P">A B <b>C </b>D E</p>';\r
-\r
- doc.getById( 'playground' ).setHtml( html );\r
-\r
- var p = doc.getById( 'P' );\r
-\r
- // Split the text nodes.\r
- p.getFirst().split( 2 ); // Right before "B"\r
- p.getChild( 3 ).split( 2 ); // Right before "E"\r
-\r
- assert.areSame( 5, p.getChildCount(), 'The number of nodes after split doesn\'t match' );\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- // Create a range that enbraces "E".\r
- range.setStartBefore( p.getChild( 4 ) );\r
- range.setEndAfter( p.getChild( 4 ) );\r
-\r
- var bookmark = range.createBookmark2( true );\r
-\r
- // Normalize the contents.\r
- doc.getById( 'playground' ).setHtml( html );\r
-\r
- range = new CKEDITOR.dom.range( doc );\r
- range.moveToBookmark( bookmark );\r
-\r
- assert.areSame( document.getElementById('P').childNodes[2], range.startContainer.$, 'range.startContainer' );\r
- assert.areSame( 2, range.startOffset, 'range.startOffset' );\r
- assert.areSame( document.getElementById('P'), range.endContainer.$, 'range.endContainer' );\r
-\r
- // Note that the endOffset doesn't get normalized as it's not\r
- // needed. Any offset pointing over the container size is meant to\r
- // be at the end of it.\r
- assert.areSame( 5, range.endOffset, 'range.endOffset' );\r
- assert.isFalse( range.collapsed, 'range.collapsed' );\r
- },\r
-\r
- test_checkStartOfBlock1 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock2 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock3 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock4 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock5 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p> Test </p>' );\r
- el = el.getFirst().getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- // IE trims the space in the beginning of text nodes in our case.\r
- // So, let's just check it and make it pass.\r
- range.setStart( el, ( el.substring( 0, 1 ) == 'T' ) ? 0 : 1 );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock6 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p> Test </p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( p.getFirst(), 5 );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock7 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p><b>Test</b></p>' );\r
- el = el.getFirst().getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock8 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p>A<b>Test</b>B</p>' );\r
- el = el.getFirst().getFirst().getNext();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock1 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock2 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock3 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock4 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock5 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p> Test </p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( p.getFirst(), 1 );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock6 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p> Test </p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( p.getFirst(), 5 );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock7 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p><b>Test</b></p>' );\r
- el = el.getFirst().getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock8 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p>A<b>Test</b>B</p>' );\r
- el = el.getFirst().getFirst().getNext();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock1 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock2 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock3 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock4 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock5 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p> Test </p>' );\r
- el = el.getFirst().getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- // IE trims the space in the beginning of text nodes in our case.\r
- // So, let's just check it and make it pass.\r
- range.setStart( el, ( el.substring( 0, 1 ) == 'T' ) ? 0 : 1 );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock6 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p> Test </p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( p.getFirst(), 5 );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock7 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p><b>Test</b></p>' );\r
- el = el.getFirst().getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isTrue( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkStartOfBlock8 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p>A<b>Test</b>B</p>' );\r
- el = el.getFirst().getFirst().getNext();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isFalse( range.checkStartOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock1 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock2 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p, CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock3 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_AFTER_START );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock4 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p>Test</p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStartAt( p.getFirst(), CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock5 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p> Test </p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( p.getFirst(), 1 );\r
- range.collapse( true );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock6 : function()\r
- {\r
- var p = doc.getById( 'playground' );\r
- p.setHtml( '<p> Test </p>' );\r
- p = p.getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
-\r
- range.setStart( p.getFirst(), 5 );\r
- range.collapse( true );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock7 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p><b>Test</b></p>' );\r
- el = el.getFirst().getFirst();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isTrue( range.checkEndOfBlock() );\r
- },\r
-\r
- test_checkEndOfBlock8 : function()\r
- {\r
- var el = doc.getById( 'playground' );\r
- el.setHtml( '<p>A<b>Test</b>B</p>' );\r
- el = el.getFirst().getFirst().getNext();\r
-\r
- var range = new CKEDITOR.dom.range( doc );\r
- range.selectNodeContents( el );\r
-\r
- assert.isFalse( range.checkEndOfBlock() );\r
- },\r
-\r
- /**\r
- * Test trim with text range.\r
- */\r
- test_trim : function()\r
- {\r
- var text = doc.getById( '_trim_ct').getFirst();\r
- var range = new CKEDITOR.dom.range();\r
- range.setStart(text, 2);\r
- range.setEnd(text, 6);\r
- range.trim();\r
-\r
- assert.isFalse( range.collapsed );\r
- assert.isTrue( range.startContainer.equals( doc.getById( '_trim_ct') ) );\r
- assert.areEqual( range.startOffset, 1 );\r
- assert.isTrue( range.endContainer.equals( doc.getById( '_trim_ct') ) );\r
- assert.areEqual( range.endOffset, 2 );\r
- },\r
-\r
- /**\r
- * Trim range which collapsed at text node boundary.\r
- */\r
- test_trim_3790 : function()\r
- {\r
-\r
- var ct = doc.getById( '_trim_ct');\r
- ct.setHtml( '<span id="_SPAN1">text</span>' );\r
- var text = doc.getById( '_trim_ct').getFirst();\r
-\r
- // <span id="_SPAN1">text^</span>\r
- var range = new CKEDITOR.dom.range();\r
- range.setStartAt( doc.getById( '_SPAN1' ).getFirst(), CKEDITOR.POSITION_BEFORE_END );\r
- range.collapse( true );\r
- range.trim( true );\r
-\r
- // <span id="_SPAN1">text^</span>\r
- assert.isTrue( range.collapsed );\r
- assert.areEqual( doc.getById( '_SPAN1').$, range.startContainer.$ );\r
- assert.areEqual( range.startOffset, 1 );\r
- },\r
-\r
- /**\r
- * Trim range which collapsed inside text node.\r
- */\r
- test_trim_3790_2 : function()\r
- {\r
-\r
- var ct = doc.getById( '_trim_ct');\r
- ct.setHtml( '<span id="_SPAN1">text</span>' );\r
- var text = doc.getById( '_trim_ct').getFirst();\r
-\r
- // <span id="_SPAN1">te^xt</span>\r
- var range = new CKEDITOR.dom.range();\r
- range.setStart( doc.getById( '_SPAN1' ).getFirst(), 2 );\r
- range.collapse( true );\r
- range.trim( true );\r
-\r
- // <span id="_SPAN1">te^xt</span>\r
- assert.isTrue( range.collapsed );\r
- assert.areEqual( doc.getById( '_SPAN1').$, range.startContainer.$ );\r
- assert.areEqual( range.startOffset, 1 );\r
- },\r
- /////////////\r
-\r
- setUp : function()\r
- {\r
- document.getElementById( 'playground' ).innerHTML = html1;\r
- document.getElementById( 'playground2' ).innerHTML = html2;\r
- },\r
-\r
- name : document.title\r
- };\r
-})() );\r
-\r
-//window.onload = tests.test_trim;\r
- //]]>\r
- </script>\r
-</head>\r
-<body>\r
- <div id="playground" style="visibility:hidden"><h1 id="_H1">FCKW3CRange Test</h1><p id="_Para">This is <b id="_B">some</b> text.</p><p>Another paragraph.</p></div>\r
- <div id="playground2" style="visibility: hidden">\r
- <h1>\r
- Test page for CKEditor\r
- </h1>\r
- <p id="_P">\r
- This document contains various markup features commonly used by content editors\r
- or "<span id="_Span" lang="fr">rédacteurs de contenu</span>" as they are\r
- called in <a id="_A" href="http://en.wikipedia.org/wiki/France" title="Wikipedia article about France">\r
- France</a>.<br />\r
- It is important that a <acronym id="_Acronym" title="what you see is what you get">WYSIWYG</acronym>\r
- tool has features that are easily available for the editor. If not, there is a risk\r
- that content won't receive <strong id="_Strong">proper</strong> markup. Examples\r
- of commonly found content are:</p>\r
- <p id="_Pnbsp">\r
- \r
- </p>\r
- <p id="_Pspaces">\r
- </p>\r
- <ol>\r
- <li>Headings</li>\r
- <li style="color: Red">Links (with optional title) </li>\r
- <li>Lists (like this one)\r
- <ul>\r
- <li>including nested lists </li>\r
- </ul>\r
- </li>\r
- <li>Tables\r
- <ul>\r
- <li>caption</li>\r
- <li>headers</li>\r
- <li>summary</li>\r
- </ul>\r
- </li>\r
- <li>Language information</li>\r
- <li>Acronyms and abbreviations</li>\r
- <li>Emphasis and strong emphasis </li>\r
- <li>Quotes, inline and block </li>\r
- <li>Images</li>\r
- </ol>\r
- <hr />\r
- <h2 style="background-color: Silver">\r
- Test procedure\r
- </h2>\r
- This text has no block tag. It should be corrected when working with the enter key\r
- set to "p" or "div" tags. The "br" configuration should not make changes instead.\r
- <p id="_P2">\r
- In the test we will try to recreate this document using the editor tools. To make\r
- sure tables can be inserted <em id="_Em">properly</em> we re-visit banana import\r
- statistics from 1998.\r
- </p>\r
- <p id="_P3">\r
- This paragraph has and image at the very end of its contents.<img id="_Img" src="img.gif"\r
- alt="" />\r
- </p>\r
- This text has no block tag.<br />It should be corrected when working with the enter key\r
- set to "p" or "div" tags. The <strong id="_StrongNoPara">"br" configuration</strong>\r
- should not make changes instead.<br />It has three lines separated by BR tags.\r
- <p>\r
- In the test we will try to recreate this document using the editor tools. To make\r
- sure tables can be inserted <em>properly</em> we re-visit banana import statistics\r
- from 1998.\r
- </p>\r
- <table summary="Sweden was the top importing country by far in 1998.">\r
- <caption>\r
- Top banana importers 1998 (value of banana imports in millions of US dollars per\r
- million people)<br />\r
- <br />\r
- </caption>\r
- <tr>\r
- <th scope="col">\r
- Country</th>\r
- <th scope="col">\r
- Millions of US dollars per million people</th>\r
- </tr>\r
- <tr>\r
- <td>\r
- Sweden</td>\r
- <td>\r
- 17.12</td>\r
- </tr>\r
- <tr>\r
- <td>\r
- United Kingdom</td>\r
- <td>\r
- 8.88</td>\r
- </tr>\r
- <tr>\r
- <td>\r
- Germany</td>\r
- <td>\r
- 8.36</td>\r
- </tr>\r
- <tr>\r
- <td>\r
- Italy</td>\r
- <td>\r
- 5.96</td>\r
- </tr>\r
- <tr>\r
- <td>\r
- United States</td>\r
- <td>\r
- 4.78</td>\r
- </tr>\r
- </table>\r
- <p>\r
- For block quotes we will have a look at <a href="http://fawny.org/rhcp.html">what Joe\r
- Clark says about redheads</a>:</p>\r
- <blockquote cite="http://fawny.org/rhcp.html#me">\r
- <p>\r
- "Since boyhood I’ve always believed, at the deepest level, that redheads are\r
- standard-bearers of the grandest and most wondrous human beauty."</p>\r
- </blockquote>\r
- <p>\r
- <img src="img.gif" alt="" /></p>\r
- <p>\r
- The above is the CKEditor logo loaded from the FCKeditor.net web site.</p>\r
- <p><b id="_B1">Line 1<br />Line 2<br /><i id="_I1">Line 3</i></b></p>\r
- <p id="_EnlargeP"> Test <b id="_EnlargeB"> <i id="_EnlargeI"> Enlarge</i> this</b> </p>\r
- <p id="_EnlargeP1"> Test<b id="_EnlargeB1"> <i id="_EnlargeI1"> Enlarge</i> this</b> </p>\r
- <p id="_EnlargeP2"> <b id="_EnlargeB2"> <i id="_EnlargeI2"> Enlarge</i> this</b> </p>\r
- <p id="_EnlargeP3">Test<i id="_EnlargeI3"> Enlarge</i></p>\r
- <p id="_EnlargeP4">Test <i id="_EnlargeI4"> Enlarge</i></p>\r
- <p id="_EnlargeP5">Test <i id="_EnlargeI5">Enlarge</i></p>\r
- <p id="_EnlargeP6">Test <i id="_EnlargeI6"><b></b>Enlarge</i></p>\r
- <p id="_EnlargeP7">Test <span id="S1"></span>List<br/ >Item Enlarge</p>\r
- <p id="_EnlargeP8">Test <span id="S2"></span>List<span id="E2"></span> <br /><br />Item Enlarge</p>\r
- <p id="_EnlargeP9">Test List <br /><span id="S3"></span><br />Item Enlarge</p>\r
- <p id="_EnlargeP10">Test List <br /><br />Item<span id="S4"></span> Enlarge</p>\r
- <p id="_EnlargeP11">Test <strong>Block<span id="S5"></span></strong><br /><br />Enlarge</p>\r
- <div id="_EnlargeP12">Test<span id="S6"></span> Block <div>Enlarge</div></div>\r
- <div>Test <div id="_EnlargeP13">Blo<span id="S7"></span>ck</div> Enlarge</div>\r
- <p id="_EnlargeP14"><span id="S8"></span></p>\r
- <p id="_EnlargeP15">Test <span id="S9"></span>List<br/ >Item Enlarge</p>\r
- <p id="_EnlargeP16">Test <strong>Block<span id="S10"></span></strong><br /><br />Enlarge</p>\r
- <p id="_EnlargeP17"><span><span id="S11"></span>Test Block Enlarge<span id="E11"></span></span></p>\r
- <p id="_trim_ct">Test trim</p>\r
- </div>\r
- <script type="text/javascript">\r
- //<![CDATA[\r
-\r
-html1 = document.getElementById( 'playground' ).innerHTML;\r
-html2 = document.getElementById( 'playground2' ).innerHTML;\r
-\r
- //]]>\r
- </script>\r
-</body>\r
-</html>\r