Index: /CKEditor/tests/dt/core/htmlparser/htmlparser.html
===================================================================
--- /CKEditor/tests/dt/core/htmlparser/htmlparser.html	(revision 4694)
+++ /CKEditor/tests/dt/core/htmlparser/htmlparser.html	(revision 4695)
@@ -32,32 +32,25 @@
 	}
 
-	/**
-	 * IE always returning CRLF for line-feed, so remove it when retrieving
-	 * pre-formated text from text area.
-	 */
-	function getTextAreaValue( id )
-	{
-		return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
-	}
+	return {
 
-	return {
-		/**
-		 * Test <pre> tag formatting.
-		 */
-		test_fromHtml_3715 : function()
+		test_parse_inline : function()
 		{
-			assert.areSame( getTextAreaValue( 'htmlResult1' ),
-				htmlParse( getTextAreaValue( 'htmlOriginal1' ) ),
-				'<pre> parsing result doesn\'t match.' );
+			assert.areSame( '<span class="outer">text</span>', htmlParse( '<span class="outer"><span></span>text</span>' ) );
 		},
 
-		/**
-		 * Test compress empty spaces within text.
-		 */
-		test_fromHtml_3715_2 : function()
+		test_parse_inline_2 : function()
 		{
-			assert.areSame( getTextAreaValue( 'htmlResult2' ),
-				htmlParse( getTextAreaValue( 'htmlOriginal2' ) ),
-				'Spaces compressing result doesn\'t match.' );
+			assert.areSame( '<span class="outer">text</span>', htmlParse( '<span class="outer"><span><span></span></span>text</span>' ) );
+		},
+
+		test_parse_inline_3 : function()
+		{
+			assert.areSame( '<span class="outer"><b>text</b></span>', htmlParse( '<span class="outer"><span><b></span>text</b></span>' ) );
+		},
+
+		test_parse_inline_4 : function()
+		{
+			assert.areSame( '<span class="outer"><span><b>some</b></span>text</span>',
+					htmlParse( '<span class="outer"><span><b>some</span></b>text</span>' ) );
 		},
 
@@ -66,6 +59,7 @@
 		test_fromHtml_attribute_name : function()
 		{
-			assert.areSame( getTextAreaValue( 'htmlOriginal3' ),
-				htmlParse( getTextAreaValue( 'htmlOriginal3' ) ),
+			var html = '<p attr-name="value" attr_name="value" attr.name="value" attr:name="value">text</p>';
+			assert.areSame( html,
+				htmlParse( html ),
 				'Attributes doesn\'t match.' );
 		},
@@ -89,26 +83,4 @@
 </head>
 <body>
-
-	<textarea id="htmlOriginal1"><pre>
-	text<b>
-inside<br /><br /></b>
-
-pre
-</pre></textarea>
-	<textarea id="htmlResult1"><pre>
-	text<b>
-inside
-
-</b>
-
-pre
-</pre></textarea>
-
-<textarea id="htmlOriginal2"><p>
-	para		graph
-</p><b>compress   spaces</b></textarea>
-
-<textarea id="htmlResult2"><p>para graph</p><b>compress spaces</b></textarea>
-<textarea id="htmlOriginal3"><p attr-name="value" attr_name="value" attr.name="value" attr:name="value">text</p></textarea>
 </body>
 </html>
Index: /CKEditor/tests/tt/3715/1.html
===================================================================
--- /CKEditor/tests/tt/3715/1.html	(revision 4695)
+++ /CKEditor/tests/tt/3715/1.html	(revision 4695)
@@ -0,0 +1,84 @@
+<!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>Test Ticket #3715</title>
+	<meta name="tags" content="editor,unit,all,stable">
+	<script type="text/javascript" src="../../cktester/cell.js"></script>
+	<script type="text/javascript">
+	//<![CDATA[
+CKEDITOR.test.runner.defer = true;
+CKEDITOR.plugins.load( 'htmlwriter' , function()
+{
+ CKEDITOR.test.runner.run();
+} );
+
+var tc;
+CKEDITOR.test.addTestCase( tc = ( function()
+{
+	// Local reference to the "assert" object.
+	var assert = CKEDITOR.test.assert,
+		getTextAreaValue = CKEDITOR.test.getValueAsHtml;
+
+	/**
+	 * Wrapper of the combination of htmlParser with htmlWriter, for convenience of
+	 * testing, formatting of writer has been disabled.
+	 */
+	function htmlParse( htmlString , writerConfig)
+	{
+		var writer = new CKEDITOR.htmlParser.basicWriter();
+		writer.reset();
+		var fragment = CKEDITOR.htmlParser.fragment.fromHtml( htmlString );
+		fragment.writeHtml( writer );
+		return writer.getHtml();
+	}
+
+	return {
+
+		/**
+		 * Test <pre> tag formatting.
+		 */
+		test_parsing_pre : function()
+		{
+			assert.areSame( getTextAreaValue( 'htmlResult1' ),
+				htmlParse( getTextAreaValue( 'htmlOriginal1' ) ),
+				'<pre> parsing result doesn\'t match.' );
+		},
+
+		/**
+		 * Test compress empty spaces within text.
+		 */
+		test_parsing_pre_2 : function()
+		{
+			assert.areSame( getTextAreaValue( 'htmlResult2' ),
+				htmlParse( getTextAreaValue( 'htmlOriginal2' ) ),
+				'Spaces compressing result doesn\'t match.' );
+		},
+
+		name :document.title
+	};
+} )() );
+	//]]>
+	</script>
+</head>
+<body>
+<textarea id="htmlOriginal1"><pre>
+	text<b>
+inside<br /><br /></b>
+
+pre
+</pre></textarea>
+<textarea id="htmlResult1"><pre>
+	text<b>
+inside
+
+</b>
+
+pre
+</pre></textarea>
+<textarea id="htmlOriginal2"><p>
+	para		graph
+</p><b>compress   spaces</b></textarea>
+
+<textarea id="htmlResult2"><p>para graph</p><b>compress spaces</b></textarea>
+</body>
+</html>
