JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0
[ckeditor.git] / _tests / core / dom / element.html
diff --git a/_tests/core/dom/element.html b/_tests/core/dom/element.html
new file mode 100644 (file)
index 0000000..0aac3c4
--- /dev/null
@@ -0,0 +1,637 @@
+<!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.element</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
+CKEDITOR.test.addTestCase( (function()\r
+{\r
+       // Local reference to the "assert" object.\r
+       var assert = CKEDITOR.test.assert;\r
+       var getInnerHtml = CKEDITOR.test.getInnerHtml;\r
+\r
+       return {\r
+               test_$ : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       assert.areSame( document.getElementById( 'test1' ), element.$ );\r
+               },\r
+\r
+               test_getId1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       assert.areEqual( 'test1', element.getId() );\r
+               },\r
+\r
+               test_getId2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'div' )[0] );\r
+                       assert.isNull( element.getId() );\r
+               },\r
+\r
+               test_getNameAtt1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementsByName( 'named1' )[0] );\r
+                       assert.areEqual( 'named1', element.getNameAtt() );\r
+               },\r
+\r
+               test_getNameAtt2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       assert.isNull( element.getNameAtt() );\r
+               },\r
+\r
+               test_getName : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       assert.areEqual( 'textarea', element.getName(), 'First call' );\r
+                       assert.areEqual( 'textarea', element.getName(), 'Second call' );\r
+               },\r
+\r
+               test_hide : function()\r
+               {\r
+                       var nativeElement = document.getElementById( 'test1' );\r
+                       nativeElement.style.display = '';\r
+\r
+                       var element = new CKEDITOR.dom.element( nativeElement );\r
+                       element.hide();\r
+\r
+                       assert.areEqual( 'none', nativeElement.style.display );\r
+               },\r
+\r
+               test_show : function()\r
+               {\r
+                       var nativeElement = document.getElementById( 'test1' );\r
+                       nativeElement.style.display = '';\r
+\r
+                       var element = new CKEDITOR.dom.element( nativeElement );\r
+                       element.show();\r
+\r
+                       assert.areEqual( '', nativeElement.style.display );\r
+               },\r
+\r
+               test_createFromHtml : function()\r
+               {\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<p>My test</p>' );\r
+                       assert.areEqual( 'p', element.getName(), 'element name doesn\'t match' );\r
+                       assert.areEqual( 'My test', element.$.innerHTML, 'the innerHTML doesn\'t match' );\r
+               },\r
+\r
+               test_createFromHtml2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x><p>Test</p></div>' );\r
+                       assert.areNotEqual( 'Test', element.getChild( 0, 0 ).innerHTML );\r
+               },\r
+\r
+               test_append1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.append( new CKEDITOR.dom.element( 'b' ) );\r
+                       assert.areEqual( 'b', document.getElementById( 'append' ).firstChild.nodeName.toLowerCase() );\r
+               },\r
+\r
+               test_append2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.append( 'i' );\r
+                       assert.areEqual( 'i', document.getElementById( 'append' ).lastChild.nodeName.toLowerCase() );\r
+               },\r
+\r
+               test_appendText1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.setHtml( '' );\r
+                       element.appendText( 'Test appendText' );\r
+                       assert.areEqual( 'Test appendText', document.getElementById( 'append' ).innerHTML );\r
+               },\r
+\r
+               test_appendText2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'script' );\r
+                       element.appendText( 'Test appendText' );\r
+                       assert.areEqual( 'Test appendText', element.$.text );\r
+               },\r
+\r
+               test_setHtml : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.setHtml( '<b>Test</b>' );\r
+                       assert.areEqual( '<b>test</b>', document.getElementById( 'append' ).innerHTML.toLowerCase(), 'First call doesn\'t match' );\r
+                       element.setHtml( 'Another test' );\r
+                       assert.areEqual( 'Another test', document.getElementById( 'append' ).innerHTML, 'Second call doesn\'t match' );\r
+               },\r
+\r
+               test_getDocument1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'div' );\r
+                       assert.areSame( document, element.getDocument().$, 'First call' );\r
+                       assert.areSame( document, element.getDocument().$, 'Second call' );\r
+               },\r
+\r
+               test_getDocument2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.body );\r
+                       assert.areSame( document, element.getDocument().$, 'First call' );\r
+                       assert.areSame( document, element.getDocument().$, 'Second call' );\r
+               },\r
+\r
+               test_getFirst1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.setHtml( '<b>Test</b>' );\r
+                       var first = element.getFirst();\r
+                       assert.areSame( 'b', first.getName() );\r
+               },\r
+\r
+               test_getFirst2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.setHtml( 'Test' );\r
+                       var first = element.getFirst();\r
+                       assert.areSame( 'Test', first.$.nodeValue );\r
+               },\r
+\r
+               test_getFirst3 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       element.setHtml( '' );\r
+                       var first = element.getFirst();\r
+                       assert.isNull( first );\r
+               },\r
+\r
+               test_setAttribute1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       element.setAttribute( 'class', 'Test' );\r
+\r
+                       assert.areSame( 'Test', document.getElementById( 'test1' ).className );\r
+               },\r
+\r
+               test_setAttribute2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       element.setAttribute( 'style', 'position: absolute;' );\r
+\r
+                       assert.areEqual( 'position: absolute;', CKEDITOR.test.getAttribute( element, 'style' ) );\r
+               },\r
+\r
+               test_setAttribute3 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       element.setAttribute( 'name', 'TestName' );\r
+\r
+                       assert.areEqual( 'TestName', document.getElementById( 'test1' ).name );\r
+               },\r
+\r
+               test_setAttribute4 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       element.setAttribute( 'rows', 5 );\r
+\r
+                       assert.areEqual( 5, document.getElementById( 'test1' ).rows );\r
+               },\r
+\r
+               test_setAttributes : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'test2' ) );\r
+                       element.setAttributes({\r
+                               'class' : 'Test',\r
+                               'style' : 'position: absolute;',\r
+                               'name'  : 'TestName',\r
+                               'rows'  : 5 });\r
+\r
+                       assert.areSame( 'Test', document.getElementById( 'test1' ).className, 'class is wrong' );\r
+                       assert.areEqual( 'position: absolute;', CKEDITOR.test.getAttribute( element, 'style'), 'style is wrong' );\r
+                       assert.areEqual( 'TestName', document.getElementById( 'test1' ).name, 'name is wrong' );\r
+                       assert.areEqual( 5, document.getElementById( 'test1' ).rows, 'rows is wrong' );\r
+               },\r
+\r
+               test_setStyle1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'setStyle' ) );\r
+                       element.setStyle( 'position', 'absolute' );\r
+\r
+                       assert.areEqual( 'absolute', document.getElementById( 'setStyle' ).style.position );\r
+               },\r
+\r
+               test_setStyle2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'setStyle' ) );\r
+                       element.setStyle( 'float', 'right' );\r
+\r
+                       assert.areEqual( 'right', document.getElementById( 'setStyle' ).style.cssFloat );\r
+               },\r
+\r
+               test_setStyles : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'setStyle' ) );\r
+                       element.setStyles({\r
+                                       'position' : 'absolute',\r
+                                       'float' : 'right'\r
+                               });\r
+\r
+                       assert.areEqual( 'absolute', document.getElementById( 'setStyle' ).style.position );\r
+                       assert.areEqual( 'right', document.getElementById( 'setStyle' ).style.cssFloat );\r
+               },\r
+\r
+               test_setText1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'setText' ) );\r
+                       element.setText( 'A & B' );\r
+                       assert.areSame( 'A &amp; B', document.getElementById( 'setText' ).innerHTML );\r
+               },\r
+\r
+               test_setText2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'setText' ) );\r
+                       element.setText( 'C & D' );\r
+                       assert.areSame( 'C &amp; D', document.getElementById( 'setText' ).innerHTML );\r
+               },\r
+\r
+               test_addClass1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'div' );\r
+                       element.addClass( 'classA' );\r
+                       assert.areSame( 'classA', element.$.className );\r
+               },\r
+\r
+               test_addClass2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'div' );\r
+                       element.addClass( 'classA' );\r
+                       element.addClass( 'classA' );\r
+                       assert.areSame( 'classA', element.$.className );\r
+               },\r
+\r
+               test_addClass3 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'div' );\r
+                       element.addClass( 'classA' );\r
+                       element.addClass( 'classB' );\r
+                       element.addClass( 'classC' );\r
+                       assert.areSame( 'classA classB classC', element.$.className );\r
+               },\r
+\r
+               test_addClass4 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( 'div' );\r
+                       element.addClass( 'classA' );\r
+                       element.addClass( 'classB' );\r
+                       element.addClass( 'classC' );\r
+                       element.addClass( 'classA' );\r
+                       element.addClass( 'classB' );\r
+                       element.addClass( 'classC' );\r
+                       assert.areSame( 'classA classB classC', element.$.className );\r
+               },\r
+\r
+               test_removeClass1 : function()\r
+               {\r
+                       document.getElementById( 'removeClass' ).innerHTML = '';\r
+\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA"></div>' );\r
+                       element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );\r
+\r
+                       assert.areSame( '<div class="classa"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classA' );\r
+                       assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );\r
+               },\r
+\r
+               test_removeClass2 : function()\r
+               {\r
+                       document.getElementById( 'removeClass' ).innerHTML = '';\r
+\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA classB classC classD"></div>' );\r
+                       element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );\r
+\r
+                       assert.areSame( '<div class="classa classb classc classd"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classA' );\r
+                       assert.areSame( '<div class="classb classc classd"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classC' );\r
+                       assert.areSame( '<div class="classb classd"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classD' );\r
+                       assert.areSame( '<div class="classb"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classB' );\r
+                       assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );\r
+               },\r
+\r
+               test_removeClass3 : function()\r
+               {\r
+                       document.getElementById( 'removeClass' ).innerHTML = '';\r
+\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA classB"></div>' );\r
+                       element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );\r
+\r
+                       assert.areSame( '<div class="classa classb"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classXXX' );\r
+                       assert.areSame( '<div class="classa classb"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classB' );\r
+                       assert.areSame( '<div class="classa"></div>', getInnerHtml( 'removeClass' ) );\r
+                       element.removeClass( 'classYYY' );\r
+                       assert.areSame( '<div class="classa"></div>', getInnerHtml( 'removeClass' ) );\r
+               },\r
+\r
+               test_removeAttribute1 : function()\r
+               {\r
+                       document.getElementById( 'removeClass' ).innerHTML = '';\r
+\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA"></div>' );\r
+                       element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );\r
+\r
+                       element.removeAttribute( 'class' );\r
+                       assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );\r
+               },\r
+\r
+               test_removeAttribute2 : function()\r
+               {\r
+                       document.getElementById( 'removeClass' ).innerHTML = '';\r
+\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<div style="position:absolute"></div>' );\r
+                       element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );\r
+\r
+                       element.removeAttribute( 'style' );\r
+                       assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );\r
+               },\r
+\r
+               test_removeAttribute3 : function()\r
+               {\r
+                       document.getElementById( 'removeClass' ).innerHTML = '';\r
+\r
+                       var element = CKEDITOR.dom.element.createFromHtml( '<div title="Test"></div>' );\r
+                       element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );\r
+\r
+                       element.removeAttribute( 'title' );\r
+                       assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );\r
+               },\r
+\r
+               test_remove : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'removeInner' ) );\r
+                       element.remove();\r
+\r
+                       assert.areSame( '', getInnerHtml( 'removeOuter' ) );\r
+               },\r
+\r
+               test_getAttribute_tabindex1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndex10' ) );\r
+                       assert.areEqual( 10, CKEDITOR.test.getAttribute( element, 'tabindex' ) );\r
+               },\r
+\r
+               test_getAttribute_tabindex2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexDef' ) );\r
+                       assert.isNull( CKEDITOR.test.getAttribute( element, 'tabindex' ) );\r
+               },\r
+\r
+               test_getAttribute_tabindex3 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInputDef' ) );\r
+                       assert.isNull( CKEDITOR.test.getAttribute( element, 'tabindex' ) );\r
+               },\r
+\r
+               test_getAttribute_tabindex4 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInput20' ) );\r
+                       assert.areEqual( 20, CKEDITOR.test.getAttribute( element, 'tabindex' ) );\r
+               },\r
+\r
+               test_getAttribute_tabindex5 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexScriptDef' ) );\r
+                       assert.areEqual( null, CKEDITOR.test.getAttribute( element, 'tabindex' ) );\r
+               },\r
+\r
+               /**\r
+                *  Test getAttribute and getAttribute will ingore  '_cke_expando' attribute.\r
+                */\r
+               test_getAttribute_ignoreExpandoAttributes : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'testExpandoAttributes' ) );\r
+\r
+                       assert.areEqual( 1, CKEDITOR.test.getAttribute( element, 'tabindex' ), 'tabindex is wrong' );\r
+                       element.removeAttribute( 'tabindex' );\r
+\r
+                       assert.areEqual( 'hasExpando', CKEDITOR.test.getAttribute( element, 'class' ), 'class is wrong' );\r
+                       element.removeAttribute( 'class' );\r
+\r
+                       assert.areEqual( 'float: right;', CKEDITOR.test.getAttribute( element, 'style' ) );\r
+\r
+                       element.removeAttribute( 'style' );\r
+                       element.removeAttribute( 'id' );\r
+                       assert.isFalse( element.hasAttributes(), 'hasAttributes should be false' );\r
+               },\r
+\r
+               test_getTabIndex1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndex10' ) );\r
+                       assert.areSame( 10, element.getTabIndex() );\r
+               },\r
+\r
+               test_getTabIndex2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexDef' ) );\r
+                       assert.areSame( -1, element.getTabIndex() );\r
+               },\r
+\r
+               test_getTabIndex3 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInputDef' ) );\r
+                       assert.areSame( 0, element.getTabIndex() );\r
+               },\r
+\r
+               test_getTabIndex4 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInput20' ) );\r
+                       assert.areSame( 20, element.getTabIndex() );\r
+               },\r
+\r
+               test_getTabIndex5 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexScriptDef' ) );\r
+                       assert.areSame( -1, element.getTabIndex() );\r
+               },\r
+\r
+               test_private1 : function()\r
+               {\r
+                       var a = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       var b = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+\r
+                       assert.areSame( a.getPrivate(), b.getPrivate() );\r
+               },\r
+\r
+               test_private2 : function()\r
+               {\r
+                       var a = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );\r
+                       var b = new CKEDITOR.dom.element( document.getElementById( 'test2' ) );\r
+\r
+                       assert.areNotSame( a.getPrivate(), b.getPrivate() );\r
+               },\r
+\r
+               test_getText1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'getText' ) );\r
+\r
+                       // IE gives us a different result, which is ok for us (see code comments).\r
+                       if ( CKEDITOR.env.ie )\r
+                               assert.areSame( 'Some \nsample text for testing', element.getText().replace( /\r\n|\r/g, '\n' ) );\r
+                       else\r
+                               assert.areSame( 'Some  sample text    for    testing', element.getText() );\r
+               },\r
+\r
+               test_getText2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'getText2' ).getElementsByTagName( 'b' )[0] );\r
+                       assert.areSame( ' ', element.getText() );\r
+               },\r
+\r
+               test_getText3 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'getText3' ) );\r
+\r
+                       // IE gives us a different result, which is ok for us (see code comments).\r
+                       if ( CKEDITOR.env.ie )\r
+                               assert.areSame( 'A B', element.getText() );\r
+                       else\r
+                               assert.areSame( 'A\nB', element.getText().replace( /\r\n|\r/g, '\n' ) );\r
+               },\r
+\r
+               test_hasAttributes1 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'big' )[0] );\r
+                       assert.isFalse( element.hasAttributes() );\r
+               },\r
+\r
+               test_hasAttributes2 : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'small' )[0] );\r
+                       assert.isTrue( element.hasAttributes() );\r
+               },\r
+\r
+               /**\r
+                * Test detecting of 'class' attribute in IE6/7.\r
+                */\r
+               test_hasAttributes_4075 : function()\r
+               {\r
+                       if ( !CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )\r
+                               return;\r
+                       var element = new CKEDITOR.dom.element( 'span' );\r
+                       element.setAttribute( 'class', 'value' );\r
+                       assert.isTrue( element.hasAttributes(), 'Failed to detect "class" attribute existence.' );\r
+               },\r
+\r
+               test_getDocumentPosition : function()\r
+               {\r
+                       // Assign the page location of the element.\r
+                       YAHOO.util.Dom.setXY('DocPositionTarget', [ 350, 450 ] );\r
+                       var pos = CKEDITOR.document.getById( 'DocPositionTarget' ).getDocumentPosition();\r
+                       if ( !CKEDITOR.env.ie || CKEDITOR.env.ie8 )\r
+                       {\r
+                               assert.areEqual( 350, pos.x, 'Position coordinates:x relative to document doesn\'t match.' );\r
+                               assert.areEqual( 450, pos.y, 'Position coordinates:y relative to document doesn\'t match.' );\r
+                       }\r
+                       else\r
+                       {\r
+                               assert.isTrue( pos.x == 348 || pos.x == 349, 'Position coordinates:x relative to document doesn\'t match.' );\r
+                               assert.areEqual( 448, pos.y, 'Position coordinates:y relative to document doesn\'t match.' );\r
+                       }\r
+               },\r
+\r
+               // Test get last non-spaces child node.\r
+               test_getLast : function()\r
+               {\r
+                       var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );\r
+                       var span1 = new CKEDITOR.dom.element( 'span' );\r
+                       element.append( span1 );\r
+                       element.append( new CKEDITOR.dom.text( ' ' ) );\r
+                       element.append( new CKEDITOR.dom.text( ' ' ) );\r
+                       var last = element.getLast( CKEDITOR.dom.walker.whitespaces( true ) );\r
+                       assert.areSame( span1.$, last.$ );\r
+               },\r
+\r
+\r
+               name : document.title\r
+       };\r
+})() );\r
+\r
+       //]]>\r
+       </script>\r
+       <style type="text/css" media="screen">\r
+               #test-computed {\r
+                   width:50%;\r
+                   margin:auto;\r
+                   padding:10px;\r
+                   z-index: 2;\r
+               }\r
+               .scroll\r
+               {\r
+                       overflow: visible;\r
+               }\r
+               .block1\r
+               {\r
+                       width: 100%;\r
+                       height: 100px;\r
+                       background-color: blue;\r
+                       text-align: center;\r
+               }\r
+               .block2\r
+               {\r
+                       margin: auto;\r
+                       width: 200px;\r
+                       height: 200px;\r
+                       background-color: green;\r
+                       position : relative;\r
+               }\r
+               .block3\r
+               {\r
+                       position: absolute;\r
+                       float:right;\r
+                       width: 300px;\r
+                       height: 300px;\r
+                       background-color: black;\r
+               }\r
+               .block4\r
+               {\r
+                       position: absolute;\r
+                       left: 50px;\r
+                       right: 50px;\r
+                       width: 400px;\r
+                       height: 400px;\r
+                       background-color: pink;\r
+               }\r
+               #DocPositionTarget\r
+               {\r
+                       background-color: red;\r
+               }\r
+       </style>\r
+</head>\r
+<body>\r
+       <textarea id="test1" rows="10" cols="80"></textarea>\r
+       <textarea id="test2" rows="10" cols="80"></textarea>\r
+       <textarea name="named1" rows="10" cols="80"></textarea>\r
+       <div>Test</div>\r
+       <div id="append"></div>\r
+       <div id="setStyle"></div>\r
+       <div id="setText"></div>\r
+       <div id="removeClass"></div>\r
+       <div id="removeOuter"><b id="removeInner"></b></div>\r
+       <div id="tabIndex10" tabindex="10"></div>\r
+       <div id="testExpandoAttributes" _cke_expando ="1" class="hasExpando" tabindex="1" style="float:right"></div>\r
+       <div id="tabIndexDef"></div>\r
+       <input id="tabIndexInputDef" />\r
+       <input id="tabIndexInput20" tabindex="20" />\r
+       <script id="tabIndexScriptDef" type="text/javascript"></script>\r
+       <div id="getText">Some <br /><b> sample text</b>    for <i>   testing</i></div>\r
+       <div id="getText2">A<b> </b>B</div>\r
+       <div id="getText3">A\r
+B</div>\r
+       <big>Test</big>\r
+       <small title="Testing">Test</small>\r
+\r
+       <div class="block1 scroll" id="block1"><div class="block2 scroll" id="block2"><div class="block3 scroll" id="block3"><div class="block4 scroll" id="block4"><div id="DocPositionTarget">target</div></div></div></div></div>\r
+\r
+</body>\r
+</html>\r