FLEX-34807
Strengthened test by making sure that the style of the pasted text is not altered. Currently these checks pass (leaving the ones which were are failing before).
diff --git a/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as b/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
index 7cd97ea..872250a 100644
--- a/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
+++ b/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
@@ -35,6 +35,7 @@
     import flashx.textLayout.conversion.TextConverter;
     import flashx.textLayout.edit.TextScrap;
     import flashx.textLayout.elements.FlowElement;
+    import flashx.textLayout.elements.TextFlow;
     import flashx.textLayout.formats.ITextLayoutFormat;
     import flashx.textLayout.formats.TextLayoutFormat;
 
@@ -44,15 +45,18 @@
 
     public class FLEX_34807_Test extends VellumTestCase
     {
-        private const PASTED_TEXT:String = '...Hello world!...';
-        private const PASTED_HTML:String = '...<i>Hello<b> world</b>!</i>...';
-        private const PASTE:TextScrap = new TextScrap(TextConverter.importToFlow(PASTED_HTML, TextConverter.TEXT_FIELD_HTML_FORMAT));
+        private static const PASTED_TEXT:String = '|Hey world!|';
+        private static const PASTED_HTML:String = '<span style="fontSize:12">|<i>Hey<b> world</b>!</i>|</span>';
+        private static const PASTE:TextScrap = new TextScrap(TextConverter.importToFlow(PASTED_HTML, TextConverter.TEXT_FIELD_HTML_FORMAT));
+
+        private static var PASTE_CHAR_STYLES:Array = [];
 
         private var sourceAsPlainText:String;
         private var leftBefore:ITextLayoutFormat;
         private var rightBefore:ITextLayoutFormat;
         private var leftAfter:ITextLayoutFormat;
         private var rightAfter:ITextLayoutFormat;
+        private var initialTextLength:Number = NaN;
 
         public function FLEX_34807_Test()
         {
@@ -68,14 +72,27 @@
         public static function setUpClass():void
         {
             FileRepository.readFile(TestConfig.getInstance().baseURL, "../../test/testFiles/markup/tlf/HtmlTest.xml");
+            analyseStylesOfPastedText();
+        }
+
+        private static function analyseStylesOfPastedText():void
+        {
+            for(var i:int = 0; i < PASTED_TEXT.length; i++)
+            {
+                PASTE_CHAR_STYLES.push(getFormatOfCharFromFlow(i, PASTE.textFlow));
+            }
         }
 
         [Before]
         override public function setUpTest():void
         {
             super.setUpTest();
+
             if(!sourceAsPlainText)
                 sourceAsPlainText = TextConverter.export(testApp.getTextFlow(), TextConverter.PLAIN_TEXT_FORMAT, ConversionType.STRING_TYPE) as String;
+
+            if(isNaN(initialTextLength))
+                initialTextLength = SelManager.textFlow.textLength;
         }
 
         [After]
@@ -96,26 +113,11 @@
 
             //then
             assertAdjacentTextFormatsNotAltered(0);
+            assertFormattingOfPastedTextNotAltered(0);
             assertTextPastedCorrectlyAndExistingTextNotChanged(0);
         }
 
         [Test]
-        public function paste_in_first_paragraph_in_middle_of_bold_section():void
-        {
-            //given
-            const PASTE_POSITION:int = 16;
-            recordTextFormatsBeforeOperation(PASTE_POSITION);
-
-            //when
-            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
-            SelManager.pasteTextScrap(PASTE);
-
-            //then
-            assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
-            assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
-        }
-
-        [Test]
         public function paste_in_first_paragraph():void
         {
             //given
@@ -128,9 +130,70 @@
 
             //then
             assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
+            assertFormattingOfPastedTextNotAltered(PASTE_POSITION);
             assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
         }
 
+        [Test]
+        public function paste_in_first_paragraph_in_middle_of_bold_section():void
+        {
+            //given
+            const PASTE_POSITION:int = 16;
+            recordTextFormatsBeforeOperation(PASTE_POSITION);
+
+            //when
+            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
+            SelManager.pasteTextScrap(PASTE);
+
+            //then
+            assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
+            assertFormattingOfPastedTextNotAltered(PASTE_POSITION);
+            assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
+        }
+
+        [Test]
+        public function paste_in_second_paragraph():void
+        {
+            //given
+            const PASTE_POSITION:int = 170;
+            recordTextFormatsBeforeOperation(PASTE_POSITION);
+
+            //when
+            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
+            SelManager.pasteTextScrap(PASTE);
+
+            //then
+            assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
+            assertFormattingOfPastedTextNotAltered(PASTE_POSITION);
+            assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
+        }
+
+        [Test]
+        public function paste_at_end():void
+        {
+            //given
+            const PASTE_POSITION:int = SelManager.textFlow.textLength - 1;
+            recordTextFormatsBeforeOperation(PASTE_POSITION);
+
+            //when
+            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
+            SelManager.pasteTextScrap(PASTE);
+
+            //then
+            assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
+            assertFormattingOfPastedTextNotAltered(PASTE_POSITION);
+            assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
+        }
+
+        private function assertFormattingOfPastedTextNotAltered(pastePosition:int):void
+        {
+            for(var i:int = 0; i < PASTED_TEXT.length; i++)
+            {
+                var formatOfPastedChar:ITextLayoutFormat = getFormatOfCharAt(pastePosition + i);
+                assertTrue("The style of the pasted text has been altered!", TextLayoutFormat.isEqual(PASTE_CHAR_STYLES[i], formatOfPastedChar));
+            }
+        }
+
         private function assertAdjacentTextFormatsNotAltered(pastePosition:int):void
         {
             recordTextFormatsAfterOperation(pastePosition);
@@ -141,35 +204,40 @@
         {
             if(pastePosition)
             {
-                assertNotNull(leftBefore);
-                assertNotNull(leftAfter);
-                assertTrue(TextLayoutFormat.isEqual(leftBefore, leftAfter));
+                assertNotNull("Couldn't manage to find the format of the character to the left of the pasted text, before the paste operation!", leftBefore);
+                assertNotNull("Couldn't manage to find the format of the character to the left of the pasted text, after the paste operation!", leftAfter);
+                assertTrue("The style of the original text has been altered! (left)", TextLayoutFormat.isEqual(leftBefore, leftAfter));
             }
 
-            if(pastePosition < SelManager.textFlow.textLength - 1)
+            if(pastePosition < initialTextLength - 1)
             {
-                assertNotNull(rightBefore);
-                assertNotNull(rightAfter);
-                assertTrue(TextLayoutFormat.isEqual(rightBefore, rightAfter));
+                assertNotNull("Couldn't manage to find the format of the character to the right of the pasted text, before the paste operation!", rightBefore);
+                assertNotNull("Couldn't manage to find the format of the character to the right of the pasted text, after the paste operation!", rightAfter);
+                assertTrue("The style of the original text has been altered! (right)", TextLayoutFormat.isEqual(rightBefore, rightAfter));
             }
         }
 
         private function recordTextFormatsBeforeOperation(pastePosition:int):void
         {
             leftBefore = pastePosition ? getFormatOfCharAt(pastePosition - 1) : null;
-            rightBefore = pastePosition < SelManager.textFlow.textLength - 1 ?  getFormatOfCharAt(pastePosition + 1) : null;
+            rightBefore = pastePosition < initialTextLength - 1 ?  getFormatOfCharAt(pastePosition + 1) : null;
         }
 
         private function recordTextFormatsAfterOperation(pastePosition:int):void
         {
             leftAfter = pastePosition ? getFormatOfCharAt(pastePosition - 1) : null;
-            rightAfter = pastePosition < SelManager.textFlow.textLength - PASTED_TEXT.length - 1 ? getFormatOfCharAt(pastePosition + 1 + PASTED_TEXT.length) : null;
+            rightAfter = pastePosition < initialTextLength - 1 ? getFormatOfCharAt(pastePosition + 1 + PASTED_TEXT.length) : null;
         }
 
-        private function getFormatOfCharAt(pastePosition:int):ITextLayoutFormat
+        private function getFormatOfCharAt(position:int, flow:TextFlow = null):ITextLayoutFormat
         {
-            const charLeftOfPasteBeforeOperation:FlowElement = SelManager.textFlow.findLeaf(pastePosition);
-            return charLeftOfPasteBeforeOperation ? charLeftOfPasteBeforeOperation.format : null;
+            return getFormatOfCharFromFlow(position, flow || SelManager.textFlow);
+        }
+
+        private static function getFormatOfCharFromFlow(position:int, flow:TextFlow):ITextLayoutFormat
+        {
+            const elementAtPosition:FlowElement = flow.findLeaf(position);
+            return elementAtPosition ? elementAtPosition.format : null;
         }
 
         private function assertTextPastedCorrectlyAndExistingTextNotChanged(pastePosition:int):void