Index: /CKEditor/tests/dt/core/test.html
===================================================================
--- /CKEditor/tests/dt/core/test.html	(revision 4122)
+++ /CKEditor/tests/dt/core/test.html	(revision 4122)
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<title>CKEDITOR.test</title>
+	<meta name="tags" content="editor,unit,all">
+	<script type="text/javascript" src="../../cktester/cell.js"></script>
+	<script type="text/javascript">
+	//<![CDATA[
+//CKEDITOR.plugins.load( [ 'selection' ] );
+
+CKEDITOR.test.addTestCase( (function()
+{
+	// Local reference to the "assert" object.
+	var assert = CKEDITOR.test.assert,
+		doc = new CKEDITOR.dom.document( document );
+
+	return {
+
+		// Test single selection. 
+		test_setHtmlWithSelection : function()
+		{
+			CKEDITOR.test.setHtmlWithSelection(
+				doc.getById( 'playground' ),
+				doc.getById( 'textarea_1' ) );
+			var range = doc.getSelection().getRanges()[ 0 ];
+
+			if ( CKEDITOR.env.gecko )
+			{
+				assert.areSame( doc.getById( 'ol_1' ).$, range.startContainer.$ );
+				assert.areSame( 0, range.startOffset );
+				assert.areSame( doc.getById( 'ol_1' ).$, range.endContainer.$ );
+				assert.areSame( 1, range.endOffset );
+			}
+			else if( CKEDITOR.env.ie )
+			{
+				assert.areSame( doc.getById( 'li_3' ).$, range.startContainer.$ );
+				assert.areSame( 0, range.startOffset );
+				assert.areSame( doc.getById( 'li_4' ).$, range.endContainer.$ );
+				assert.areSame( 1, range.endOffset );
+			}
+			else if( CKEDITOR.env.webkit )
+			{
+				assert.areSame( doc.getById( 'li_3' ).getFirst().$, range.startContainer.$ );
+				assert.areSame( 0, range.startOffset );
+				assert.areSame( doc.getById( 'li_4' ).getFirst().$, range.endContainer.$ );
+				assert.areSame( 6, range.endOffset );
+			}
+
+		},
+
+		// Test select multiple ranges.
+		test_setHtmlWithSelection2 : function()
+		{
+			CKEDITOR.test.setHtmlWithSelection(
+				doc.getById( 'playground' ),
+				doc.getById( 'textarea_2' ) );
+
+			var resultRanges = doc.getSelection().getRanges();
+			var range1 = resultRanges[ 0 ];
+
+			if( CKEDITOR.env.gecko || CKEDITOR.env.ie )
+			{
+				assert.areSame( doc.getById( 'li_1' ).$, range1.startContainer.$ );
+				assert.areSame( 0, range1.startOffset );
+				assert.areSame( doc.getById( 'li_1' ).$, range1.endContainer.$ );
+				assert.areSame( 1, range1.endOffset );
+			}
+			else if( CKEDITOR.env.webkit )
+			{
+				assert.areSame( doc.getById( 'li_1' ).getFirst().$, range1.startContainer.$ );
+				assert.areSame( 0, range1.startOffset );
+				assert.areSame( doc.getById( 'li_1' ).getFirst().$, range1.endContainer.$ );
+				assert.areSame( 5, range1.endOffset );
+			}
+
+			// Only Firefox support make multiple selection ranges.
+			if( CKEDITOR.env.gecko )
+			{
+				var range2 = resultRanges[ 1 ];
+
+					assert.areSame( doc.getById( 'li_2' ).$, range2.startContainer.$ );
+					assert.areSame( 0, range2.startOffset );
+					assert.areSame( doc.getById( 'li_2' ).$, range2.endContainer.$ );
+					assert.areSame( 1, range2.endOffset );
+			}
+		},
+
+		// Test select inline element.
+		test_setHtmlWithSelection3 : function()
+		{
+			CKEDITOR.test.setHtmlWithSelection(
+				doc.getById( 'playground' ),
+				doc.getById( 'textarea_3' ) );
+			var range = doc.getSelection().getRanges()[ 0 ];
+
+			if( CKEDITOR.env.webkit )
+			{
+				assert.areSame( doc.getById( 'span_1' ).getFirst().$, range.startContainer.$ );
+				assert.areSame( 0, range.startOffset );
+				assert.areSame( doc.getById( 'span_1' ).getFirst().$, range.endContainer.$ );
+				assert.areSame( 4, range.endOffset );
+			}
+			else
+			{
+				assert.areSame( doc.getById( 'p_1' ).$, range.startContainer.$ );
+				assert.areSame( 1, range.startOffset );
+				if( CKEDITOR.env.ie )
+				{
+					assert.areSame( doc.getById( 'span_1' ).$, range.endContainer.$ );
+					assert.areSame( 1, range.endOffset );
+				}
+				else if ( CKEDITOR.env.gecko )
+				{
+					assert.areSame( doc.getById( 'p_1' ).$, range.endContainer.$ );
+					assert.areSame( 2, range.endOffset );
+				}
+			}
+		},
+
+		// Test make collapsed selection.
+		test_setHtmlWithSelection4 : function()
+		{
+			CKEDITOR.test.setHtmlWithSelection(
+				doc.getById( 'playground' ),
+				doc.getById( 'textarea_4' ) );
+			var range = doc.getSelection().getRanges()[ 0 ];
+
+			if( CKEDITOR.env.webkit )
+			{
+				assert.areSame( doc.getById( 'p_2' ).getFirst().$, range.startContainer.$ );
+				assert.areSame( 4, range.startOffset );
+			}
+			else if ( CKEDITOR.env.ie && CKEDITOR.env.ie8 )
+			{
+				assert.areSame( doc.getById( 'span_2' ).$, range.startContainer.$ );
+				assert.areSame( 0, range.startOffset );
+			}
+			else
+			{
+				assert.areSame( doc.getById( 'p_2' ).$, range.startContainer.$ );
+				assert.areSame( 1, range.startOffset );
+			}
+			assert.isTrue( range.collapsed );
+		},
+
+		name : document.title
+	};
+})() );
+
+	//]]>
+	</script>
+</head>
+<body>
+<div id="playground" contentEditable="true"></div>
+<textarea id="textarea_1">
+	<ol id="ol_1">[<li id="li_3">leve1<ol><li id="li_4">level2</li></ol></li>]</ol>
+</textarea>
+<textarea id="textarea_2">
+	<ol><li id="li_1">[leve1]<ol><li id="li_2">[level2]</li></ol></li></ol>
+</textarea>
+<textarea id="textarea_3">
+	<p id="p_1">some[<span id="span_1">text</span>]</p>
+</textarea>
+<textarea id="textarea_4">
+	<p id="p_2">some^<span id="span_2">text</span></p>
+</textarea>
+</body>
+</html>
