Index: _source/tests/core/dom/range.html
===================================================================
--- _source/tests/core/dom/range.html (revision 3095)
+++ _source/tests/core/dom/range.html (working copy)
@@ -1294,7 +1294,40 @@
assert.areSame( 0, range.endOffset, 'range.endOffset' );
assert.isTrue( range.collapsed, 'range.collapsed' );
},
+ /**
+ * Test extract text nodes contents.
+ */
+ test_extractContents_Other_7 : function()
+ {
+ var container = CKEDITOR.document.getById( 'playground' );
+ container.setHtml( '' );
+ var textNode = new CKEDITOR.dom.text( 'text content' );
+ container.append( textNode );
+
+ var range = new CKEDITOR.dom.range( doc );
+
+ range.setStartAfter( textNode );
+ range.setEndBefore( textNode );
+
+ var docFrag = range.extractContents();
+
+ var tmpDiv = doc.createElement( 'div' );
+ docFrag.appendTo( tmpDiv );
+ assert.areSame( 'text content', getInnerHtml( tmpDiv.$ ),
+ 'Extracted HTML doesn\'t match.' );
+ assert.areSame( '', getInnerHtml( 'playground' ),
+ 'HTML doesn\'t match after extracted.' );
+
+ assert.areSame( textNode,
+ range.startContainer.$, 'range.startContainer' );
+ assert.areSame( 0, range.startOffset, 'range.startOffset' );
+ assert.areSame( textNode,
+ range.endContainer.$, 'range.endContainer' );
+ assert.areSame( 12, range.endOffset, 'range.endOffset' );
+ assert.areSame( 1, container.getChildren().count(), 'Text nodes breaked.' );
+ },
+
test_cloneContents_W3C_1 : function()
{
// W3C DOM Range Specs - Section 2.7 - Example 1
@@ -1510,6 +1543,41 @@
assert.areSame( 3, range.endOffset, 'range.endOffset' );
assert.isFalse( range.collapsed, 'range.collapsed' );
},
+
+ /**
+ * Make sure clone doesn't break text nodes.
+ */
+ test_cloneContents_Other_5 : function()
+ {
+ var container = CKEDITOR.document.getById( 'playground' );
+ container.setHtml( '' );
+ var textNode = new CKEDITOR.dom.text( 'text content' );
+ container.append( textNode );
+
+ var range = new CKEDITOR.dom.range( doc );
+
+ range.setStart( textNode, 5 );
+ range.setEndBefore( textNode );
+
+ var docFrag = range.cloneContents();
+
+ var tmpDiv = doc.createElement( 'div' );
+ docFrag.appendTo( tmpDiv );
+
+ assert.areSame( 'content', getInnerHtml( tmpDiv.$ ),
+ 'Cloned HTML doesn\'t match.' );
+ assert.areSame( 'text content', getInnerHtml( 'playground' ),
+ 'HTML doesn\'t match after cloning.' );
+
+ assert.areSame( document.getElementById( 'playground' ).firstChild,
+ range.startContainer.$, 'range.startContainer' );
+ assert.areSame( 5, range.startOffset, 'range.startOffset' );
+ assert.areSame( document.getElementById( 'playground' ),
+ range.endContainer.$, 'range.endContainer' );
+ assert.areSame( 1, range.endOffset, 'range.endOffset' );
+ assert.areSame( 1, container.getChildren().count(),
+ 'Keep text nodes breaked.' );
+ },
test_createBookmark2_1 : function()
{
Index: _source/tests/core/dom/elementpath.html
===================================================================
--- _source/tests/core/dom/elementpath.html (revision 0)
+++ _source/tests/core/dom/elementpath.html (revision 0)
@@ -0,0 +1,93 @@
+
+
+
+ CKEDITOR.dom.elementpath
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: _source/tests/core/dom/domobject.html
===================================================================
--- _source/tests/core/dom/domobject.html (revision 0)
+++ _source/tests/core/dom/domobject.html (revision 0)
@@ -0,0 +1,83 @@
+
+
+
+ CKEDITOR.dom.domobject
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: _source/tests/core/dom/documentFragment.html
===================================================================
--- _source/tests/core/dom/documentFragment.html (revision 0)
+++ _source/tests/core/dom/documentFragment.html (revision 0)
@@ -0,0 +1,84 @@
+
+
+
+ CKEDITOR.dom.documentFragment
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: _source/tests/core/dom/nodelist.html
===================================================================
--- _source/tests/core/dom/nodelist.html (revision 0)
+++ _source/tests/core/dom/nodelist.html (revision 0)
@@ -0,0 +1,80 @@
+
+
+
+ CKEDITOR.dom.nodelist
+
+
+
+
+
+
+ texttexttext
+
+
+
\ No newline at end of file
Index: _source/tests/core/dom/element.html
===================================================================
--- _source/tests/core/dom/element.html (revision 3095)
+++ _source/tests/core/dom/element.html (working copy)
@@ -15,7 +15,12 @@
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
var getInnerHtml = CKEDITOR.test.getInnerHtml;
-
+
+ function trimExpando(str){
+ var newStr = str.replace(/\s?_cke_[\w]+=\".*?\"\s?/gi,'');
+ return newStr;
+ }
+
return {
test_$ : function()
{
@@ -46,6 +51,23 @@
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
assert.isNull( element.getNameAtt() );
},
+ /**
+ * Test dynamic created all elements which support 'name' attribute.
+ */
+ test_getNameAtt2 : function()
+ {
+ var supportNameTags = [ 'a', 'applet', 'button', 'embed', 'form',
+ 'frame', 'iframe', 'input', 'meta', 'object', 'param', 'select' ], element;
+
+ var i, l = supportNameTags.length;
+ for ( i = 0 ; i < l ; i++ )
+ {
+ element = new CKEDITOR.dom.element( supportNameTags[ i ] );
+ element.setAttribute( 'name', 'test' );
+ assert.areEqual( 'test', element.getNameAtt(),
+ 'name attribute doesn\'t match on ' + supportNameTags[ i ] );
+ }
+ },
test_getName : function()
{
@@ -75,6 +97,27 @@
assert.areEqual( '', nativeElement.style.display );
},
+ /**
+ * Test display inheritance
+ */
+ test_show2 : function()
+ {
+ var element = CKEDITOR.document.getById( 'show2' );
+ element.show();
+ assert.areEqual( 'block', element.getComputedStyle( 'display' ),
+ '"display" doesn\'t match' );
+ },
+
+ /**
+ * Test visibility inheritance
+ */
+ test_show3 : function()
+ {
+ var element = CKEDITOR.document.getById( 'show2' );
+ element.show();
+ assert.areEqual( 'visible', element.getComputedStyle( 'visibility' ),
+ '"visibility" doesn\'t match' );
+ },
test_createFromHtml : function()
{
@@ -233,6 +276,23 @@
assert.areEqual( 'absolute', document.getElementById( 'setStyle' ).style.position );
assert.areEqual( 'right', document.getElementById( 'setStyle' ).style.cssFloat );
},
+ /**
+ * Test boundary opacity style values.
+ */
+ test_setOpacity : function()
+ {
+ var opacityValues = [ 1, 0.5, 0 ];
+
+ var i, l = opacityValues.length;
+ for ( i = 0 ; i < l ; i++ )
+ {
+ var element = new CKEDITOR.dom.element( 'span' );
+ element.setOpacity( opacityValues[ i ] );
+ assert.areEqual( opacityValues[ i ], element
+ .getComputedStyle( 'opacity' ), "Opacity style value of "
+ + opacityValues[ i ] + " doesn\'t match." );
+ }
+ },
test_setText1 : function()
{
@@ -400,6 +460,17 @@
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexScriptDef' ) );
assert.areEqual( null, element.getAttribute( 'tabindex' ) );
},
+
+ test_getAttribute_Style : function()
+ {
+ var element = new CKEDITOR.dom.element( 'span' );
+ if ( CKEDITOR.env.ie )
+ element.$.style.cssText = 'float:right';
+ else
+ element.$.setAttribute( 'style', 'float:right' );
+
+ assert.areSame( 'float: right;', element.getAttribute( 'style' ) );
+ },
test_getTabIndex1 : function()
{
@@ -486,6 +557,147 @@
var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'small' )[0] );
assert.isTrue( element.hasAttributes() );
},
+ /**
+ * Test dynamic attribute existence
+ */
+ test_hasAttributes3 : function()
+ {
+ var element = new CKEDITOR.dom.element( 'span' );
+ element.setAttribute( 'class', 'testclass' );
+ element.removeAttribute( 'class' );
+ assert.isFalse( element.hasAttributes() );
+ },
+
+ /**
+ * Test attribute abbreviation
+ */
+ test_hasAttributes4 : function()
+ {
+ var element = CKEDITOR.document.getById( 'attributed1' );
+ assert.isTrue( element.hasAttributes() );
+ },
+ /**
+ * Test 'float' style computed value
+ */
+ test_getComputedStyle1 : function()
+ {
+ var element = document.createElement( 'span' );
+ if ( CKEDITOR.env.ie )
+ element.style.cssText = 'float:right';
+ else
+ element.setAttribute( 'style', 'float:right' );
+
+ element = new CKEDITOR.dom.element( element );
+ assert.areSame( 'right', element.getComputedStyle( 'float' ),
+ 'float style doesn\'t match' );
+ element.remove();
+ },
+
+ /**
+ * Test box-model computed styles.
+ */
+ test_getComputedStyle2 : function()
+ {
+ var element = CKEDITOR.document.getById( 'test-computed' );
+ var nativeElement = element.$;
+
+ nativeElement.style.zoom = 1;
+ nativeElement.style.border = 'medium solid #000';
+
+ var bw = CKEDITOR.env.ie ? 4 : 3;
+ var h = nativeElement.offsetHeight - 20 - 2 * bw;
+ assert.areEqual( bw + 'px', element
+ .getComputedStyle( 'border-top-width' ),
+ 'borderTopWidth: medium doesn\'t match' );
+ assert.areEqual( h, Math.round( parseFloat( element
+ .getComputedStyle( 'height' ) ) ),
+ 'height: auto (offset minus padding and border) doesn\'t match' );
+ nativeElement.style.padding = '1em';
+ assert.areEqual( '16px', element.getComputedStyle( 'padding-top' ),
+ 'padding:1em doesn\'t match' );
+ nativeElement.style.margin = 'auto';
+ assert.areEqual( '0px', element.getComputedStyle( 'margin-top' ),
+ 'margin:auto doesn\'t match' );
+ assert.areEqual( 493,
+ parseInt( element.getComputedStyle( 'width' ) ),
+ 'percent:width (from CSS) doesn\'t match' );
+ assert.areEqual( 'visible',
+ element.getComputedStyle( 'visibility' ),
+ 'visibility doesn\'t match' );
+ nativeElement.parentNode.style.visibility = 'hidden';
+ assert.areEqual( 'hidden',
+ element.getComputedStyle( 'visibility' ),
+ 'visibility doesn\'t match' );
+ nativeElement.parentNode.style.visibility = 'visible';
+ assert.areEqual( 2, element.getComputedStyle( 'z-index' ),
+ 'element.getComputedStyle("zIndex") doesn\'t match' );
+ },
+ test_getComputedStyle2 : function()
+ {
+ var element = new CKEDITOR.dom.element( 'span' );
+ element.setOpacity( 0.75 );
+ assert.areSame( 0.75, element.getComputedStyle( 'opacity' ),
+ 'opacity style doesn\'t match' );
+ element.remove();
+ },
+
+ test_moveChildren1 : function()
+ {
+ var source = CKEDITOR.document.getById('childrenParent1'),
+ target = CKEDITOR.document.getById('childrenTarget1'),
+ firstChild = CKEDITOR.document.getById('firstChild1');
+
+ source.moveChildren(target);
+ assert.areSame(firstChild.$, target.$.childNodes[1]);
+ },
+
+ test_moveChildren2 : function()
+ {
+ var source = CKEDITOR.document.getById('childrenParent2'),
+ target = CKEDITOR.document.getById('childrenTarget2'),
+ secondChild = CKEDITOR.document.getById('firstChild2');
+
+ source.moveChildren(target, true);
+ assert.areSame(secondChild.$, target.$.childNodes[0]);
+ },
+
+
+
+ test_Markers : function()
+ {
+ var element1 = new CKEDITOR.dom.element( 'span' ),
+ element2 = new CKEDITOR.dom.element( 'span' ),
+ db = {};
+ var markerName = 'fck_test_touched';
+
+ CKEDITOR.dom.element.setMarker(db, element1, markerName, true);
+ assert.areSame(true, element1.getCustomData(markerName), 'Set marker of value: '+true+' failed.');
+ CKEDITOR.dom.element.setMarker(db, element2, markerName, 1);
+ assert.areSame(1, element2.getCustomData(markerName), 'Set marker of value: '+1+' failed.');
+
+ CKEDITOR.dom.element.clearAllMarkers(db);
+ assert.isNull(element1.getCustomData(markerName), 'Bounch clear markers failed.');
+ assert.isNull(element2.getCustomData(markerName), 'Bounch clear markers failed.');
+
+ },
+
+ test_breakParent1 : function()
+ {
+ CKEDITOR.document.getById( 'breakParentLeaf1' ).breakParent(
+ CKEDITOR.document.getById( 'breakParentRoot1' ) );
+ assert.areEqual( CKEDITOR.document.getById( 'breakParentResult1' )
+ .getHtml(), trimExpando( CKEDITOR.document.getById(
+ 'breakParentContainer1' ).getHtml() ) );
+ },
+
+ test_breakParent2 : function()
+ {
+ CKEDITOR.document.getById( 'breakParentLeaf2' ).breakParent(
+ CKEDITOR.document.getById( 'breakParentRoot2' ) );
+ assert.areEqual( CKEDITOR.document.getById( 'breakParentResult2' )
+ .getHtml(), trimExpando( CKEDITOR.document.getById(
+ 'breakParentContainer2' ).getHtml() ) );
+ },
name : document.title
};
@@ -493,6 +705,14 @@
//]]>
+
@@ -515,5 +735,20 @@
B
Test
Test
+
+
+
+ text
+ text
+ text
+ text
+ test computed style
+
+ This is some sample test text
+ This is some sample test text
+
+ This is some sample test text
+ This is some sample test text
+