Return-Path: X-Original-To: apmail-flex-commits-archive@www.apache.org Delivered-To: apmail-flex-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 25EDB18EB4 for ; Sun, 3 May 2015 11:30:46 +0000 (UTC) Received: (qmail 1420 invoked by uid 500); 3 May 2015 11:30:46 -0000 Delivered-To: apmail-flex-commits-archive@flex.apache.org Received: (qmail 1390 invoked by uid 500); 3 May 2015 11:30:46 -0000 Mailing-List: contact commits-help@flex.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flex.apache.org Delivered-To: mailing list commits@flex.apache.org Received: (qmail 1377 invoked by uid 99); 3 May 2015 11:30:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 03 May 2015 11:30:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B90DDDFEFB; Sun, 3 May 2015 11:30:45 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: piotrz@apache.org To: commits@flex.apache.org Message-Id: <5e2c2c90ef89479ea0d450c4c0f7c5aa@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: [flex-tlf] [refs/heads/develop] - Migrate TCYTest to FU 4 Ignored test: undoOverlappingTCYTest Partially ignored tcyAllMouseEventMirrorTest - comments all failing events - FIXME! Add LoadingFileRule class - Helper for loading test's data if s Date: Sun, 3 May 2015 11:30:45 +0000 (UTC) Repository: flex-tlf Updated Branches: refs/heads/develop f16de0916 -> 99e7739a1 Migrate TCYTest to FU 4 Ignored test: undoOverlappingTCYTest Partially ignored tcyAllMouseEventMirrorTest - comments all failing events - FIXME! Add LoadingFileRule class - Helper for loading test's data if some of the heavy data won't load in "BeforeClass" method Project: http://git-wip-us.apache.org/repos/asf/flex-tlf/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-tlf/commit/99e7739a Tree: http://git-wip-us.apache.org/repos/asf/flex-tlf/tree/99e7739a Diff: http://git-wip-us.apache.org/repos/asf/flex-tlf/diff/99e7739a Branch: refs/heads/develop Commit: 99e7739a1e4bc41b76d7797b0b209d294d7093dd Parents: f16de09 Author: piotrz Authored: Sun May 3 13:30:21 2015 +0200 Committer: piotrz Committed: Sun May 3 13:30:21 2015 +0200 ---------------------------------------------------------------------- .../UnitTest/ExtendedClasses/LoadingFileRule.as | 78 ++ automation_tests/src/AllTestsSuite.as | 2 + automation_tests/src/AutomationTestClasses.as | 6 +- automation_tests/src/UnitTest/Tests/TCYTest.as | 882 +++++++++++++++++++ automation_tests/src/UnitTest/Tests/TCYTests.as | 857 ------------------ 5 files changed, 965 insertions(+), 860 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/99e7739a/automation_core/src/UnitTest/ExtendedClasses/LoadingFileRule.as ---------------------------------------------------------------------- diff --git a/automation_core/src/UnitTest/ExtendedClasses/LoadingFileRule.as b/automation_core/src/UnitTest/ExtendedClasses/LoadingFileRule.as new file mode 100644 index 0000000..569d0f2 --- /dev/null +++ b/automation_core/src/UnitTest/ExtendedClasses/LoadingFileRule.as @@ -0,0 +1,78 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package UnitTest.ExtendedClasses +{ + import UnitTest.Fixtures.FileRepository; + import UnitTest.Fixtures.TestConfig; + + import flash.events.ErrorEvent; + import flash.events.Event; + + import org.flexunit.asserts.fail; + import org.flexunit.internals.runners.statements.MethodRuleBase; + import org.flexunit.rules.IMethodRule; + import org.flexunit.token.AsyncTestToken; + import org.flexunit.token.ChildResult; + + /** + * This rule helps load files with data required for test cases + * It should be used in case when data from file couldn't be load enough fast to be ready for test cases + */ + public class LoadingFileRule extends MethodRuleBase implements IMethodRule + { + private var _fileName:String; + + public function LoadingFileRule(fileName:String) + { + super(); + _fileName = fileName; + } + + override public function evaluate(parentToken:AsyncTestToken):void + { + super.evaluate(parentToken); + + var testConfig:TestConfig = TestConfig.getInstance(); + var fileExists:String = FileRepository.getFile(testConfig.baseURL, _fileName); + if (fileExists == null) + { + FileRepository.readFile(testConfig.baseURL, _fileName, fileLoadCompleteHandler, fileLoadErrorHandler); + } + else + { + proceedToNextStatement(); + } + } + + override protected function handleStatementComplete(result:ChildResult):void + { + super.handleStatementComplete(result); + } + + private function fileLoadCompleteHandler(event:Event):void + { + proceedToNextStatement(); + } + + private function fileLoadErrorHandler(event:ErrorEvent):void + { + fail("Loading file failed"); + } + } +} http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/99e7739a/automation_tests/src/AllTestsSuite.as ---------------------------------------------------------------------- diff --git a/automation_tests/src/AllTestsSuite.as b/automation_tests/src/AllTestsSuite.as index 75d9388..0e636e0 100644 --- a/automation_tests/src/AllTestsSuite.as +++ b/automation_tests/src/AllTestsSuite.as @@ -47,6 +47,7 @@ package import UnitTest.Tests.OperationTest; import UnitTest.Tests.ScrollingTest; import UnitTest.Tests.SpacingTest; + import UnitTest.Tests.TCYTest; import UnitTest.Tests.TabTest; import UnitTest.Tests.TextContainerManagerTest; import UnitTest.Tests.TextFlowEditTest; @@ -96,6 +97,7 @@ package public var textLineFilterTest:TextLineFilterTest; public var textFlowTextLineFactoryTest:TextFlowTextLineFactoryTest; public var textContainerManagerTest:TextContainerManagerTest; + public var tcyTest:TCYTest; } } http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/99e7739a/automation_tests/src/AutomationTestClasses.as ---------------------------------------------------------------------- diff --git a/automation_tests/src/AutomationTestClasses.as b/automation_tests/src/AutomationTestClasses.as index 3079ccf..f94f55d 100644 --- a/automation_tests/src/AutomationTestClasses.as +++ b/automation_tests/src/AutomationTestClasses.as @@ -33,8 +33,8 @@ package import UnitTest.PerformanceTests.VellumParaTests; VellumParaTests; import UnitTest.PerformanceTests.VellumWordTests; VellumWordTests; */ - import AllTestsSuite; AllTestsSuite; - import MinimalTestsSuite; MinimalTestsSuite; + AllTestsSuite; + MinimalTestsSuite; // import UnitTest.Tests.AccessibilityMethodsTest; AccessibilityMethodsTest; /*import UnitTest.Tests.AllAttributeTest; AllAttributeTest; import UnitTest.Tests.AllCharAttributeTest; AllCharAttributeTest; @@ -72,7 +72,7 @@ package import UnitTest.Tests.SelectionTest; SelectionTest; import UnitTest.Tests.SpacingTest; SpacingTest; import UnitTest.Tests.StyleTest; StyleTest; - import UnitTest.Tests.TCYTests; TCYTests; + import UnitTest.Tests.TCYTest; TCYTest; import UnitTest.Tests.TextContainerManagerTest; TextContainerManagerTest; import UnitTest.Tests.TableBackgroundTest; TableBackgroundTest; import UnitTest.Tests.TableTests; TableTests; http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/99e7739a/automation_tests/src/UnitTest/Tests/TCYTest.as ---------------------------------------------------------------------- diff --git a/automation_tests/src/UnitTest/Tests/TCYTest.as b/automation_tests/src/UnitTest/Tests/TCYTest.as new file mode 100644 index 0000000..db907ef --- /dev/null +++ b/automation_tests/src/UnitTest/Tests/TCYTest.as @@ -0,0 +1,882 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package UnitTest.Tests +{ + import UnitTest.ExtendedClasses.LoadingFileRule; + import UnitTest.ExtendedClasses.VellumTestCase; + import UnitTest.Fixtures.TestConfig; + + import flash.display.Graphics; + import flash.display.Sprite; + import flash.events.ErrorEvent; + import flash.events.MouseEvent; + import flash.geom.Rectangle; + import flash.text.engine.TextLine; + + import flashx.textLayout.container.ContainerController; + import flashx.textLayout.conversion.TextConverter; + import flashx.textLayout.edit.*; + import flashx.textLayout.elements.DivElement; + import flashx.textLayout.elements.FlowElement; + import flashx.textLayout.elements.FlowGroupElement; + import flashx.textLayout.elements.FlowLeafElement; + import flashx.textLayout.elements.LinkElement; + import flashx.textLayout.elements.ParagraphElement; + import flashx.textLayout.elements.SpanElement; + import flashx.textLayout.elements.TCYElement; + import flashx.textLayout.elements.TextFlow; + import flashx.textLayout.events.FlowElementMouseEvent; + import flashx.textLayout.formats.TextLayoutFormat; + import flashx.textLayout.tlf_internal; + import flashx.textLayout.utils.GeometryUtil; + + import mx.containers.Canvas; + + import org.flexunit.asserts.assertFalse; + import org.flexunit.asserts.assertTrue; + import org.flexunit.asserts.fail; + import org.flexunit.async.Async; + + use namespace tlf_internal; + + [TestCase(order=37)] + public class TCYTest extends VellumTestCase + { + [Rule] + public var loadingFileRule:LoadingFileRule = new LoadingFileRule("../../test/testFiles/markup/tlf/tcyTestBase.xml"); + + public function TCYTest() + { + super("", "TCYTest", TestConfig.getInstance()); + TestData.fileName = "tcyTestBase.xml"; + metaData = {}; + // moving this to suiteFromXML + //readTestFile(TestData.fileName); + + // Note: These must correspond to a Watson product area (case-sensitive) + metaData.productArea = "TCY"; + } + + [Before] + override public function setUpTest():void + { + super.setUpTest(); + } + + [Test] + public function makeLTR_TCYTest():void + { + verifyLoad(); + + SelManager.selectRange(15, 22); + var tcyElement:TCYElement = SelManager.applyTCY(true); + var leaf:FlowLeafElement = SelManager.textFlow.findLeaf(15); + var tcyStart:TCYElement = leaf.getParentByType(TCYElement) as TCYElement; + assertTrue("EditManager.applyTCY not returning first tcy Created", tcyStart == tcyElement); + } + + [Test] + public function makeRTL_TCYTest():void + { + verifyLoad(); + + SelManager.selectRange(62, 73); + SelManager.applyTCY(true); + } + + [Test] + public function makeJ_TCYTest():void + { + verifyLoad(); + + SelManager.selectRange(31, 34); + SelManager.applyTCY(true); + } + + [Test] + public function headOfLineTest():void + { + verifyLoad(); + + SelManager.selectRange(0, 0); + SelManager.insertText("TCY"); + SelManager.selectRange(0, 3); + SelManager.applyTCY(true); + + var fbe:FlowGroupElement = SelManager.textFlow.findAbsoluteFlowGroupElement(0); + + assertTrue("TCY was not applied to line head!", fbe is TCYElement); + } + + [Test] + public function endOfLineTest():void + { + verifyLoad(); + + var lastIndx:int = SelManager.textFlow.textLength - 1; + + SelManager.selectRange(lastIndx, lastIndx); + SelManager.insertText("TCY"); + SelManager.selectRange(lastIndx, lastIndx + 3); + SelManager.applyTCY(true); + + var fbe:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(lastIndx + 1); + + assertTrue("TCY was not applied to line end!", fbe is TCYElement); + } + + [Test] + public function linkCrossingTCYTest():void + { + verifyLoad(); + + var half:int = SelManager.textFlow.textLength / 2; + + SelManager.selectRange(half, half); + SelManager.insertText("TCY"); + SelManager.selectRange(half, half + 3); + SelManager.applyTCY(true); + + var fbe:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(half + 1); + + assertTrue("TCY was not applied to line!", fbe is TCYElement); + + SelManager.selectRange(half + 2, half + 5); + SelManager.applyLink( + "http://www.google.com", + "_self", + false + ); + + var fl:FlowElement = SelManager.textFlow.findLeaf(half + 4) as FlowElement; + var linkEl:LinkElement = fl.getParentByType(LinkElement) as LinkElement; + + assertTrue("Link Element was created spanning a TCY element!", linkEl == null); + } + + [Test] + public function linkInsideTCYTest():void + { + verifyLoad(); + + var half:int = SelManager.textFlow.textLength / 2; + + SelManager.selectRange(half, half); + SelManager.insertText("TCY"); + SelManager.selectRange(half, half + 3); + SelManager.applyTCY(true); + + var fbe:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(half + 1); + + assertTrue("TCY was not applied to line!", fbe is TCYElement); + + SelManager.selectRange(half, half + 3); + SelManager.applyLink( + "http://www.google.com", + "_self", + false + ); + + var fl:FlowElement = SelManager.textFlow.findLeaf(half + 2) as FlowElement; + var linkEl:LinkElement = fl.getParentByType(LinkElement) as LinkElement; + + assertTrue("Link Element was not created in the TCY element!", linkEl != null); + assertTrue("Link Element was not created in the TCY element!", linkEl.target == "_self"); + assertTrue("Link Element was not created in the TCY element!", linkEl.href == "http://www.google.com"); + } + + [Test] + public function inlineInsideTCYTest():void + { + verifyLoad(); + + var half:int = SelManager.textFlow.textLength / 2; + + SelManager.selectRange(half, half); + SelManager.insertText("TCY"); + SelManager.selectRange(half, half + 3); + SelManager.applyTCY(true); + + var fbe:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(half + 1); + + assertTrue("TCY was not applied to line!", fbe is TCYElement); + + var displayObject:Sprite = new Sprite(); + var g:Graphics = displayObject.graphics; + g.beginFill(0xFF0000); + g.drawRect(0, 0, 50, 50); + g.endFill(); + + SelManager.selectRange(half + 2, half + 2); + SelManager.insertInlineGraphic(displayObject, 50, 50); + // bug #2724129 - the line above caused a RTE before the fix. + } + + [Test] + [Ignore] + public function undoOverlappingTCYTest():void + { + verifyLoad(); + + var half:int = SelManager.textFlow.textLength / 2; + half = half - 6; + + SelManager.selectRange(half, half); + SelManager.insertText("TCY"); + SelManager.selectRange(half, half + 3); + SelManager.applyTCY(true); + + var fbe:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(half + 1); + + SelManager.flushPendingOperations(); + + assertTrue("TCY was not applied to line!", fbe is TCYElement); + + SelManager.selectRange(half - 1, half + 1); + SelManager.applyTCY(true); + + SelManager.flushPendingOperations(); + + var fge:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(half); + + assertTrue("TCY was not applied to line!", fge is TCYElement); + assertTrue("TCY was merged with previous TCY!", fge != fbe); + + SelManager.undo(); + + var fge2:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(half + 1); + + assertTrue("TCY Element was not reconstituted correctly on undo", + fge2.getAbsoluteStart() == fbe.getAbsoluteStart() && + fge2.textLength == fbe.textLength + ); + assertTrue("Ghost TCY Element still points to valid text flow after removal.", + fge.getTextFlow() == null + ); + } + + [Test] + public function paragraphCrossingTCYTest():void + { + verifyLoad(); + + var para:ParagraphElement = SelManager.textFlow.findAbsoluteParagraph(0); + var absoluteParaStart:int = para.getAbsoluteStart(); + var end:int = absoluteParaStart + para.textLength; + + SelManager.selectRange(end, end); + SelManager.insertText("TCYYCT"); + SelManager.selectRange(end, end + 6); + SelManager.applyTCY(true); + + SelManager.selectRange(end + 3, end + 3); + SelManager.splitParagraph(); + SelManager.flushPendingOperations(); + + var first:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(end + 1); + var second:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(end + 5); + + assertTrue("TCY was not applied to first line!", first is TCYElement); + assertTrue("TCY was not applied to second line!", second is TCYElement); + assertFalse("First and second TCYs are the same FlowGroupElement!", first === second); + } + + [Test] + public function tcySplittingTest():void + { + verifyLoad(); + var para:ParagraphElement = SelManager.textFlow.findAbsoluteParagraph(0); + var absoluteParaStart:int = para.getAbsoluteStart(); + var end:int = absoluteParaStart + para.textLength; + var half:int = end / 2; + + SelManager.selectRange(half, half); + SelManager.insertText("HelloWorld"); + SelManager.selectRange(half, half + 10); + SelManager.applyTCY(true); + SelManager.selectRange(half, half + 5); + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 56; + format.blockProgression = "tb"; + (SelManager as IEditManager).applyLeafFormat(format); + SelManager.selectRange(half + 5, half + 10); + format.fontSize = 36; + (SelManager as IEditManager).applyLeafFormat(format); + SelManager.selectRange(half + 5, half + 5); + SelManager.splitParagraph(); + SelManager.flushPendingOperations(); + + var spanHello:FlowGroupElement = SelManager.textFlow.findAbsoluteFlowGroupElement(half + 2); + var spanWorld:FlowGroupElement = SelManager.textFlow.findAbsoluteFlowGroupElement(half + 7); + + assertTrue("TCY was not applied to first line!", spanHello is TCYElement); + assertTrue("TCY was not applied to second line!", spanWorld is TCYElement); + } + + [Test] + public function overwriteTextLeftOfTCYTest():void + { + verifyLoad(); + SelManager.selectRange(15, 22); + SelManager.applyTCY(true); + + SelManager.selectRange(14, 15); + SelManager.insertText("d"); + + SelManager.flushPendingOperations(); + + var tcy:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(15); + var left:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(14); + + assertTrue("Text left of TCY was added to TCY!", !(left is TCYElement)); + assertTrue("TCY was altered by insertion of text outside TCY!", tcy is TCYElement); + assertTrue("TCY element length changed!", tcy.textLength == 7); + } + + [Test] + public function overwriteTextRightOfTCYTest():void + { + verifyLoad(); + SelManager.selectRange(15, 22); + SelManager.applyTCY(true); + + SelManager.selectRange(22, 23); + SelManager.insertText("d"); + + SelManager.flushPendingOperations(); + + var tcy:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(21); + var right:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(22); + + assertTrue("Text right of TCY was added to TCY!", !(right is TCYElement)); + assertTrue("TCY was altered by insertion of text outside TCY!", tcy is TCYElement); + assertTrue("TCY element length changed!", tcy.textLength == 7); + } + + [Test] + public function overwriteFirstCharOfTCYTest():void + { + verifyLoad(); + SelManager.selectRange(15, 22); + SelManager.applyTCY(true); + + SelManager.selectRange(15, 16); + SelManager.insertText("d"); + + SelManager.flushPendingOperations(); + + var tcy:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(19); + assertTrue("Expected TCY at this position!", tcy is TCYElement); + assertTrue("TCY element length changed!", tcy.textLength == 7); + + } + + [Test] + public function overwriteLastCharOfTCYTest():void + { + verifyLoad(); + SelManager.selectRange(15, 22); + SelManager.applyTCY(true); + + SelManager.selectRange(21, 22); + SelManager.insertText("d"); + + SelManager.flushPendingOperations(); + + var tcy:FlowGroupElement = + SelManager.textFlow.findAbsoluteFlowGroupElement(19); + assertTrue("Expected TCY at this position!", tcy is TCYElement); + assertTrue("TCY element length changed!", tcy.textLength == 7); + } + + [Test] + public function makeAllIntoTCY():void + { + verifyLoad(); + SelManager.selectAll(); + SelManager.applyTCY(true); + + SelManager.flushPendingOperations(); + + var elem:FlowLeafElement = SelManager.textFlow.getFirstLeaf(); + var para:ParagraphElement = elem.getParagraph(); + var paraIter:int = 0; + while (para != null) + { + assertTrue("Each paragraph should only have 1 element! Paragraph number " + paraIter, para.numChildren == 1); + assertTrue("All paragraph elements should only have a TCY Element! Paragraph number " + paraIter, para.getChildAt(0) is TCYElement); + para = para.getNextParagraph(); + ++paraIter; + } + } + + private function verifyLoad():void + { + TestFrame.textFlow.flowComposer.updateAllControllers(); + + SelManager.selectRange(0, 0); + } + + private var tf:TextFlow = new TextFlow(); + + [Test(async)] + public function tcyMouseDownEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_DOWN, + Async.asyncHandler(this, checkMouseDownEvent, 50, {timeOut: "Timeout reached checkMouseDownEvent"}, tcyTestsTimeout), false, 0, true); + + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + tf.interactionManager = null; + var mouseDownEvent:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine); + textLine.dispatchEvent(mouseDownEvent); + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + [Test(async)] + public function tcyMouseClickEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.CLICK, + Async.asyncHandler(this, checkMouseClickEvent, 50, {timeOut: "Timeout reached checkMouseClickEvent"}, tcyTestsTimeout), false, 0, true); + + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + // Get the bounds of the link in TextLine coordinates + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + + tf.interactionManager = null; + //dispatch mouse events + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + [Test(async)] + public function tcyMouseMoveEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_MOVE, + Async.asyncHandler(this, checkMouseMoveEvent, 50, {timeOut: "Timeout reached checkMouseMoveEvent"}, tcyTestsTimeout), false, 0, true); + + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + // Get the bounds of the link in TextLine coordinates + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + + tf.interactionManager = null; + + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + [Test(async)] + public function tcyMouseUpEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_UP, + Async.asyncHandler(this, checkMouseUpEvent, 50, {timeOut: "Timeout reached checkMouseUpEvent"}, tcyTestsTimeout), false, 0, true); + + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + tf.interactionManager = null; + + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + [Test(async)] + public function tcyRollOverEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OVER, + Async.asyncHandler(this, checkMouseRollOverEvent, 2500, {timeOut: "Timeout reached checkMouseRollOverEvent"}, tcyTestsTimeout), false, 0, true); + + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + + tf.interactionManager = null; + + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + [Test(async)] + public function tcyRollOutEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OUT, + Async.asyncHandler(this, checkMouseRollOutEvent, 2500, {timeOut: "Timeout reached checkMouseRollOutEvent"}, tcyTestsTimeout), false, 0, true); + + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + tf.interactionManager = null; + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT, true, false, bounds.right + 1, bounds.bottom + 1, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + /** + * FIXME: Events commented in this method do not work - please fix if you can + */ + [Test(async)] + public function tcyAllMouseEventMirrorTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + var editmanager:EditManager = new EditManager(); + tf.interactionManager = editmanager; + editmanager.selectRange(4, 7); + var tcy:TCYElement = editmanager.applyTCY(true); + //listen for all FlowElementMouseEvents + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_DOWN, Async.asyncHandler(this, checkMouseDownEvent, 100, {timeOut: "Timeout reached checkMouseDownEvent"}, tcyTestsTimeout)); + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_UP, Async.asyncHandler(this, checkMouseUpEvent, 100, {timeOut: "Timeout reached checkMouseUpEvent"}, tcyTestsTimeout)); + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_MOVE, Async.asyncHandler(this, checkMouseMoveEvent, 100, {timeOut: "Timeout reached checkMouseMoveEvent"}, tcyTestsTimeout)); + + /* tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OVER, Async.asyncHandler(this, checkMouseRollOverEvent, 200, {timeOut: "Timeout reached checkMouseRollOverEvent"}, tcyTestsTimeout)); + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OUT, Async.asyncHandler(this, checkMouseRollOutEvent, 200, {timeOut: "Timeout reached checkMouseRollOutEvent"}, tcyTestsTimeout)); + tcy.getEventMirror().addEventListener(FlowElementMouseEvent.CLICK, Async.asyncHandler(this, checkMouseClickEvent, 2000, {timeOut: "Timeout reached checkMouseClickEvent"}, tcyTestsTimeout)); + */ + var container:Sprite = new Sprite(); + var TestCanvas:Canvas = testApp.getDisplayObject(); + TestCanvas.rawChildren.addChild(container); + + var cc:ContainerController = new ContainerController(container, 200, 400); + tf.flowComposer.addController(cc); + tf.flowComposer.updateAllControllers(); + + // Get the bounds of the link in TextLine coordinates + var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; + var bounds:Rectangle = boundsInfo.rect as Rectangle; + var textLine:TextLine = boundsInfo.textLine; + tf.interactionManager = null; + //dispatch all mouse events + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + /*textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); + textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT, true, false, bounds.right + 1, bounds.bottom + 1, textLine)); */ + + tf.interactionManager = editmanager; + editmanager.selectRange(0, 0); + } + + private function checkMouseDownEvent(e:FlowElementMouseEvent, passThroughData:Object):void + { + assertTrue("mouseDown event is not fired", !(e is ErrorEvent)); + tf.removeEventListener(FlowElementMouseEvent.MOUSE_DOWN, checkMouseDownEvent); + } + + private function checkMouseUpEvent(e:FlowElementMouseEvent, passThroughData:Object):void + { + assertTrue("mouseUp event is not fired", !(e is ErrorEvent)); + tf.removeEventListener(FlowElementMouseEvent.MOUSE_UP, checkMouseUpEvent); + } + + private function checkMouseClickEvent(e:FlowElementMouseEvent, passThroughData:Object):void + { + assertTrue("mouseClick event is not fired", !(e is ErrorEvent)); + tf.removeEventListener(FlowElementMouseEvent.CLICK, checkMouseClickEvent); + } + + private function checkMouseMoveEvent(e:FlowElementMouseEvent, passThroughData:Object):void + { + assertTrue("mouseMove event is not fired", !(e is ErrorEvent)); + tf.removeEventListener(FlowElementMouseEvent.MOUSE_MOVE, checkMouseMoveEvent); + } + + private function checkMouseRollOverEvent(e:FlowElementMouseEvent, passThroughData:Object):void + { + assertTrue("mouseRollOver event is not fired", !(e is ErrorEvent)); + tf.removeEventListener(FlowElementMouseEvent.ROLL_OVER, checkMouseRollOverEvent); + } + + private function checkMouseRollOutEvent(e:FlowElementMouseEvent, passThroughData:Object):void + { + assertTrue("mouseRollOut event is not fired", !(e is ErrorEvent)); + tf.removeEventListener(FlowElementMouseEvent.ROLL_OUT, checkMouseRollOutEvent); + } + + private function tcyTestsTimeout(passThroughData:Object = null):void + { + fail(passThroughData.timeOut); + } + + [Test] + public function addDivInTcyTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var format:TextLayoutFormat = new TextLayoutFormat(); + format.fontFamily = "Arial"; + format.fontSize = 16; + format.direction = "ltr"; + format.blockProgression = "rl"; + tf.hostFormat = format; + var p:ParagraphElement = new ParagraphElement(); + tf.addChild(p); + var span:SpanElement = new SpanElement(); + span.text = "\nこれは縦中横テストです"; + p.addChild(span); + + var divElement:DivElement = SelManager.createDiv(); + divElement.addChild(p); + var tcyElement:TCYElement = new TCYElement(); + try + { + tcyElement.addChild(divElement); + } catch (e:Error) + { + assertTrue("There should be error returned when adding Div to Tcy.", e != null); + } + } + + /** + * mjzhang : Bug#2808701 RTE removing TCY from a span in a link at the beginning of a flow + */ + [Test] + public function disableTCYTest():void + { + SelManager.selectAll(); + SelManager.deleteText(); + + var textFlow:TextFlow = SelManager.textFlow; + var markup:String = '

a

'; + var textFlowNew:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT); + + var paraElement:ParagraphElement = textFlowNew.getChildAt(0) as ParagraphElement; + var paraElementCopy:ParagraphElement = paraElement.deepCopy(0, paraElement.textLength) as ParagraphElement; + textFlow.replaceChildren(0, textFlow.numChildren, paraElementCopy); + + SelManager.selectAll(); + try + { + SelManager.applyTCY(false); + } catch (e:Error) + { + assertTrue("Expect TCY disabled normally, but we met error/exception.", false); + } + } + } +} http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/99e7739a/automation_tests/src/UnitTest/Tests/TCYTests.as ---------------------------------------------------------------------- diff --git a/automation_tests/src/UnitTest/Tests/TCYTests.as b/automation_tests/src/UnitTest/Tests/TCYTests.as deleted file mode 100644 index f78776e..0000000 --- a/automation_tests/src/UnitTest/Tests/TCYTests.as +++ /dev/null @@ -1,857 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package UnitTest.Tests -{ - import flash.display.Graphics; - import flash.display.Sprite; - import flash.events.MouseEvent; - import flash.geom.Rectangle; - - import flash.events.ErrorEvent; - - - import UnitTest.ExtendedClasses.TestSuiteExtended; - import UnitTest.ExtendedClasses.VellumTestCase; - import UnitTest.Fixtures.FileRepository; - import UnitTest.Fixtures.TestConfig; - - import flashx.textLayout.edit.IEditManager; - import flashx.textLayout.elements.FlowElement; - import flashx.textLayout.elements.FlowGroupElement; - import flashx.textLayout.elements.FlowLeafElement; - import flashx.textLayout.elements.LinkElement; - import flashx.textLayout.elements.ParagraphElement; - import flashx.textLayout.elements.TCYElement; - import flashx.textLayout.elements.SpanElement; - import flashx.textLayout.elements.TextFlow; - import flashx.textLayout.elements.DivElement; - import flashx.textLayout.formats.TextLayoutFormat; - import flashx.textLayout.tlf_internal; - import flashx.textLayout.events.FlowElementMouseEvent; - import flashx.textLayout.utils.GeometryUtil; - import flash.text.engine.TextLine; - import flashx.textLayout.edit.*; - import flashx.textLayout.container.ContainerController; - import flashx.textLayout.conversion.TextConverter; - - import mx.containers.Canvas; - - import org.flexunit.asserts.assertFalse; - - import org.flexunit.asserts.assertTrue; - import org.flexunit.asserts.fail; - import org.flexunit.async.Async; - - use namespace tlf_internal; - - public class TCYTests extends VellumTestCase - { - private var _fileHasLoaded:Boolean = false; - private var xmlRoot:Object; - - public function TCYTests(methodName:String, testID:String, testConfig:TestConfig, testCaseXML:XML=null) - { - super(methodName, testID, testConfig, testCaseXML); - TestData.fileName = "tcyTestBase.xml"; - // moving this to suiteFromXML - //readTestFile(TestData.fileName); - - // Note: These must correspond to a Watson product area (case-sensitive) - metaData.productArea = "TCY"; - } - - public static function suiteFromXML(testListXML:XML, testConfig:TestConfig, ts:TestSuiteExtended):void - { - FileRepository.readFile(testConfig.baseURL, "../../test/testFiles/markup/tlf/tcyTestBase.xml"); - var testCaseClass:Class = TCYTests; - VellumTestCase.suiteFromXML(testCaseClass, testListXML, testConfig, ts); - } - - public function makeLTR_TCYTest():void - { - verifyLoad(); - - SelManager.selectRange(15, 22); - var tcyElement:TCYElement = SelManager.applyTCY(true); - var leaf:FlowLeafElement = SelManager.textFlow.findLeaf(15); - var tcyStart:TCYElement = leaf.getParentByType(TCYElement) as TCYElement; - assertTrue("EditManager.applyTCY not returning first tcy Created", tcyStart == tcyElement); - } - - public function makeRTL_TCYTest():void - { - verifyLoad(); - - SelManager.selectRange(62, 73); - SelManager.applyTCY(true); - } - - public function makeJ_TCYTest():void - { - verifyLoad(); - - SelManager.selectRange(31, 34); - SelManager.applyTCY(true); - } - - public function headOfLineTest():void - { - verifyLoad(); - - SelManager.selectRange(0, 0); - SelManager.insertText("TCY"); - SelManager.selectRange(0, 3); - SelManager.applyTCY(true); - - var fbe:FlowGroupElement = SelManager.textFlow.findAbsoluteFlowGroupElement(0); - - assertTrue("TCY was not applied to line head!", fbe is TCYElement); - } - - public function endOfLineTest():void - { - verifyLoad(); - - var lastIndx:int = SelManager.textFlow.textLength - 1; - - SelManager.selectRange(lastIndx, lastIndx); - SelManager.insertText("TCY"); - SelManager.selectRange(lastIndx, lastIndx+3); - SelManager.applyTCY(true); - - var fbe:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(lastIndx+1); - - assertTrue("TCY was not applied to line end!", fbe is TCYElement); - } - - public function linkCrossingTCYTest():void - { - verifyLoad(); - - var half:int = SelManager.textFlow.textLength / 2; - - SelManager.selectRange(half, half); - SelManager.insertText("TCY"); - SelManager.selectRange(half, half+3); - SelManager.applyTCY(true); - - var fbe:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(half+1); - - assertTrue("TCY was not applied to line!", fbe is TCYElement); - - SelManager.selectRange(half+2, half+5); - SelManager.applyLink( - "http://www.google.com", - "_self", - false - ); - - var fl:FlowElement = SelManager.textFlow.findLeaf(half+4) as FlowElement; - var linkEl:LinkElement = fl.getParentByType(LinkElement) as LinkElement; - - assertTrue("Link Element was created spanning a TCY element!", linkEl == null); - } - - public function linkInsideTCYTest():void - { - verifyLoad(); - - var half:int = SelManager.textFlow.textLength / 2; - - SelManager.selectRange(half, half); - SelManager.insertText("TCY"); - SelManager.selectRange(half, half+3); - SelManager.applyTCY(true); - - var fbe:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(half+1); - - assertTrue("TCY was not applied to line!", fbe is TCYElement); - - SelManager.selectRange(half, half+3); - SelManager.applyLink( - "http://www.google.com", - "_self", - false - ); - - var fl:FlowElement = SelManager.textFlow.findLeaf(half+2) as FlowElement; - var linkEl:LinkElement = fl.getParentByType(LinkElement) as LinkElement; - - assertTrue("Link Element was not created in the TCY element!", linkEl != null); - assertTrue("Link Element was not created in the TCY element!", linkEl.target == "_self"); - assertTrue("Link Element was not created in the TCY element!", linkEl.href == "http://www.google.com"); - } - - public function inlineInsideTCYTest():void - { - verifyLoad(); - - var half:int = SelManager.textFlow.textLength / 2; - - SelManager.selectRange(half, half); - SelManager.insertText("TCY"); - SelManager.selectRange(half, half+3); - SelManager.applyTCY(true); - - var fbe:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(half+1); - - assertTrue("TCY was not applied to line!", fbe is TCYElement); - - var displayObject:Sprite = new Sprite(); - var g:Graphics = displayObject.graphics; - g.beginFill(0xFF0000); - g.drawRect(0, 0, 50, 50); - g.endFill(); - - SelManager.selectRange(half+2, half+2); - SelManager.insertInlineGraphic(displayObject, 50, 50); - // bug #2724129 - the line above caused a RTE before the fix. - } - - public function undoOverlappingTCYTest():void - { - verifyLoad(); - - var half:int = SelManager.textFlow.textLength / 2; - half = half - 6; - - SelManager.selectRange(half, half); - SelManager.insertText("TCY"); - SelManager.selectRange(half, half+3); - SelManager.applyTCY(true); - - var fbe:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(half+1); - - SelManager.flushPendingOperations(); - - assertTrue("TCY was not applied to line!", fbe is TCYElement); - - SelManager.selectRange(half-1, half+1); - SelManager.applyTCY(true); - - SelManager.flushPendingOperations(); - - var fge:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(half); - - assertTrue("TCY was not applied to line!", fge is TCYElement); - assertTrue("TCY was merged with previous TCY!", fge != fbe); - - SelManager.undo(); - - var fge2:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(half+1); - - assertTrue("TCY Element was not reconstituted correctly on undo", - fge2.getAbsoluteStart() == fbe.getAbsoluteStart() && - fge2.textLength == fbe.textLength - ); - assertTrue("Ghost TCY Element still points to valid text flow after removal.", - fge.getTextFlow() == null - ); - } - - public function paragraphCrossingTCYTest():void - { - verifyLoad(); - - var para:ParagraphElement = SelManager.textFlow.findAbsoluteParagraph(0); - var absoluteParaStart:int = para.getAbsoluteStart(); - var end:int = absoluteParaStart + para.textLength; - - SelManager.selectRange(end, end); - SelManager.insertText("TCYYCT"); - SelManager.selectRange(end, end+6); - SelManager.applyTCY(true); - - SelManager.selectRange(end+3, end+3); - SelManager.splitParagraph(); - SelManager.flushPendingOperations(); - - var first:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(end+1); - var second:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(end+5); - - assertTrue("TCY was not applied to first line!", first is TCYElement); - assertTrue("TCY was not applied to second line!", second is TCYElement); - assertFalse("First and second TCYs are the same FlowGroupElement!", first === second); - } - - public function tcySplittingTest():void - { - verifyLoad(); - var para:ParagraphElement = SelManager.textFlow.findAbsoluteParagraph(0); - var absoluteParaStart:int = para.getAbsoluteStart(); - var end:int = absoluteParaStart + para.textLength; - var half:int = end / 2; - - - SelManager.selectRange(half, half); - SelManager.insertText("HelloWorld"); - SelManager.selectRange(half, half+10); - SelManager.applyTCY(true); - SelManager.selectRange(half, half+5); - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 56; - format.blockProgression = "tb"; - (SelManager as IEditManager).applyLeafFormat(format); - SelManager.selectRange(half+5, half+10); - format.fontSize = 36; - (SelManager as IEditManager).applyLeafFormat(format); - SelManager.selectRange(half+5, half+5); - SelManager.splitParagraph(); - SelManager.flushPendingOperations(); - - var spanHello:FlowGroupElement = SelManager.textFlow.findAbsoluteFlowGroupElement(half+2); - var spanWorld:FlowGroupElement = SelManager.textFlow.findAbsoluteFlowGroupElement(half+7); - - assertTrue("TCY was not applied to first line!", spanHello is TCYElement); - assertTrue("TCY was not applied to second line!", spanWorld is TCYElement); - } - - public function overwriteTextLeftOfTCYTest():void - { - verifyLoad(); - SelManager.selectRange(15,22); - SelManager.applyTCY(true); - - SelManager.selectRange(14,15); - SelManager.insertText("d"); - - SelManager.flushPendingOperations(); - - var tcy:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(15); - var left:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(14); - - assertTrue("Text left of TCY was added to TCY!", !(left is TCYElement)); - assertTrue("TCY was altered by insertion of text outside TCY!", tcy is TCYElement); - assertTrue("TCY element length changed!", tcy.textLength == 7); - } - public function overwriteTextRightOfTCYTest():void - { - verifyLoad(); - SelManager.selectRange(15,22); - SelManager.applyTCY(true); - - SelManager.selectRange(22,23); - SelManager.insertText("d"); - - SelManager.flushPendingOperations(); - - var tcy:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(21); - var right:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(22); - - assertTrue("Text right of TCY was added to TCY!", !(right is TCYElement)); - assertTrue("TCY was altered by insertion of text outside TCY!", tcy is TCYElement); - assertTrue("TCY element length changed!", tcy.textLength == 7); - } - public function overwriteFirstCharOfTCYTest():void - { - verifyLoad(); - SelManager.selectRange(15,22); - SelManager.applyTCY(true); - - SelManager.selectRange(15,16); - SelManager.insertText("d"); - - SelManager.flushPendingOperations(); - - var tcy:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(19); - assertTrue("Expected TCY at this position!", tcy is TCYElement); - assertTrue("TCY element length changed!", tcy.textLength == 7); - - } - public function overwriteLastCharOfTCYTest():void - { - verifyLoad(); - SelManager.selectRange(15,22); - SelManager.applyTCY(true); - - SelManager.selectRange(21,22); - SelManager.insertText("d"); - - SelManager.flushPendingOperations(); - - var tcy:FlowGroupElement = - SelManager.textFlow.findAbsoluteFlowGroupElement(19); - assertTrue("Expected TCY at this position!", tcy is TCYElement); - assertTrue("TCY element length changed!", tcy.textLength == 7); - } - public function makeAllIntoTCY():void - { - verifyLoad(); - SelManager.selectAll(); - SelManager.applyTCY(true); - - SelManager.flushPendingOperations(); - - var elem:FlowLeafElement = SelManager.textFlow.getFirstLeaf(); - var para:ParagraphElement = elem.getParagraph(); - var paraIter:int = 0; - while(para != null) - { - assertTrue("Each paragraph should only have 1 element! Paragraph number " + paraIter, para.numChildren == 1); - assertTrue("All paragraph elements should only have a TCY Element! Paragraph number " + paraIter, para.getChildAt(0) is TCYElement); - para = para.getNextParagraph(); - ++paraIter; - } - } - - private function verifyLoad():void - { - TestFrame.textFlow.flowComposer.updateAllControllers(); - - SelManager.selectRange(0,0); - } - - private var tf:TextFlow = new TextFlow(); - - public function tcyMouseDownEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - - var checkMouseDownHandler = Async.asyncHandler(this, checkMouseDownEvent, 2500, {timeOut: "Timeout reached checkMouseDownEvent"}, tcyTestsTimeout); - - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_DOWN, checkMouseDownHandler,false,0,true); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - tf.interactionManager = null; - var mouseDownEvent:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine); - textLine.dispatchEvent(mouseDownEvent); - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - public function tcyMouseClickEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - - var checkMouseClickHandler = Async.asyncHandler(this, checkMouseClickEvent, 2500, {timeOut: "Timeout reached checkMouseClickEvent"}, tcyTestsTimeout); - - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.CLICK, checkMouseClickHandler,false,0,true); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - // Get the bounds of the link in TextLine coordinates - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - - tf.interactionManager = null; - //dispatch mouse events - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - private function checkMouseClickTimeout(passThroughData:Object = null):void - { - fail("Timeout reached TCYTests.checkMouseClick"); - } - - public function tcyMouseMoveEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - - var checkMouseMoveHandler = Async.asyncHandler(this, checkMouseMoveEvent, 2500, {timeOut: "Timeout reached checkMouseMoveEvent"}, tcyTestsTimeout); - - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_MOVE, checkMouseMoveHandler,false,0,true); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - // Get the bounds of the link in TextLine coordinates - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - - tf.interactionManager = null; - - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - public function tcyMouseUpEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - - var checkMouseUpHandler = Async.asyncHandler(this, checkMouseUpEvent, 2500, {timeOut: "Timeout reached checkMouseUpEvent"}, tcyTestsTimeout); - - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_UP, checkMouseUpHandler,false,0,true); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - tf.interactionManager = null; - - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - public function tcyRollOverEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - - var checkMouseRollOverHandler = Async.asyncHandler(this, checkMouseRollOverEvent, 2500, {timeOut: "Timeout reached checkMouseRollOverEvent"}, tcyTestsTimeout); - - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OVER, checkMouseRollOverHandler,false,0,true); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - - tf.interactionManager = null; - - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - public function tcyRollOutEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - - var checkMouseRollOutHandler = Async.asyncHandler(this, checkMouseRollOutEvent, 2500, {timeOut: "Timeout reached checkMouseRollOutEvent"}, tcyTestsTimeout); - - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OUT, checkMouseRollOutHandler,false,0,true); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - tf.interactionManager = null; - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT, true, false, bounds.right + 1, bounds.bottom + 1, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - public function tcyAllMouseEventMirrorTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - var editmanager:EditManager = new EditManager(); - tf.interactionManager = editmanager; - editmanager.selectRange(4,7); - var tcy:TCYElement = editmanager.applyTCY(true); - //listen for all FlowElementMouseEvents - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_DOWN,checkMouseDownEvent); - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_UP,checkMouseUpEvent); - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_MOVE,checkMouseMoveEvent); - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OVER,checkMouseRollOverEvent); - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OUT,checkMouseRollOutEvent); - tcy.getEventMirror().addEventListener(FlowElementMouseEvent.CLICK,checkMouseClickEvent); - - var container:Sprite = new Sprite(); - var TestCanvas:Canvas = testApp.getDisplayObject(); - TestCanvas.rawChildren.addChild(container); - - var cc:ContainerController = new ContainerController(container,200,400); - tf.flowComposer.addController(cc); - tf.flowComposer.updateAllControllers(); - - // Get the bounds of the link in TextLine coordinates - var boundsInfo:Object = GeometryUtil.getHighlightBounds(editmanager.getSelectionState())[0]; - var bounds:Rectangle = boundsInfo.rect as Rectangle; - var textLine:TextLine = boundsInfo.textLine; - tf.interactionManager = null; - //dispatch all mouse events - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT, true, false, bounds.right + 1, bounds.bottom + 1, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OVER, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.ROLL_OUT, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - textLine.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false, (bounds.left + bounds.right) / 2, (bounds.top + bounds.bottom) / 2, textLine)); - - tf.interactionManager = editmanager; - editmanager.selectRange(0, 0); - } - - - private function checkMouseDownEvent(e:FlowElementMouseEvent, passThroughData:Object):void - { - assertTrue("mouseDown event is not fired", !(e is ErrorEvent)); - tf.removeEventListener(FlowElementMouseEvent.MOUSE_DOWN, checkMouseDownEvent); - } - private function checkMouseUpEvent(e:FlowElementMouseEvent, passThroughData:Object):void - { - assertTrue("mouseUp event is not fired", !(e is ErrorEvent)); - tf.removeEventListener(FlowElementMouseEvent.MOUSE_UP, checkMouseUpEvent); - } - private function checkMouseClickEvent(e:FlowElementMouseEvent, passThroughData:Object):void - { - assertTrue("mouseClick event is not fired", !(e is ErrorEvent)); - tf.removeEventListener(FlowElementMouseEvent.CLICK, checkMouseClickEvent); - } - private function checkMouseMoveEvent(e:FlowElementMouseEvent, passThroughData:Object):void - { - assertTrue("mouseMove event is not fired", !(e is ErrorEvent)); - tf.removeEventListener(FlowElementMouseEvent.MOUSE_MOVE, checkMouseMoveEvent); - } - private function checkMouseRollOverEvent(e:FlowElementMouseEvent, passThroughData:Object):void - { - assertTrue("mouseRollOver event is not fired", !(e is ErrorEvent)); - tf.removeEventListener(FlowElementMouseEvent.ROLL_OVER, checkMouseRollOverEvent); - } - private function checkMouseRollOutEvent(e:FlowElementMouseEvent, passThroughData:Object):void - { - assertTrue("mouseRollOut event is not fired", !(e is ErrorEvent)); - tf.removeEventListener(FlowElementMouseEvent.ROLL_OUT, checkMouseRollOutEvent); - } - - private function tcyTestsTimeout(passThroughData:Object = null):void - { - fail(passThroughData.timeOut); - } - - public function addDivInTcyTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var format:TextLayoutFormat = new TextLayoutFormat(); - format.fontFamily = "Arial"; - format.fontSize = 16; - format.direction = "ltr"; - format.blockProgression = "rl"; - tf.hostFormat = format; - var p:ParagraphElement = new ParagraphElement(); - tf.addChild(p); - var span:SpanElement = new SpanElement(); - span.text = "\nこれは縦中横テストです"; - p.addChild(span); - - var divElement:DivElement = SelManager.createDiv(); - divElement.addChild(p); - var tcyElement:TCYElement = new TCYElement(); - try{ - tcyElement.addChild(divElement); - }catch(e:Error) - { - assertTrue("There should be error returned when adding Div to Tcy.", e != null); - } - } - - // mjzhang : Bug#2808701 RTE removing TCY from a span in a link at the beginning of a flow - public function disableTCYTest():void - { - SelManager.selectAll(); - SelManager.deleteText(); - - var textFlow:TextFlow = SelManager.textFlow; - var markup:String = '

a

'; - var textFlowNew:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT); - - var paraElement:ParagraphElement = textFlowNew.getChildAt(0) as ParagraphElement; - var paraElementCopy:ParagraphElement = paraElement.deepCopy(0, paraElement.textLength) as ParagraphElement; - textFlow.replaceChildren(0, textFlow.numChildren, paraElementCopy); - - SelManager.selectAll(); - try{ - SelManager.applyTCY(false); - }catch(e:Error) - { - assertTrue("Expect TCY disabled normally, but we met error/exception.", false); - } - } - - } -}