flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mih...@apache.org
Subject [1/2] git commit: [flex-tlf] [refs/heads/develop] - FLEX-34807 Improved unit test by checking that the adjacent styles / text formats are not changed by the paste operation.
Date Tue, 22 Sep 2015 15:09:12 GMT
Repository: flex-tlf
Updated Branches:
  refs/heads/develop 422b5536a -> 0f33c43a0


FLEX-34807
Improved unit test by checking that the adjacent styles / text formats are not changed by
the paste operation.


Project: http://git-wip-us.apache.org/repos/asf/flex-tlf/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-tlf/commit/7b3f374f
Tree: http://git-wip-us.apache.org/repos/asf/flex-tlf/tree/7b3f374f
Diff: http://git-wip-us.apache.org/repos/asf/flex-tlf/diff/7b3f374f

Branch: refs/heads/develop
Commit: 7b3f374f999cb91f1619546dbbe29764f238000c
Parents: 422b553
Author: Mihai Chira <mihaic@apache.org>
Authored: Tue Sep 22 17:06:51 2015 +0200
Committer: Mihai Chira <mihaic@apache.org>
Committed: Tue Sep 22 17:06:51 2015 +0200

----------------------------------------------------------------------
 .../src/UnitTest/Tests/FLEX_34807_Test.as       | 82 ++++++++++++++++----
 1 file changed, 68 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/7b3f374f/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as b/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
index 99d0892..7cd97ea 100644
--- a/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
+++ b/automation_tests/src/UnitTest/Tests/FLEX_34807_Test.as
@@ -34,8 +34,13 @@ package UnitTest.Tests
     import flashx.textLayout.conversion.ConversionType;
     import flashx.textLayout.conversion.TextConverter;
     import flashx.textLayout.edit.TextScrap;
+    import flashx.textLayout.elements.FlowElement;
+    import flashx.textLayout.formats.ITextLayoutFormat;
+    import flashx.textLayout.formats.TextLayoutFormat;
 
     import org.flexunit.asserts.assertEquals;
+    import org.flexunit.asserts.assertNotNull;
+    import org.flexunit.asserts.assertTrue;
 
     public class FLEX_34807_Test extends VellumTestCase
     {
@@ -44,6 +49,10 @@ package UnitTest.Tests
         private const PASTE:TextScrap = new TextScrap(TextConverter.importToFlow(PASTED_HTML,
TextConverter.TEXT_FIELD_HTML_FORMAT));
 
         private var sourceAsPlainText:String;
+        private var leftBefore:ITextLayoutFormat;
+        private var rightBefore:ITextLayoutFormat;
+        private var leftAfter:ITextLayoutFormat;
+        private var rightAfter:ITextLayoutFormat;
 
         public function FLEX_34807_Test()
         {
@@ -79,48 +88,93 @@ package UnitTest.Tests
         public function paste_in_beginning():void
         {
             //given
-            SelManager.selectFirstPosition();
+            recordTextFormatsBeforeOperation(0);
 
             //when
+            SelManager.selectFirstPosition();
             SelManager.pasteTextScrap(PASTE);
 
             //then
-            const result:String = TextConverter.export(testApp.getTextFlow(), TextConverter.PLAIN_TEXT_FORMAT,
ConversionType.STRING_TYPE) as String;
-            assertAllTextHasBeenPasted(result, 0);
+            assertAdjacentTextFormatsNotAltered(0);
+            assertTextPastedCorrectlyAndExistingTextNotChanged(0);
         }
 
         [Test]
-        public function paste_in_first_paragraph():void
+        public function paste_in_first_paragraph_in_middle_of_bold_section():void
         {
             //given
-            const PASTE_POSITION:int = 5; //after "That"
-            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
+            const PASTE_POSITION:int = 16;
+            recordTextFormatsBeforeOperation(PASTE_POSITION);
 
             //when
+            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
             SelManager.pasteTextScrap(PASTE);
 
             //then
-            const result:String = TextConverter.export(testApp.getTextFlow(), TextConverter.PLAIN_TEXT_FORMAT,
ConversionType.STRING_TYPE) as String;
-            assertAllTextHasBeenPasted(result, PASTE_POSITION);
+            assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
+            assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
         }
 
         [Test]
-        public function paste_in_first_paragraph_in_middle_of_bold_section():void
+        public function paste_in_first_paragraph():void
         {
             //given
-            const PASTE_POSITION:int = 16;
-            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
+            const PASTE_POSITION:int = 5; //after "There"
+            recordTextFormatsBeforeOperation(PASTE_POSITION);
 
             //when
+            SelManager.selectRange(PASTE_POSITION, PASTE_POSITION);
             SelManager.pasteTextScrap(PASTE);
 
             //then
-            const result:String = TextConverter.export(testApp.getTextFlow(), TextConverter.PLAIN_TEXT_FORMAT,
ConversionType.STRING_TYPE) as String;
-            assertAllTextHasBeenPasted(result, PASTE_POSITION);
+            assertAdjacentTextFormatsNotAltered(PASTE_POSITION);
+            assertTextPastedCorrectlyAndExistingTextNotChanged(PASTE_POSITION);
+        }
+
+        private function assertAdjacentTextFormatsNotAltered(pastePosition:int):void
+        {
+            recordTextFormatsAfterOperation(pastePosition);
+            assertAdjacentTextFormatsArePreserved(pastePosition);
+        }
+
+        private function assertAdjacentTextFormatsArePreserved(pastePosition:int):void
+        {
+            if(pastePosition)
+            {
+                assertNotNull(leftBefore);
+                assertNotNull(leftAfter);
+                assertTrue(TextLayoutFormat.isEqual(leftBefore, leftAfter));
+            }
+
+            if(pastePosition < SelManager.textFlow.textLength - 1)
+            {
+                assertNotNull(rightBefore);
+                assertNotNull(rightAfter);
+                assertTrue(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;
+        }
+
+        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;
+        }
+
+        private function getFormatOfCharAt(pastePosition:int):ITextLayoutFormat
+        {
+            const charLeftOfPasteBeforeOperation:FlowElement = SelManager.textFlow.findLeaf(pastePosition);
+            return charLeftOfPasteBeforeOperation ? charLeftOfPasteBeforeOperation.format
: null;
         }
 
-        private function assertAllTextHasBeenPasted(currentSourceAsPlainText:String, pastePosition:int):void
+        private function assertTextPastedCorrectlyAndExistingTextNotChanged(pastePosition:int):void
         {
+            const currentSourceAsPlainText:String = TextConverter.export(testApp.getTextFlow(),
TextConverter.PLAIN_TEXT_FORMAT, ConversionType.STRING_TYPE) as String;
             assertEquals("Not all the pasted content appears in the new TextFlow!", sourceAsPlainText.substr(0,
pastePosition) + PASTED_TEXT + sourceAsPlainText.substr(pastePosition), currentSourceAsPlainText);
         }
     }


Mime
View raw message