You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pi...@apache.org on 2014/06/05 23:11:55 UTC
[1/2] Migrate ContainerAttributeTest class to FU 4 Remove some unused
imports
Repository: flex-tlf
Updated Branches:
refs/heads/FlexUnit4TestsTLF 0d5ac0c12 -> cd4871560
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cd487156/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as b/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
index 1901b92..5375549 100644
--- a/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
+++ b/automation_tests/src/UnitTest/Tests/ContainerAttributeTest.as
@@ -18,1600 +18,1816 @@
////////////////////////////////////////////////////////////////////////////////
package UnitTest.Tests
{
- import UnitTest.ExtendedClasses.TestSuiteExtended;
- import UnitTest.ExtendedClasses.VellumTestCase;
- import UnitTest.Fixtures.TestConfig;
-
- import flash.display.BitmapData;
- import flash.display.DisplayObject;
- import flash.display.Shape;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import flash.system.Capabilities;
- import flash.text.engine.TextLine;
- import flash.ui.Mouse;
- import flash.utils.*;
-
- import flashx.textLayout.compose.TextFlowLine;
- import flashx.textLayout.container.*;
- import flashx.textLayout.conversion.TextConverter;
- import flashx.textLayout.edit.EditManager;
- import flashx.textLayout.elements.Configuration;
- import flashx.textLayout.elements.DivElement;
- import flashx.textLayout.elements.GlobalSettings;
- import flashx.textLayout.elements.InlineGraphicElementStatus;
- import flashx.textLayout.elements.ListElement;
- import flashx.textLayout.elements.ListItemElement;
- import flashx.textLayout.elements.ParagraphElement;
- import flashx.textLayout.elements.SpanElement;
- import flashx.textLayout.elements.TextFlow;
- import flashx.textLayout.events.StatusChangeEvent;
- import flashx.textLayout.formats.*;
- import flashx.textLayout.tlf_internal;
-
- import mx.containers.Canvas;
+ import UnitTest.ExtendedClasses.TestSuiteExtended;
+ import UnitTest.ExtendedClasses.VellumTestCase;
+ import UnitTest.Fixtures.TestConfig;
+
+ import flash.display.BitmapData;
+ import flash.display.DisplayObject;
+ import flash.display.Shape;
+ import flash.display.Sprite;
+ import flash.events.Event;
+ import flash.events.MouseEvent;
+ import flash.geom.Point;
+ import flash.geom.Rectangle;
+ import flash.system.Capabilities;
+ import flash.text.engine.TextLine;
+ import flash.ui.Mouse;
+ import flash.utils.*;
+
+ import flashx.textLayout.compose.TextFlowLine;
+ import flashx.textLayout.container.*;
+ import flashx.textLayout.conversion.TextConverter;
+ import flashx.textLayout.edit.EditManager;
+ import flashx.textLayout.elements.Configuration;
+ import flashx.textLayout.elements.GlobalSettings;
+ import flashx.textLayout.elements.InlineGraphicElementStatus;
+ import flashx.textLayout.elements.ParagraphElement;
+ import flashx.textLayout.elements.TextFlow;
+ import flashx.textLayout.events.StatusChangeEvent;
+ import flashx.textLayout.formats.*;
+ import flashx.textLayout.tlf_internal;
+
+ import mx.containers.Canvas;
import org.flexunit.asserts.assertTrue;
use namespace tlf_internal;
- public class ContainerAttributeTest extends VellumTestCase
- {
- private var testContainer:Boolean;
- private var inputContainerAttrs:TextLayoutFormat;
- private var outputContainerAttrs:ITextLayoutFormat;
- private var initSize:Point;
-
- public function ContainerAttributeTest(methodName:String, testID:String, testConfig:TestConfig, testCaseXML:XML=null)
- {
- super(methodName, testID, testConfig, testCaseXML);
- this.testContainer = (TestData.testContainer=="true");
- TestID = TestID + ":" + testContainer;
- inputContainerAttrs = new TextLayoutFormat();
-
- metaData.productArea = "Text Container";
- }
-
- public static function suiteFromXML(testListXML:XML, testConfig:TestConfig, ts:TestSuiteExtended):void
- {
- var testCaseClass:Class = ContainerAttributeTest;
- VellumTestCase.suiteFromXML(testCaseClass, testListXML, testConfig, ts);
- }
-
- public override function setUpTest():void
- {
- super.setUpTest();
- paddingRight = 0;
- paddingLeft = 0;
- SelManager.textFlow.paddingLeft = 0;
- SelManager.textFlow.paddingRight = 0;
- SelManager.selectAll();
- columnGap = 0;
- columnWidth = FormatValue.AUTO;
- columnCount = FormatValue.AUTO;
- }
-
- public override function tearDownTest():void
- {
- if(initSize){
- size = initSize;
- }
-
- super.tearDownTest();
- }
-
- private function set columnCount(count:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.columnCount = count;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.columnCount = count;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function get columnCount():Object
- {
- outputContainerAttrs = TestFrame.computedFormat;
- return outputContainerAttrs.columnCount;
- }
-
- private function set columnGap(gap:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.columnGap = gap;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.columnGap = gap;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function get columnGap():Object
- {
- outputContainerAttrs = TestFrame.computedFormat;
- return outputContainerAttrs.columnGap;
- }
-
- private function set columnWidth(width:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.columnWidth = width;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.columnWidth = width;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function get verticalAlign():Object
- {
- outputContainerAttrs = TestFrame.computedFormat;
- return outputContainerAttrs.verticalAlign;
- }
-
- private function set verticalAlign(align:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.verticalAlign = align as String;
- TestFrame.format = ca;
-
- // Added as result of bug #1875477
- TestFrame.textFlow.flowComposer.updateAllControllers();
- }
- else
- {
- inputContainerAttrs.verticalAlign = align as String;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function get columnWidth():Object
- {
- outputContainerAttrs = TestFrame.computedFormat;
- return outputContainerAttrs.columnWidth;
- }
-
- private function set paddingTop(padding:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.paddingTop = padding;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.paddingTop = padding;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function set paddingBottom(padding:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.paddingBottom = padding;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.paddingBottom = padding;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function set paddingRight(padding:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.paddingRight = padding;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.paddingRight = padding;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function set paddingLeft(padding:Object):void
- {
- if(testContainer)
- {
- var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- ca.paddingLeft = padding;
- TestFrame.format = ca;
- }
- else
- {
- inputContainerAttrs.paddingLeft = padding;
- SelManager.applyContainerFormat(inputContainerAttrs);
- }
- }
-
- private function get testFrameWidth():Number
- {
- return TestFrame.compositionWidth;
- }
- private function get testFrameHeight():Number
- {
- return TestFrame.compositionHeight;
- }
-
- private function get blockProgression():String
- {
- return TestFrame.rootElement.computedFormat.blockProgression;
- }
-
- private function set blockProgression(mode:String):void
- {
- TestFrame.rootElement.blockProgression = mode;
- TestFrame.textFlow.flowComposer.compose();
- }
-
- private function get size():Point
- {
- var width:Number = 0;
- var height:Number = 0;
-
- if(TestFrame.container is DisplayObject)
- {
- var frame:DisplayObject = TestFrame.container as DisplayObject;
- width = frame.width;
- height = frame.height;
- }
-
- return new Point(width,height);
- }
-
- private function set size(dimension:Point):void
- {
- var containerAttr:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
- containerAttr.columnCount = 1;
- containerAttr.paddingLeft = 0;
- containerAttr.paddingRight = 0;
- containerAttr.paddingTop = 0;
- containerAttr.paddingBottom = 0;
- TestFrame.format = containerAttr;
-
- if (TestFrame.container is Sprite)
- {
- TextFlow(testApp.getTextFlow()).flowComposer.getControllerAt(0).setCompositionSize(dimension.x,dimension.y);
- TextFlow(testApp.getTextFlow()).flowComposer.updateAllControllers();
- }
- else
- throw new Error("test does not know how to resize this container type"); // Above should be generalized?
- }
-
- /**
- * Set and get the firstBaselineOffset string values and test bound of numeric values.
- */
- public function checkfirstBaselineOffset():void // KJT
- {
-
- inputContainerAttrs.firstBaselineOffset = flashx.textLayout.formats.BaselineOffset.ASCENT;
- assertTrue("expected: ascent. cascaded: " + String(inputContainerAttrs.firstBaselineOffset),
- String(inputContainerAttrs.firstBaselineOffset) == flashx.textLayout.formats.BaselineOffset.ASCENT);
- inputContainerAttrs.firstBaselineOffset = flashx.textLayout.formats.BaselineOffset.LINE_HEIGHT;
- assertTrue("expected: leading. cascaded: " + String(inputContainerAttrs.firstBaselineOffset),
- String(inputContainerAttrs.firstBaselineOffset) == flashx.textLayout.formats.BaselineOffset.LINE_HEIGHT);
- for (var cter:uint = TextLayoutFormat.firstBaselineOffsetProperty.minValue; cter <= TextLayoutFormat.firstBaselineOffsetProperty.maxValue; cter+=33.33)
- {
- inputContainerAttrs.firstBaselineOffset = cter;
- assertTrue("expected: " + cter + ". cascaded: " + inputContainerAttrs.firstBaselineOffset,inputContainerAttrs.firstBaselineOffset == cter);
- }
-
- inputContainerAttrs.firstBaselineOffset = undefined;
- }
-
- /**
- * Set the gap, then change the width to see how the column count changes.
- */
- public function checkColumnCountOnWidthChangeTest():void
- {
- var width:Number = testFrameWidth;
- var cWidth:Number = width/10;
-
- columnGap = 0;
- columnWidth = cWidth;
-
- var initCount:int = TestFrame.columnState.columnCount;
-
- columnWidth = cWidth*2;
-
-
- var endCount:int = TestFrame.columnState.columnCount;
-
- assertTrue("expected " + Math.floor(initCount/2) + " but got " + endCount,
- Math.floor(initCount/2) == endCount);
- }
-
- /**
- * Set the width, then change the column gap to see how the column count changes.
- */
- public function checkColumnCountOnGapChangeTest():void
- {
- var width:Number = testFrameWidth;
- var cWidth:Number = width/10;
-
- /*paddingRight = 0;
- paddingLeft = 0;
- SelManager.textFlow.paddingLeft = 0;
- SelManager.textFlow.paddingRight = 0;*/
- columnGap = 0;
- columnWidth = cWidth;
-
- var initCount:Number = TestFrame.columnState.columnCount;
-
- columnGap = cWidth/10;
-
- var endCount:Number = TestFrame.columnState.columnCount;
-
- assertTrue("expected " + (initCount - 1) + " but got " + endCount,
- initCount - 1 == endCount);
- }
-
- /**
- * Set the column count, then change the column gap and see how the column width changes.
- */
- public function checkColumnWidthOnGapChangeTest():void
- {
- var width:Number = testFrameWidth;
- var cWidth:Number = width/10;
-
- /*paddingRight = 0;
- paddingLeft = 0;
- SelManager.textFlow.paddingLeft = 0;
- SelManager.textFlow.paddingRight = 0;*/
- columnGap = 0;
- columnCount = 10;
-
- var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var initWidth:Number = initColumn.width;
-
- columnGap = cWidth/9;
-
- var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var endWidth:Number = endColumn.width;
- assertTrue("expected " + (initWidth - (initWidth/10)) + " but got " + endWidth,
- ((initWidth - (initWidth/10)) - endWidth) < 0.01);
- }
-
- /**
- * Set the column gap, then change the column count to see how the column width changes.
- */
- public function checkColumnWidthOnCountChangeTest():void
- {
- var bp:String = TestFrame.textFlow.computedFormat.blockProgression;
- var width:Number = bp == BlockProgression.TB ? testFrameWidth : testFrameHeight;
- var cWidth:Number = width/10;
-
- /*paddingRight = 0;
- paddingLeft = 0;
- SelManager.textFlow.paddingLeft = 0;
- SelManager.textFlow.paddingRight = 0;*/
- columnGap = 0;
- columnCount = 10;
-
- var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var initWidth:Number = bp == BlockProgression.TB ? initColumn.width : initColumn.height;
-
- columnCount = 5;
-
- var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var endWidth:Number = bp == BlockProgression.TB ? endColumn.width : endColumn.height;
-
- assertTrue("expected " + Math.floor(endWidth/2) + " but got " + initWidth,
- Math.floor(endWidth/2) == Math.floor(initWidth));
- assertTrue("expected " + Math.floor(initWidth) + " but got " + Math.floor(cWidth),
- Math.floor(initWidth) == Math.floor(cWidth));
- }
-
- /**
- * Set the column count, then change the column width to see how the column gap changes.
- */
- public function checkColumnGapOnWidthChangeTest():void
- {
- var width:Number = testFrameWidth;
-
- columnCount = 2;
- columnWidth = width/3;
-
- var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var initGap:Number = width - initColumn.width * 2;
-
- assertTrue("expected init width to equal " + width/3 + ", but got " + columnWidth,
- columnWidth == width/3);
- assertTrue("expected init count to equal " + 2 + ", but got " + columnCount,
- columnCount == 2);
- assertTrue("expected init gap to equal " + width/3 + ", but got " + initGap,
- Math.floor(initGap) == Math.floor(width/3));
-
- columnWidth = width/2;
-
- var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var endGap:Number = width - endColumn.width * 2;
-
- assertTrue("expected " + Math.floor(width/2) + " but got " + Math.floor(endGap),
- Math.floor(endGap) == 0);
- }
-
- /**
- * Set the column width, then change the column count to see how the column gap changes.
- * NOTE: Currently commented out due to bug 1657149.
- */
- public function checkColumnGapOnCountChangeTest():void
- {
- var width:Number = testFrameWidth;
-
- columnCount = 10;
- var cWidth:Number = width/10;
- //to get gap by reducing column width
- columnWidth = cWidth - cWidth/9;
-
- var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var initGap:Number = cWidth - initColumn.width;
-
- //increase column count but no change to column count, gap should reduce
- columnCount = 11;
- cWidth = width/11;
-
- var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var endGap:Number = cWidth - endColumn.width;
- assertTrue("Gap should reduce when column count increased and column width no change. ",
- initGap > endGap);
- }
-
- /**
- * Slowly increase the padding at the top until it pushes a line off the screen
- * then verify that the last line was the line pushed off the screen.
- */
- public function topPaddingSqueezeTest():void
- {
- var length:int = SelManager.textFlow.flowComposer.numLines;
- var last:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(length-1);
- var size:int = last.textLength;
- var count:int = TestFrame.textLength;
-
- for(var i:int = 0; i < 1000; i++){
- paddingTop = i;
- TestFrame.textFlow.flowComposer.compose();
-
- if(TestFrame.textLength == count - size){
- return;
- }
- }
- assertTrue ("Expected " + size + "characters to be pushed off (the last line)" +
- " but actually had " + (TestFrame.textLength - count) + "pushed off",
- TestFrame.textLength != count - size);
- }
-
- /**
- * Slowly increase the padding at the bottom until it eats the last line
- * then verify that the last line was the line eaten.
- */
- public function bottomPaddingSqueezeTest():void
- {
- //FLEX: Why no lines?
- var length:int = SelManager.textFlow.flowComposer.numLines;
- var last:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(length-1);
- var size:int = last.textLength;
- var count:int = TestFrame.textLength;
-
- for(var i:int = 0; i < 1000; i++){
- paddingBottom = i;
- TestFrame.textFlow.flowComposer.compose();
-
- if(TestFrame.textLength == count - size){
- return;
- }
- }
- assertTrue ("Expected " + size + "characters to be pushed off (the last line)" +
- " but actually had " + (TestFrame.textLength - count) + "pushed off",
- TestFrame.textLength != count - size);
- }
-
- /**
- * Increase the left padding until you force the flow to create a new line.
- */
- public function leftPaddingSqueezeTest():void
- {
- var length:int = SelManager.textFlow.flowComposer.numLines;
-
- for(var i:int = 0; i < 1000; i++){
- paddingLeft = i;
- TestFrame.textFlow.flowComposer.compose();
-
- if(SelManager.textFlow.flowComposer.numLines > length){
- return;
- }
- }
- assertTrue ("Increasing the left padding to 1000 did not add lines",
- SelManager.textFlow.flowComposer.numLines <= length);
- }
-
- /**
- * Increase the right padding until you force the flow to create a new line.
- */
- public function rightPaddingSqueezeTest():void
- {
- var length:int = SelManager.textFlow.flowComposer.numLines;
-
- for(var i:int = 0; i < 1000; i++){
- paddingRight = i;
- TestFrame.textFlow.flowComposer.compose();
-
- if(SelManager.textFlow.flowComposer.numLines > length){
- return;
- }
- }
- assertTrue ("Increasing the right padding to 1000 did not add lines",
- SelManager.textFlow.flowComposer.numLines <= length);
- }
-
- public function writingModeBreakTest():void
- {
- // clear all padding on the textFlow for this test
- SelManager.textFlow.paddingTop = 0;
- SelManager.textFlow.paddingLeft = 0;
- SelManager.textFlow.paddingRight = 0;
- SelManager.textFlow.paddingBottom = 0;
-
- initSize = size;
- size = new Point(200,200);
-
- var initCounts:Array = new Array(SelManager.textFlow.flowComposer.numLines);
-
- var initMode:String = blockProgression;
- var nextMode:String = null;
-
- if(initMode == flashx.textLayout.formats.BlockProgression.TB){
- nextMode = flashx.textLayout.formats.BlockProgression.RL;
- }else{
- nextMode = flashx.textLayout.formats.BlockProgression.TB;
- }
-
-
- var i:int = 0;
- for(; i < SelManager.textFlow.flowComposer.numLines; i++){
- var line:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(i);
- if (line.isDamaged())
- break;
- initCounts[i] = line.textLength;
- }
- initCounts.length = i;
-
- blockProgression = nextMode;
- SelManager.flushPendingOperations();
-
- var endCounts:Array = new Array(SelManager.textFlow.flowComposer.numLines);
-
- i = 0;
- for(; i < SelManager.textFlow.flowComposer.numLines; i++){
- line = SelManager.textFlow.flowComposer.getLineAt(i);
- if (line.isDamaged())
- break;
- endCounts[i] = line.textLength;
- }
- endCounts.length = i;
-
- var one:int = initCounts.length;
- var two:int = endCounts.length;
-
- assertTrue("number of lines are not the same after changing writing direction in a square frame",
- initCounts.length == endCounts.length);
- for(i = 0; i < initCounts.length; i++){
- assertTrue("line length of line " + i + " changed after changing writing direction in a square frame",
- initCounts[i] == endCounts[i]);
- }
- }
-
- /**
- * This test exists solely for snapshotting.
- */
- public function checkVerticalAlignTopTest():void
- {
- var division:int =
- TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL ?
- TestFrame.compositionWidth / 3 :
- TestFrame.compositionHeight /3;
-
- SelManager.selectAll();
- SelManager.deleteNextCharacter();
- SelManager.flushPendingOperations();
-
- SelManager.insertText("ABC");
- SelManager.selectRange(2,2);
- SelManager.splitParagraph();
- SelManager.selectRange(1,1);
- SelManager.splitParagraph();
- SelManager.flushPendingOperations();
-
- verticalAlign = VerticalAlign.TOP;
- SelManager.flushPendingOperations();
-
- if( TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL
- ){
- assertTrue(
- "Vertical Alignment = TOP did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).x > -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(1).x < 0
- );
- assertTrue(
- "Vertical Alignment = TOP did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x > -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x < 0
- );
- assertTrue(
- "Vertical Alignment = TOP did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).x > -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(5).x < 0
- );
- }else{
- assertTrue(
- "Vertical Alignment = TOP did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).y < division
- );
- assertTrue(
- "Vertical Alignment = TOP did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).y < division
- );
- assertTrue(
- "Vertical Alignment = TOP did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).y < division
- );
- }
- }
-
- /**
- * This test exists solely for snapshotting.
- */
- public function checkVerticalAlignBottomTest():void
- {
- var division:int =
- TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL ?
- TestFrame.compositionWidth / 3 :
- TestFrame.compositionHeight /3;
-
- SelManager.selectAll();
- SelManager.deleteNextCharacter();
- SelManager.flushPendingOperations();
-
- SelManager.insertText("ABC");
- SelManager.selectRange(2,2);
- SelManager.splitParagraph();
- SelManager.selectRange(1,1);
- SelManager.splitParagraph();
- SelManager.flushPendingOperations();
-
- verticalAlign = VerticalAlign.BOTTOM;
- SelManager.flushPendingOperations();
-
- var t1:int = SelManager.textFlow.flowComposer.findLineAtPosition(1).x;
- var t2:int = SelManager.textFlow.flowComposer.findLineAtPosition(1).y;
-
- if( TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL
- ){
- assertTrue(
- "Vertical Alignment = BOTTOM did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).x < -2*division
- );
- assertTrue(
- "Vertical Alignment = BOTTOM did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x < -2*division
- );
- assertTrue(
- "Vertical Alignment = BOTTOM did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).x < -2*division
- );
- }else{
- assertTrue(
- "Vertical Alignment = BOTTOM did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).y > 2*division
- );
- assertTrue(
- "Vertical Alignment = BOTTOM did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).y > 2*division
- );
- assertTrue(
- "Vertical Alignment = BOTTOM did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).y > 2*division
- );
- }
- }
-
- /**
- * This test exists solely for snapshotting.
- */
- public function checkVerticalAlignMiddleTest():void
- {
- var division:int =
- TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL ?
- TestFrame.compositionWidth / 3 :
- TestFrame.compositionHeight /3;
-
-
- SelManager.selectAll();
- SelManager.deleteNextCharacter();
- SelManager.flushPendingOperations();
-
- SelManager.insertText("ABC");
- SelManager.selectRange(2,2);
- SelManager.splitParagraph();
- SelManager.selectRange(1,1);
- SelManager.splitParagraph();
- SelManager.flushPendingOperations();
-
- verticalAlign = VerticalAlign.MIDDLE;
- SelManager.flushPendingOperations();
-
- if( TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL
- ){
- assertTrue(
- "Vertical Alignment = MIDDLE did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).x < -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(1).x > -2*division
- );
- assertTrue(
- "Vertical Alignment = MIDDLE did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x < -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x > -2*division
- );
- assertTrue(
- "Vertical Alignment = MIDDLE did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).x < -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(5).x > -2*division
- );
- }else{
- assertTrue(
- "Vertical Alignment = MIDDLE did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).y > division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(1).y < 2*division
- );
- assertTrue(
- "Vertical Alignment = MIDDLE did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).y > division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(3).y < 2*division
- );
- assertTrue(
- "Vertical Alignment = MIDDLE did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).y > division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(5).y < 2*division
- );
- }
- }
-
- /**
- * This test exists solely for snapshotting.
- */
- public function checkVerticalAlignJustifyTest():void
- {
- var division:int =
- TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL ?
- TestFrame.compositionWidth / 3 :
- TestFrame.compositionHeight /3;
-
- SelManager.selectAll();
- SelManager.deleteNextCharacter();
- SelManager.flushPendingOperations();
-
- SelManager.insertText("ABC");
- SelManager.selectRange(2,2);
- SelManager.splitParagraph();
- SelManager.selectRange(1,1);
- SelManager.splitParagraph();
- SelManager.flushPendingOperations();
-
- verticalAlign = VerticalAlign.JUSTIFY;
- SelManager.flushPendingOperations();
-
- if( TestFrame.textFlow.computedFormat.blockProgression ==
- BlockProgression.RL
- ){
- assertTrue(
- "Vertical Alignment = JUSTIFY did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).x > -1*division
- );
- assertTrue(
- "Vertical Alignment = JUSTIFY did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x < -1*division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(3).x > -2*division
- );
- assertTrue(
- "Vertical Alignment = JUSTIFY did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).x < -2*division
- );
- }else{
- assertTrue(
- "Vertical Alignment = JUSTIFY did not correctly place the first line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(1).y < division
- );
- assertTrue(
- "Vertical Alignment = JUSTIFY did not correctly place the second line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(3).y > division &&
- SelManager.textFlow.flowComposer.findLineAtPosition(3).y < 2*division
- );
- assertTrue(
- "Vertical Alignment = JUSTIFY did not correctly place the third line.",
- SelManager.textFlow.flowComposer.findLineAtPosition(5).y > 2*division
- );
- }
- }
-
- // non-empty flow, check if attribute changed after insertion point at position 0
- public function insertPos0CheckColumnWidthTest():void
- {
- var bp:String = TestFrame.textFlow.computedFormat.blockProgression;
- var width:Number = bp == BlockProgression.TB ? testFrameWidth : testFrameHeight;
- var cWidth:Number = width/10;
-
- columnGap = 0;
- columnCount = 10;
-
- var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var initWidth:Number = bp == BlockProgression.TB ? initColumn.width : initColumn.height;
-
- SelManager.selectRange(0,0);
- SelManager.insertText("BBB");
- SelManager.updateAllControllers();
-
- var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var endWidth:Number = bp == BlockProgression.TB ? endColumn.width : endColumn.height;
-
- assertTrue("Container attribute got changed, expected column width " + initWidth + " but got " + cWidth,
- initWidth == endWidth);
- }
-
- //check if container attribute change after insertion in an empty flow
- public function checkColumnCountEmptyFlowInsertTest():void
- {
- var width:Number = testFrameWidth;
- var cWidth:Number = width/10;
-
- columnGap = 0;
- columnWidth = cWidth;
-
- var initCount:Number = TestFrame.columnState.columnCount;
-
- //insert text in a empty flow
- SelManager.selectAll();
- SelManager.deleteText();
- SelManager.insertText("AAAAAAAAAAAAAA");
- SelManager.updateAllControllers();
-
- var endCount:Number = TestFrame.columnState.columnCount;
-
- assertTrue("container attribute has been changed, expected colume count is" + initCount + " but got " + endCount,
- initCount == endCount );
- }
-
- // non-empty flow, check if attribute changed after insertion point at end position
- public function insertAtEndOfFlowCheckColumnGapTest():void
- {
- var bp:String = TestFrame.textFlow.computedFormat.blockProgression;
- var width:Number = testFrameWidth;
-
- columnCount = 2;
- columnWidth = width/3;
-
- var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var initGap:Number = bp == BlockProgression.TB ? (width - initColumn.width * 2) : (width - initColumn.height * 2);
-
- var len:int = SelManager.textFlow.textLength;
- SelManager.selectRange(len,len);
- SelManager.insertText("BBB");
- SelManager.updateAllControllers();
-
- var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
- var endGap:Number = bp == BlockProgression.TB ? (width - endColumn.width * 2) : (width - endColumn.height * 2);
-
- assertTrue("Container attribute got changed, expected column gap " + initGap + " but got " + endGap,
- initGap == endGap);
- }
-
- public function columnBreakTest():void
- {
- var TestCanvas:Canvas = myEmptyChilds();
-
- var FORMAT1_BB:int = 1;
- var FORMAT1_BA:int = 2;
- var FORMAT2_BB:int = 4;
- var FORMAT2_BA:int = 8;
- var FORMAT3_BB:int = 16;
- var FORMAT3_BA:int = 32;
-
- var tlFmt1:TextLayoutFormat = new TextLayoutFormat();
- var tlFmt2:TextLayoutFormat = new TextLayoutFormat();
- var tlFmt3:TextLayoutFormat = new TextLayoutFormat();
-
- var columnWidth:int = 600;
- for ( var i:int = 0; i < 64; i ++ )
- {
- tlFmt1.columnBreakBefore = (FORMAT1_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt1.columnBreakAfter = (FORMAT1_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- tlFmt2.columnBreakBefore = (FORMAT2_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt2.columnBreakAfter = (FORMAT2_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- tlFmt3.columnBreakBefore = (FORMAT3_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt3.columnBreakAfter = (FORMAT3_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- var cb:ColumnBreak = new ColumnBreak(columnWidth, tlFmt1, tlFmt2, tlFmt3);
- TestCanvas.rawChildren.addChild(cb);
-
- // Verify test results
- var textFlow:TextFlow = cb.textFlow;
- var columnWidthModify:int = columnWidth / 3;
- trace( textFlow.flowComposer.numLines);
- for(var j:int = 0; j < textFlow.flowComposer.numLines ;j ++)
- {
- var textFlowLine:TextFlowLine = textFlow.flowComposer.getLineAt(j);
- var textLine:TextLine = textFlowLine.getTextLine();
- var text:String = textLine.textBlock.content.text;
- var textLineBounds:Rectangle = textFlowLine.getTextLine().getBounds(cb);
- trace(textLineBounds.x, textLineBounds.y, text);
-
- // Assert for STR1's position
- if ( j == 0 )
- assertTrue( isBetween( textLineBounds.x, 0, columnWidthModify ) );
-
- // Assert for STR2's position
- var isStr2InColumn1:Boolean = true;
- if ( tlFmt1.columnBreakAfter == BreakStyle.ALWAYS || tlFmt2.columnBreakBefore == BreakStyle.ALWAYS )
- isStr2InColumn1 = false;
-
- if ( text.search( "STR2" ) >= 0 )
- {
- if ( isStr2InColumn1 )
- assertTrue( isBetween( textLineBounds.x, 0, columnWidthModify ) );
- else
- assertTrue( isBetween( textLineBounds.x, columnWidthModify, columnWidthModify * 2 ) );
- }
-
- // Assert for STR3's position
- if ( text.search( "STR3" ) >= 0 )
- {
- if ( isStr2InColumn1 )
- {
- if ( tlFmt2.columnBreakAfter == BreakStyle.ALWAYS || tlFmt3.columnBreakBefore == BreakStyle.ALWAYS )
- assertTrue( isBetween( textLineBounds.x, columnWidthModify, columnWidthModify * 2 ) );
- else
- assertTrue( isBetween( textLineBounds.x, 0, columnWidthModify ) );
- }
- else
- {
- if ( tlFmt2.columnBreakAfter == BreakStyle.ALWAYS || tlFmt3.columnBreakBefore == BreakStyle.ALWAYS )
- assertTrue( isBetween( textLineBounds.x, columnWidthModify * 2, columnWidthModify * 3 ) );
- else
- assertTrue( isBetween( textLineBounds.x, columnWidthModify, columnWidthModify * 2 ) );
- }
- }
-
- }
- }
- }
-
- private function isBetween(item:int, x1:int, x2:int):Boolean
- {
- if ( item >= x1 && item <= x2 )
- return true;
- return false;
- }
-
- public function containerBreakTest():void
- {
- var TestCanvas:Canvas = myEmptyChilds();
-
- var FORMAT1_BB:int = 1;
- var FORMAT1_BA:int = 2;
- var FORMAT2_BB:int = 4;
- var FORMAT2_BA:int = 8;
- var FORMAT3_BB:int = 16;
- var FORMAT3_BA:int = 32;
-
- var tlFmt1:TextLayoutFormat = new TextLayoutFormat();
- var tlFmt2:TextLayoutFormat = new TextLayoutFormat();
- var tlFmt3:TextLayoutFormat = new TextLayoutFormat();
-
- var containerWidth:int = 200;
- for ( var i:int = 0; i < 64; i ++ )
- {
- tlFmt1.containerBreakBefore = (FORMAT1_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt1.containerBreakAfter = (FORMAT1_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- tlFmt2.containerBreakBefore = (FORMAT2_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt2.containerBreakAfter = (FORMAT2_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- tlFmt3.containerBreakBefore = (FORMAT3_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt3.containerBreakAfter = (FORMAT3_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- var cb:ContainerBreak = new ContainerBreak(containerWidth, tlFmt1, tlFmt2, tlFmt3);
- TestCanvas.rawChildren.addChild(cb);
-
- // Verify test results
- var textFlow:TextFlow = cb.textFlow;
- trace( textFlow.flowComposer.numLines);
- for(var j:int = 0; j < textFlow.flowComposer.numLines ;j ++)
- {
- var textFlowLine:TextFlowLine = textFlow.flowComposer.getLineAt(j);
- var textLine:TextLine = textFlowLine.getTextLine();
- var text:String = textLine.textBlock.content.text;
- var textLineBounds:Rectangle = textFlowLine.getTextLine().getBounds(cb);
- trace(textLineBounds.x, textLineBounds.y, text);
-
- // Assert for STR1's position
- if ( j == 0 )
- assertTrue( isBetween( textLineBounds.x, 0, containerWidth ) );
-
- // Assert for STR2's position
- var isStr2InColumn1:Boolean = true;
- if ( tlFmt1.containerBreakAfter == BreakStyle.ALWAYS || tlFmt2.containerBreakBefore == BreakStyle.ALWAYS )
- isStr2InColumn1 = false;
-
- if ( text.search( "STR2" ) >= 0 )
- {
- if ( isStr2InColumn1 )
- assertTrue( isBetween( textLineBounds.x, 0, containerWidth ) );
- else
- assertTrue( isBetween( textLineBounds.x, containerWidth, containerWidth * 2 ) );
- }
-
- // Assert for STR3's position
- if ( text.search( "STR3" ) >= 0 )
- {
- if ( isStr2InColumn1 )
- {
- if ( tlFmt2.containerBreakAfter == BreakStyle.ALWAYS || tlFmt3.containerBreakBefore == BreakStyle.ALWAYS )
- assertTrue( isBetween( textLineBounds.x, containerWidth, containerWidth * 2 ) );
- else
- assertTrue( isBetween( textLineBounds.x, 0, containerWidth ) );
- }
- else
- {
- if ( tlFmt2.containerBreakAfter == BreakStyle.ALWAYS || tlFmt3.containerBreakBefore == BreakStyle.ALWAYS )
- assertTrue( isBetween( textLineBounds.x, containerWidth * 2, containerWidth * 3 ) );
- else
- assertTrue( isBetween( textLineBounds.x, containerWidth, containerWidth * 2 ) );
- }
- }
-
- }
- }
- }
-
- public function columnContainerBreakTest0():void
- {
- columnContainerBreakTestX(0);
- }
-
- public function columnContainerBreakTest1000():void
- {
- columnContainerBreakTestX(1000);
- }
-
- public function columnContainerBreakTest2000():void
- {
- columnContainerBreakTestX(2000);
- }
-
- public function columnContainerBreakTest3000():void
- {
- columnContainerBreakTestX(3000);
- }
-
- public function columnContainerBreakTest4000():void
- {
- columnContainerBreakTestX(4000);
- }
-
- public function columnContainerBreakTestX(startIdx:int):void
- {
- var TestCanvas:Canvas = myEmptyChilds();
-
- var tlFmt1:TextLayoutFormat = new TextLayoutFormat();
- var tlFmt2:TextLayoutFormat = new TextLayoutFormat();
- var tlFmt3:TextLayoutFormat = new TextLayoutFormat();
-
- var FORMAT1_COL_BB:int = 1;
- var FORMAT1_COL_BA:int = 2;
- var FORMAT1_CON_BB:int = 4;
- var FORMAT1_CON_BA:int = 8;
- var FORMAT2_COL_BB:int = 16;
- var FORMAT2_COL_BA:int = 32;
- var FORMAT2_CON_BB:int = 64;
- var FORMAT2_CON_BA:int = 128;
- var FORMAT3_COL_BB:int = 256;
- var FORMAT3_COL_BA:int = 512;
- var FORMAT3_CON_BB:int = 1024;
- var FORMAT3_CON_BA:int = 2048;
-
- var containerWidth:int = 300;
- for ( var i:int = startIdx; i < startIdx + 1000; i ++ )
- {
- if ( i >= 4096 )
- break;
- TestCanvas = myEmptyChilds();
- tlFmt1.columnBreakBefore = (FORMAT1_COL_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt1.columnBreakAfter = (FORMAT1_COL_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt1.containerBreakBefore = (FORMAT1_CON_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt1.containerBreakAfter = (FORMAT1_CON_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- tlFmt2.columnBreakBefore = (FORMAT2_COL_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt2.columnBreakAfter = (FORMAT2_COL_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt2.containerBreakBefore = (FORMAT2_CON_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt2.containerBreakAfter = (FORMAT2_CON_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- tlFmt3.columnBreakBefore = (FORMAT3_COL_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt3.columnBreakAfter = (FORMAT3_COL_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt3.containerBreakBefore = (FORMAT3_CON_BB & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
- tlFmt3.containerBreakAfter = (FORMAT3_CON_BA & i) ? BreakStyle.ALWAYS : BreakStyle.AUTO;
-
- var cb:ColumnContainerBreak = new ColumnContainerBreak(containerWidth, tlFmt1, tlFmt2, tlFmt3);
- TestCanvas.rawChildren.addChild(cb);
-
- // Verify test results
- var textFlow:TextFlow = cb.textFlow;
- trace( textFlow.flowComposer.numLines);
- var bStr2Checked:Boolean = false;
- var bStr3Checked:Boolean = false;
- for(var j:int = 0; j < textFlow.flowComposer.numLines ;j ++)
- {
- var textFlowLine:TextFlowLine = textFlow.flowComposer.getLineAt(j);
- var textLine:TextLine = textFlowLine.getTextLine();
- var text:String = textLine.textBlock.content.text;
- var textLineBounds:Rectangle = textFlowLine.getTextLine().getBounds(cb);
- trace(textLineBounds.x, textLineBounds.y, text);
-
- // Assert for STR1's position
- if ( j == 0 )
- assertTrue( isBetween( textLineBounds.x, 0, containerWidth ) );
-
- // Assert for STR2's position,
- // str2Pos = 1 means str2 in container1, column1
- // str2Pos = 2 means str2 in container1, column2
- // str2Pos = 3 means str2 in container2, column1
- var str2Pos:int = 1;
- if ( tlFmt1.containerBreakAfter == BreakStyle.ALWAYS || tlFmt2.containerBreakBefore == BreakStyle.ALWAYS )
- str2Pos = 3;
- else if ( tlFmt1.columnBreakAfter == BreakStyle.ALWAYS || tlFmt2.columnBreakBefore == BreakStyle.ALWAYS )
- str2Pos = 2;
-
- var columnWidth:int = containerWidth / 3;
- if ( ! bStr2Checked && text.search( "STR2" ) >= 0 )
- {
- bStr2Checked = true;
- switch ( str2Pos )
- {
- case 1:
- assertTrue( isBetween( textLineBounds.x, 0, columnWidth ) );
- break;
- case 2:
- assertTrue( isBetween( textLineBounds.x, columnWidth, columnWidth * 2 ) );
- break;
- case 3:
- assertTrue( isBetween( textLineBounds.x, containerWidth, containerWidth + columnWidth ) );
- break;
- default: break;
- }
- }
-
- // Assert for STR3's position
- if ( ! bStr3Checked && text.search( "STR3" ) >= 0 )
- {
- bStr3Checked = true;
- var isStr3ColumnBreak :Boolean = false;
- var isStr3ContainerBreak :Boolean = false;
- if ( tlFmt2.columnBreakAfter == BreakStyle.ALWAYS || tlFmt3.columnBreakBefore == BreakStyle.ALWAYS )
- isStr3ColumnBreak = true;
-
- if ( tlFmt2.containerBreakAfter == BreakStyle.ALWAYS || tlFmt3.containerBreakBefore == BreakStyle.ALWAYS )
- isStr3ContainerBreak = true;
-
- // str3Pos = 1 means str3 in container1, column1
- // str3Pos = 2 means str3 in container1, column2
- // str3Pos = 3 means str3 in container1, column3
- // str3Pos = 4 means str3 in container2, column1
- // str3Pos = 5 means str3 in container2, column2
- // str3Pos = 6 means str3 in container3, column1
- var str3Pos:int = 0;
- switch ( str2Pos )
- {
- case 1:
- if ( ! isStr3ContainerBreak && ! isStr3ColumnBreak )
- str3Pos = 1;
- if ( ! isStr3ContainerBreak && isStr3ColumnBreak )
- str3Pos = 2;
- if ( isStr3ContainerBreak )
- str3Pos = 4;
- break;
- case 2:
- if ( ! isStr3ContainerBreak && ! isStr3ColumnBreak )
- str3Pos = 2;
- if ( ! isStr3ContainerBreak && isStr3ColumnBreak )
- str3Pos = 3;
- if ( isStr3ContainerBreak )
- str3Pos = 4;
- break;
- case 3:
- if ( ! isStr3ContainerBreak && ! isStr3ColumnBreak )
- str3Pos = 4;
- if ( ! isStr3ContainerBreak && isStr3ColumnBreak )
- str3Pos = 5;
- if ( isStr3ContainerBreak )
- str3Pos = 6;
- break;
- default : break;
- }
-
- switch ( str3Pos )
- {
- case 1:
- assertTrue( isBetween( textLineBounds.x, 0, columnWidth ) );
- break;
- case 2:
- assertTrue( isBetween( textLineBounds.x, columnWidth, columnWidth * 2 ) );
- break;
- case 3:
- assertTrue( isBetween( textLineBounds.x, columnWidth * 2, columnWidth * 3 ) );
- break;
- case 4:
- assertTrue( isBetween( textLineBounds.x, containerWidth, containerWidth + columnWidth ) );
- break;
- case 5:
- assertTrue( isBetween( textLineBounds.x, containerWidth + columnWidth, containerWidth + columnWidth * 2 ) );
- break;
- case 6:
- assertTrue( isBetween( textLineBounds.x, containerWidth * 2, containerWidth * 2 + columnWidth ) );
- break;
- default : break;
- }
-
- }
- }
- }
- }
-
- public function myEmptyChilds():Canvas
- {
- var TestCanvas:Canvas = null;
- TestDisplayObject = testApp.getDisplayObject();
- if (TestDisplayObject)
- {
- TestCanvas = Canvas(TestDisplayObject);
- TestCanvas.removeAllChildren();
- var iCnt:int = TestCanvas.numChildren;
- for ( var a:int = 0; a < iCnt; a ++ )
- {
- TestCanvas.rawChildren.removeChildAt(0);
- }
- }
-
- return TestCanvas;
- }
-
- // mjzhang : Watson Bug#2841799 When lineBreak="toFit" the contentBounds width does
- // not include the trailing whitespace
- public function ContentBoundsWithWhitespaces():void
- {
- // This is the switch for calculate whitespace or not regardless lineBreak="toFix".
- GlobalSettings.alwaysCalculateWhitespaceBounds = true;
-
- SelManager.selectAll();
- SelManager.deleteText();
- SelManager.insertText("AAAAAAAAAAAAAA");
- SelManager.updateAllControllers();
-
- var textFlowLine:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(0);
- var textLength:Number = textFlowLine.lineExtent;
- var contentBounds:Number = SelManager.textFlow.flowComposer.getControllerAt(0).getContentBounds().width;
-
- SelManager.selectAll();
- SelManager.deleteText();
- SelManager.insertText("AAAAAAAAAAAAAA ");
- SelManager.updateAllControllers();
-
- var textFlowLine1:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(0);
- var textWithSpace:Number = textFlowLine1.lineExtent;
- var contentBoundsWithSpace:Number = SelManager.textFlow.flowComposer.getControllerAt(0).getContentBounds().width;
- // mjzhang : if the blockProgression is RL, we needs to check the height, not the width.
- if ( SelManager.textFlow.blockProgression == BlockProgression.RL )
- {
- textWithSpace = textFlowLine1.lineExtent;
- contentBoundsWithSpace = SelManager.textFlow.flowComposer.getControllerAt(0).getContentBounds().height;
- }
-
- GlobalSettings.alwaysCalculateWhitespaceBounds = false;
-
- assertTrue("With spaces text length should larger than no spaces text length.",
- textWithSpace > textLength );
- assertTrue("With spaces text length should larger than no spaces text length.",
- contentBoundsWithSpace > contentBounds );
- }
-
- // mjzhang : Bug#2835316 The TextLine is INVALID and cannot be used to access the current state of the TextBlock
- public function TextSelectAllTest():void
- {
- var textFlow:TextFlow = SelManager.textFlow;
- var markup:String = '<TextFlow whiteSpaceCollapse="preserve" version="3.0.0" xmlns="http://ns.adobe.com/textLayout/2008"><p><span>hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh</span></p></TextFlow>';
- var textFlowNew:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT);
-
- var textLayoutFormat:TextLayoutFormat = new TextLayoutFormat();
- textLayoutFormat.fontSize = 12;
- textLayoutFormat.textIndent = 0;
- textLayoutFormat.paragraphSpaceAfter = 5;
- textLayoutFormat.fontFamily="Arial" ;
-
- var paraElement:ParagraphElement = textFlowNew.getChildAt(0) as ParagraphElement;
- var paraElementCopy:ParagraphElement = paraElement.deepCopy(0, paraElement.textLength) as ParagraphElement;
- paraElementCopy.format = textLayoutFormat;
- textFlow.replaceChildren(0, textFlow.numChildren, paraElementCopy);
- textFlow.whiteSpaceCollapse = "preserve";
- textFlow.flowComposer.updateAllControllers();
-
- var cc:ContainerController = SelManager.textFlow.flowComposer.getControllerAt(0);
- cc.setCompositionSize(229, 81);
- cc.verticalScrollPolicy = ScrollPolicy.ON;
- cc.horizontalScrollPolicy = ScrollPolicy.ON;
- SelManager.selectRange(40, 40);
-
- var mouseEvent:MouseEvent = new MouseEvent(MouseEvent.DOUBLE_CLICK, true, false, 80, 80);
- TestFrame.container["dispatchEvent"](mouseEvent);
- SelManager.flushPendingOperations();
- }
-
- // mjzhang : Bug#2898924 TLF reports incorrect content height after composition when floats are used with padding
- public function ContentBoundsWithPaddingTest():void
- {
- // Get image content height which has padding top set
- var textFlow:TextFlow = SelManager.textFlow;
- var markup:String = '<TextFlow fontFamily="Arial" fontSize="16" paddingBottom="2" paddingLeft="2" paddingRight="2" paddingTop="2" whiteSpaceCollapse="preserve" version="2.0.0" xmlns="http://ns.adobe.com/textLayout/2008"><p><img paddingTop="-100" paddingLeft="50" height="auto" width="auto" source="http://www.lacitelibreria.info/ambientazione-cite/cite-libreria-logo.png" float="left"/><span fontFamily="Georgia" fontSize="24">La Cité Libreria Cafè</span></p></TextFlow>';
- var textFlowNew:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT);
-
- textFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE, statusChangeHandler );
-
- var paraElement:ParagraphElement = textFlowNew.getChildAt(0) as ParagraphElement;
- var paraElementCopy:ParagraphElement = paraElement.deepCopy(0, paraElement.textLength) as ParagraphElement;
- textFlow.replaceChildren(0, textFlow.numChildren, paraElementCopy);
- textFlow.flowComposer.updateAllControllers();
- SelManager.updateAllControllers();
- }
-
- // mjzhang : Track the completion of loading inlines
- private function statusChangeHandler(obj:Event):void
- {
- var event:StatusChangeEvent = StatusChangeEvent(obj);
- var textFlow:TextFlow = event.element.getTextFlow();
- switch (event.status)
- {
- case InlineGraphicElementStatus.LOADING:
- break;
- case InlineGraphicElementStatus.SIZE_PENDING:
- textFlow.removeEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,statusChangeHandler);
- var contentHeight:int = textFlow.flowComposer.getControllerAt(0).getContentBounds().height;
- var contentWidth:int = textFlow.flowComposer.getControllerAt(0).getContentBounds().width;
- assertTrue("Content height should calculate padding info of inlinegraphic, should be 44", contentHeight == 44);
- assertTrue("Content width should calculate padding info of inlinegraphic, should be 670", contentWidth == 669);
- break;
- case InlineGraphicElementStatus.READY:
- break;
- default:
- break;
- }
- }
-
- // mjzhang : Bug#2758977 <s:p color="red"/> throws out of range error - can you do color lookup like Flex SDK?
- // Tests all the color options, also test Upper case and bad case(XXX)
- public function colorPropetyTest():void
- {
- var textFlow:TextFlow = SelManager.textFlow;
- var markup:String = '<TextFlow xmlns="http://ns.adobe.com/textLayout/2008">'
- + '<p color="black"><span>black</span></p>'
- + '<p color="blue"><span>blue</span></p>'
- + '<p color="green"><span>green</span></p>'
- + '<p color="gray"><span>gray</span></p>'
- + '<p color="silver"><span>silver</span></p>'
- + '<p color="lime"><span>lime</span></p>'
- + '<p color="olive"><span>olive</span></p>'
- + '<p color="white"><span>white</span></p>'
- + '<p color="yellow"><span>yellow</span></p>'
- + '<p color="maroon"><span>maroon</span></p>'
- + '<p color="navy"><span>navy</span></p>'
- + '<p color="red"><span>Red</span></p>'
- + '<p color="purple"><span>purple</span></p>'
- + '<p color="teal"><span>teal</span></p>'
- + '<p color="fuchsia"><span>fuchsia</span></p>'
- + '<p color="aqua"><span>aqua</span></p>'
- + '<p color="magenta"><span>magenta</span></p>'
- + '<p color="cyan"><span>cyan</span></p>'
- + '<p color="CYAN"><span>CYAN</span></p>'
- + '<p color="XXX"><span>XXX</span></p>'
- + '</TextFlow>';
- var textFlowNew:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT);
-
- SelManager.selectAll();
- SelManager.deleteText();
- for ( var i:int = 0; i < 20; i ++ )
- {
- var paraElement:ParagraphElement = textFlowNew.getChildAt(i) as ParagraphElement;
- var paraElementCopy:ParagraphElement = paraElement.deepCopy(0, paraElement.textLength) as ParagraphElement;
- textFlow.replaceChildren(i, i, paraElementCopy);
- }
- SelManager.updateAllControllers();
-
- var paraBlack :ParagraphElement = textFlow.getChildAt(0) as ParagraphElement;
- var paraBlue :ParagraphElement = textFlow.getChildAt(1) as ParagraphElement;
- var paraGreen :ParagraphElement = textFlow.getChildAt(2) as ParagraphElement;
- var paraGray :ParagraphElement = textFlow.getChildAt(3) as ParagraphElement;
- var paraSilver :ParagraphElement = textFlow.getChildAt(4) as ParagraphElement;
- var paraLime :ParagraphElement = textFlow.getChildAt(5) as ParagraphElement;
- var paraOlive :ParagraphElement = textFlow.getChildAt(6) as ParagraphElement;
- var paraWhite :ParagraphElement = textFlow.getChildAt(7) as ParagraphElement;
- var paraYellow :ParagraphElement = textFlow.getChildAt(8) as ParagraphElement;
- var paraMaroon :ParagraphElement = textFlow.getChildAt(9) as ParagraphElement;
- var paraNavy :ParagraphElement = textFlow.getChildAt(10) as ParagraphElement;
- var paraRed :ParagraphElement = textFlow.getChildAt(11) as ParagraphElement;
- var paraPurple :ParagraphElement = textFlow.getChildAt(12) as ParagraphElement;
- var paraTeal :ParagraphElement = textFlow.getChildAt(13) as ParagraphElement;
- var paraFuchsia:ParagraphElement = textFlow.getChildAt(14) as ParagraphElement;
- var paraAqua :ParagraphElement = textFlow.getChildAt(15) as ParagraphElement;
- var paraMagenta:ParagraphElement = textFlow.getChildAt(16) as ParagraphElement;
- var paraCyan :ParagraphElement = textFlow.getChildAt(17) as ParagraphElement;
- var paraCYAN :ParagraphElement = textFlow.getChildAt(18) as ParagraphElement;
- var paraXXX :ParagraphElement = textFlow.getChildAt(19) as ParagraphElement;
- assertTrue("Paragraph color value should be equal", paraBlack.format.color == ColorName.BLACK);
- assertTrue("Paragraph color value should be equal", paraBlue.format.color == ColorName.BLUE);
- assertTrue("Paragraph color value should be equal", paraGreen.format.color == ColorName.GREEN);
- assertTrue("Paragraph color value should be equal", paraGray.format.color == ColorName.GRAY);
- assertTrue("Paragraph color value should be equal", paraSilver.format.color == ColorName.SILVER);
- assertTrue("Paragraph color value should be equal", paraLime.format.color == ColorName.LIME);
- assertTrue("Paragraph color value should be equal", paraOlive.format.color == ColorName.OLIVE);
- assertTrue("Paragraph color value should be equal", paraWhite.format.color == ColorName.WHITE);
- assertTrue("Paragraph color value should be equal", paraYellow.format.color == ColorName.YELLOW);
- assertTrue("Paragraph color value should be equal", paraMaroon.format.color == ColorName.MAROON);
- assertTrue("Paragraph color value should be equal", paraNavy.format.color == ColorName.NAVY);
- assertTrue("Paragraph color value should be equal", paraRed.format.color == ColorName.RED);
- assertTrue("Paragraph color value should be equal", paraPurple.format.color == ColorName.PURPLE);
- assertTrue("Paragraph color value should be equal", paraTeal.format.color == ColorName.TEAL);
- assertTrue("Paragraph color value should be equal", paraFuchsia.format.color == ColorName.FUCHSIA);
- assertTrue("Paragraph color value should be equal", paraAqua.format.color == ColorName.AQUA);
- assertTrue("Paragraph color value should be equal", paraMagenta.format.color == ColorName.MAGENTA);
- assertTrue("Paragraph color value should be equal", paraCyan.format.color == ColorName.CYAN);
- assertTrue("Paragraph color value should be equal", paraCYAN.format.color == undefined);
- assertTrue("Paragraph color value should be equal", paraXXX.format.color == undefined);
- }
-
- private function myHBeamCursorFunction(value:String):String
- {
- var cursorPoints:Vector.<Number>;
- var cursorCommands:Vector.<int>;
-
- // mjzhang : IBEAM cursor have different appearence on Mac and Win, so we draw HBEAM differently
- if ( Capabilities.os.search("Mac OS") > -1 )
- {
- cursorPoints = new <Number>[0,0, 0,1, 3,4, 3,4, 0,7, 0,8, 3,4, 16,4, 19,0, 19,1, 17,4, 17,4, 19,7, 19,8, 10,3, 10,6];
- cursorCommands = new <int>[1, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2];
- }
- else
- {
- cursorPoints = new <Number>[0,0, 0,4, 0,5, 0,9, 1,4, 17,4, 17,0, 17,4, 17,5, 17,9];
- cursorCommands = new <int>[1, 2, 1, 2, 1, 2, 1, 2, 1, 2];
- }
- var cursorShape:Shape = new Shape();
- cursorShape.graphics.beginFill(0x000000, 1.0);
- cursorShape.graphics.lineStyle(1);
- cursorShape.graphics.drawPath(cursorCommands, cursorPoints);
- cursorShape.graphics.endFill();
- var cursorBmp:BitmapData = new BitmapData(20, 10, true, 0);
- cursorBmp.draw(cursorShape);
-
- var cursorData:Vector.<BitmapData> = new Vector.<BitmapData>();
- cursorData.push(cursorBmp);
-
- var MouseCursorDataClass:Class;
- try
- {
- MouseCursorDataClass = getDefinitionByName("flash.ui.MouseCursorData") as Class;
- }
- catch(e:Error) {}
-
- if (MouseCursorDataClass)
- {
- var mouseCursorData:Object = new MouseCursorDataClass();
- mouseCursorData.data = cursorData;
- mouseCursorData.hotSpot = new Point(10, 5);
-
- var registerCursor:Function = Mouse["registerCursor"];
- if ( Mouse["registerCursor"] != undefined )
- {
- registerCursor("hbeam", mouseCursorData);
- }
-
- }
-
- return "hbeam";
-
- }
-
- public function HBeamCursorTest():void
- {
- SelManager.selectAll();
- SelManager.deleteText();
-
- var markup:String = '<TextFlow whiteSpaceCollapse="preserve" version="2.0.0" xmlns="http://ns.adobe.com/textLayout/2008"><p paddingBottom="25"><span>Move your mouse over this text to see custom cursor</span></p></TextFlow>';
-
- var config:Configuration = new Configuration();
- config.cursorFunction = myHBeamCursorFunction;
- var textFlow:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT, config);
- textFlow.blockProgression = BlockProgression.RL;
- textFlow.interactionManager = new EditManager();
-
- var sprite:Sprite = new Sprite();
- textFlow.flowComposer.addController(new ContainerController(sprite, 400, 200));
- textFlow.flowComposer.updateAllControllers();
-
- var testCanvas:Canvas = myEmptyChilds();
- testCanvas.rawChildren.addChild(sprite);
- }
-
- // mjzhang : Bug#2907691 When composition starts in middle of the container, paddingBottom for the previous paragraph is ignored
- public function paddingBottomTest():void
- {
- var textFlow:TextFlow = SelManager.textFlow;
- var markup:String = '<TextFlow whiteSpaceCollapse="preserve" version="2.0.0" xmlns="http://ns.adobe.com/textLayout/2008"><p paddingBottom="25"><span>para1</span></p><p paddingBottom="25"><span>para2</span></p><p paddingBottom="25"><span>para3</span></p></TextFlow>';
- var textFlowNew:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT);
- textFlow.replaceChildren(0, textFlow.numChildren, textFlowNew.mxmlChildren);
- SelManager.updateAllControllers();
-
- SelManager.selectRange(100, 100);
- SelManager.insertText("aaa");
- SelManager.textFlow.flowComposer.compose();
-
- var textFlowLine:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(2);
- var canvas:Canvas = Canvas(testApp.getDisplayObject());
- var textLineBounds:Rectangle = textFlowLine.getTextLine().getBounds(canvas);
- assertTrue("Paragraph3's top value should be 87.55.", textLineBounds.top == 87.55);
- }
-
- //Fix bug 2869747 using TextFlow.flowComposer and ContainerController, displayed text is incorrectly masked
- public function scrollRectTest():void
- {
- var textFlow:TextFlow = SelManager.textFlow;
- var container:Sprite = new Sprite();
- container = textFlow.flowComposer.getControllerAt(0).container as Sprite;
- textFlow.flowComposer.addController(new ContainerController(container, 200, 100));
- textFlow.flowComposer.updateAllControllers();
- textFlow.flowComposer.removeAllControllers();
- textFlow.flowComposer.addController(new ContainerController(container, 500, 500));
- textFlow.flowComposer.updateAllControllers();
- }
-
- }
+ [RunWith("org.flexunit.runners.Parameterized")]
+ public class ContainerAttributeTest extends VellumTestCase
+ {
+ public static var dataProvider1:Array = [
+ [
+ {testContainer: true, minimal: true, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: false}
+ ],
+ [
+ {testContainer: false, minimal: true, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: false}
+ ],
+ ];
+
+ public static var dataProvider2:Array = [
+ [
+ {testContainer: false, minimal: false, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: false}
+ ],
+ [
+ {testContainer: false, minimal: true, blockProgression: BlockProgression.TB, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ ];
+
+ public static var dataProvider3:Array = [
+ [
+ {testContainer: true, minimal: true, blockProgression: BlockProgression.TB, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ [
+ {testContainer: true, minimal: false, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ ];
+
+ public static var dataProvider4:Array = [
+ [
+ {testContainer: true, minimal: true, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ [
+ {testContainer: false, minimal: false, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ ];
+
+ public static var dataProvider5:Array = [
+ [
+ {testContainer: false, minimal: true, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ [
+ {testContainer: false, minimal: false, blockProgression: BlockProgression.TB, direction: Direction.LTR, bitmapSnapshot: true}
+ ],
+ ];
+
+ public static var dataProvider6:Array = [
+ [
+ {testContainer: false, minimal: true, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ [
+ {testContainer: false, minimal: false, blockProgression: BlockProgression.TB, direction: Direction.LTR, bitmapSnapshot: false}
+ ],
+ ];
+
+ public static var dataProvider7:Array = [
+ [
+ {testContainer: false, minimal: true, blockProgression: BlockProgression.RL, direction: Direction.RTL, bitmapSnapshot: true}
+ ],
+ [
+ {testContainer: false, minimal: false, blockProgression: BlockProgression.TB, direction: Direction.RTL, bitmapSnapshot: false}
+ ],
+ ];
+
+ private var testContainer:Boolean;
+ private var inputContainerAttrs:TextLayoutFormat;
+ private var outputContainerAttrs:ITextLayoutFormat;
+ private var initSize:Point;
+
+ private var currentDpData:Object;
+
+ public function ContainerAttributeTest()
+ {
+ super("", "ContainerAttributeTest", TestConfig.getInstance());
+ this.testContainer = (TestData.testContainer == "true");
+ TestID = TestID + ":" + testContainer;
+ inputContainerAttrs = new TextLayoutFormat();
+
+ metaData = {};
+ metaData.productArea = "Text Container";
+ }
+
+ public override function setUpTest():void
+ {
+ super.setUpTest();
+ paddingRight = 0;
+ paddingLeft = 0;
+ SelManager.textFlow.paddingLeft = 0;
+ SelManager.textFlow.paddingRight = 0;
+ SelManager.selectAll();
+ columnGap = 0;
+ columnWidth = FormatValue.AUTO;
+ columnCount = FormatValue.AUTO;
+
+ testContainer = currentDpData.testContainer;
+ TestData.bitmapSnapshot = currentDpData.bitmapSnapshot ? "true" : "false";
+ TestData.minimal = currentDpData.bitmapSnapshot ? "true" : "false";
+ writingDirection[0] = currentDpData.blockProgression == BlockProgression.RL ? BlockProgression.TB : BlockProgression.RL;
+ writingDirection[1] = currentDpData.direction == Direction.RTL ? Direction.LTR : Direction.LTR;
+ }
+
+ [After]
+ public override function tearDownTest():void
+ {
+ if (initSize)
+ {
+ size = initSize;
+ }
+
+ super.tearDownTest();
+ }
+
+ private function set columnCount(count:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.columnCount = count;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.columnCount = count;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function get columnCount():Object
+ {
+ outputContainerAttrs = TestFrame.computedFormat;
+ return outputContainerAttrs.columnCount;
+ }
+
+ private function set columnGap(gap:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.columnGap = gap;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.columnGap = gap;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function get columnGap():Object
+ {
+ outputContainerAttrs = TestFrame.computedFormat;
+ return outputContainerAttrs.columnGap;
+ }
+
+ private function set columnWidth(width:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.columnWidth = width;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.columnWidth = width;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function get verticalAlign():Object
+ {
+ outputContainerAttrs = TestFrame.computedFormat;
+ return outputContainerAttrs.verticalAlign;
+ }
+
+ private function set verticalAlign(align:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.verticalAlign = align as String;
+ TestFrame.format = ca;
+
+ // Added as result of bug #1875477
+ TestFrame.textFlow.flowComposer.updateAllControllers();
+ }
+ else
+ {
+ inputContainerAttrs.verticalAlign = align as String;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function get columnWidth():Object
+ {
+ outputContainerAttrs = TestFrame.computedFormat;
+ return outputContainerAttrs.columnWidth;
+ }
+
+ private function set paddingTop(padding:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.paddingTop = padding;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.paddingTop = padding;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function set paddingBottom(padding:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.paddingBottom = padding;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.paddingBottom = padding;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function set paddingRight(padding:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.paddingRight = padding;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.paddingRight = padding;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function set paddingLeft(padding:Object):void
+ {
+ if (testContainer)
+ {
+ var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ ca.paddingLeft = padding;
+ TestFrame.format = ca;
+ }
+ else
+ {
+ inputContainerAttrs.paddingLeft = padding;
+ SelManager.applyContainerFormat(inputContainerAttrs);
+ }
+ }
+
+ private function get testFrameWidth():Number
+ {
+ return TestFrame.compositionWidth;
+ }
+
+ private function get testFrameHeight():Number
+ {
+ return TestFrame.compositionHeight;
+ }
+
+ private function get blockProgression():String
+ {
+ return TestFrame.rootElement.computedFormat.blockProgression;
+ }
+
+ private function set blockProgression(mode:String):void
+ {
+ TestFrame.rootElement.blockProgression = mode;
+ TestFrame.textFlow.flowComposer.compose();
+ }
+
+ private function get size():Point
+ {
+ var width:Number = 0;
+ var height:Number = 0;
+
+ if (TestFrame.container is DisplayObject)
+ {
+ var frame:DisplayObject = TestFrame.container as DisplayObject;
+ width = frame.width;
+ height = frame.height;
+ }
+
+ return new Point(width, height);
+ }
+
+ private function set size(dimension:Point):void
+ {
+ var containerAttr:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
+ containerAttr.columnCount = 1;
+ containerAttr.paddingLeft = 0;
+ containerAttr.paddingRight = 0;
+ containerAttr.paddingTop = 0;
+ containerAttr.paddingBottom = 0;
+ TestFrame.format = containerAttr;
+
+ if (TestFrame.container is Sprite)
+ {
+ TextFlow(testApp.getTextFlow()).flowComposer.getControllerAt(0).setCompositionSize(dimension.x, dimension.y);
+ TextFlow(testApp.getTextFlow()).flowComposer.updateAllControllers();
+ }
+ else
+ throw new Error("test does not know how to resize this container type"); // Above should be generalized?
+ }
+
+ /**
+ * Set and get the firstBaselineOffset string values and test bound of numeric values.
+ */
+ [Test(dataProvider=dataProvider1)]
+ public function checkfirstBaselineOffset(dpData:Object):void // KJT
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ inputContainerAttrs.firstBaselineOffset = BaselineOffset.ASCENT;
+ assertTrue("expected: ascent. cascaded: " + String(inputContainerAttrs.firstBaselineOffset),
+ String(inputContainerAttrs.firstBaselineOffset) == BaselineOffset.ASCENT);
+ inputContainerAttrs.firstBaselineOffset = BaselineOffset.LINE_HEIGHT;
+ assertTrue("expected: leading. cascaded: " + String(inputContainerAttrs.firstBaselineOffset),
+ String(inputContainerAttrs.firstBaselineOffset) == BaselineOffset.LINE_HEIGHT);
+ for (var cter:uint = TextLayoutFormat.firstBaselineOffsetProperty.minValue; cter <= TextLayoutFormat.firstBaselineOffsetProperty.maxValue; cter += 33.33)
+ {
+ inputContainerAttrs.firstBaselineOffset = cter;
+ assertTrue("expected: " + cter + ". cascaded: " + inputContainerAttrs.firstBaselineOffset, inputContainerAttrs.firstBaselineOffset == cter);
+ }
+
+ inputContainerAttrs.firstBaselineOffset = undefined;
+ }
+
+ /**
+ * Set the gap, then change the width to see how the column count changes.
+ */
+ public function checkColumnCountOnWidthChangeTest():void
+ {
+ var width:Number = testFrameWidth;
+ var cWidth:Number = width / 10;
+
+ columnGap = 0;
+ columnWidth = cWidth;
+
+ var initCount:int = TestFrame.columnState.columnCount;
+
+ columnWidth = cWidth * 2;
+
+
+ var endCount:int = TestFrame.columnState.columnCount;
+
+ assertTrue("expected " + Math.floor(initCount / 2) + " but got " + endCount,
+ Math.floor(initCount / 2) == endCount);
+ }
+
+ /**
+ * Set the width, then change the column gap to see how the column count changes.
+ */
+ public function checkColumnCountOnGapChangeTest():void
+ {
+ var width:Number = testFrameWidth;
+ var cWidth:Number = width / 10;
+
+ /*paddingRight = 0;
+ paddingLeft = 0;
+ SelManager.textFlow.paddingLeft = 0;
+ SelManager.textFlow.paddingRight = 0;*/
+ columnGap = 0;
+ columnWidth = cWidth;
+
+ var initCount:Number = TestFrame.columnState.columnCount;
+
+ columnGap = cWidth / 10;
+
+ var endCount:Number = TestFrame.columnState.columnCount;
+
+ assertTrue("expected " + (initCount - 1) + " but got " + endCount,
+ initCount - 1 == endCount);
+ }
+
+ /**
+ * Set the column count, then change the column gap and see how the column width changes.
+ */
+ [Test(dataProvider=dataProvider1)]
+ public function checkColumnWidthOnGapChangeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var width:Number = testFrameWidth;
+ var cWidth:Number = width / 10;
+
+ /*paddingRight = 0;
+ paddingLeft = 0;
+ SelManager.textFlow.paddingLeft = 0;
+ SelManager.textFlow.paddingRight = 0;*/
+ columnGap = 0;
+ columnCount = 10;
+
+ var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var initWidth:Number = initColumn.width;
+
+ columnGap = cWidth / 9;
+
+ var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var endWidth:Number = endColumn.width;
+ assertTrue("expected " + (initWidth - (initWidth / 10)) + " but got " + endWidth,
+ ((initWidth - (initWidth / 10)) - endWidth) < 0.01);
+ }
+
+ /**
+ * Set the column gap, then change the column count to see how the column width changes.
+ */
+ [Test(dataProvider=dataProvider1)]
+ public function checkColumnWidthOnCountChangeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var bp:String = TestFrame.textFlow.computedFormat.blockProgression;
+ var width:Number = bp == BlockProgression.TB ? testFrameWidth : testFrameHeight;
+ var cWidth:Number = width / 10;
+
+ /*paddingRight = 0;
+ paddingLeft = 0;
+ SelManager.textFlow.paddingLeft = 0;
+ SelManager.textFlow.paddingRight = 0;*/
+ columnGap = 0;
+ columnCount = 10;
+
+ var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var initWidth:Number = bp == BlockProgression.TB ? initColumn.width : initColumn.height;
+
+ columnCount = 5;
+
+ var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var endWidth:Number = bp == BlockProgression.TB ? endColumn.width : endColumn.height;
+
+ assertTrue("expected " + Math.floor(endWidth / 2) + " but got " + initWidth,
+ Math.floor(endWidth / 2) == Math.floor(initWidth));
+ assertTrue("expected " + Math.floor(initWidth) + " but got " + Math.floor(cWidth),
+ Math.floor(initWidth) == Math.floor(cWidth));
+ }
+
+ /**
+ * Set the column count, then change the column width to see how the column gap changes.
+ */
+ [Test(dataProvider=dataProvider1)]
+ [Ignore]
+ public function checkColumnGapOnWidthChangeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var width:Number = testFrameWidth;
+
+ columnCount = 2;
+ columnWidth = width / 3;
+
+ var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var initGap:Number = width - initColumn.width * 2;
+
+ assertTrue("expected init width to equal " + width / 3 + ", but got " + columnWidth,
+ columnWidth == width / 3);
+ assertTrue("expected init count to equal " + 2 + ", but got " + columnCount,
+ columnCount == 2);
+ assertTrue("expected init gap to equal " + width / 3 + ", but got " + initGap,
+ Math.floor(initGap) == Math.floor(width / 3));
+
+ columnWidth = width / 2;
+
+ var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var endGap:Number = width - endColumn.width * 2;
+
+ assertTrue("expected " + Math.floor(width / 2) + " but got " + Math.floor(endGap),
+ Math.floor(endGap) == 0);
+ }
+
+ /**
+ * Set the column width, then change the column count to see how the column gap changes.
+ * NOTE: Currently commented out due to bug 1657149.
+ */
+ [Test(dataProvider=dataProvider1)]
+ public function checkColumnGapOnCountChangeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var width:Number = testFrameWidth;
+
+ columnCount = 10;
+ var cWidth:Number = width / 10;
+ //to get gap by reducing column width
+ columnWidth = cWidth - cWidth / 9;
+
+ var initColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var initGap:Number = cWidth - initColumn.width;
+
+ //increase column count but no change to column count, gap should reduce
+ columnCount = 11;
+ cWidth = width / 11;
+
+ var endColumn:Rectangle = TestFrame.columnState.getColumnAt(0);
+ var endGap:Number = cWidth - endColumn.width;
+ assertTrue("Gap should reduce when column count increased and column width no change. ",
+ initGap > endGap);
+ }
+
+ /**
+ * Slowly increase the padding at the top until it pushes a line off the screen
+ * then verify that the last line was the line pushed off the screen.
+ */
+ [Test(dataProvider=dataProvider4)]
+ public function topPaddingSqueezeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var length:int = SelManager.textFlow.flowComposer.numLines;
+ var last:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(length - 1);
+ var size:int = last.textLength;
+ var count:int = TestFrame.textLength;
+
+ for (var i:int = 0; i < 1000; i++)
+ {
+ paddingTop = i;
+ TestFrame.textFlow.flowComposer.compose();
+
+ if (TestFrame.textLength == count - size)
+ {
+ return;
+ }
+ }
+ assertTrue("Expected " + size + "characters to be pushed off (the last line)" +
+ " but actually had " + (TestFrame.textLength - count) + "pushed off",
+ TestFrame.textLength != count - size);
+ }
+
+ /**
+ * Slowly increase the padding at the bottom until it eats the last line
+ * then verify that the last line was the line eaten.
+ */
+ [Test(dataProvider=dataProvider4)]
+ public function bottomPaddingSqueezeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ //FLEX: Why no lines?
+ var length:int = SelManager.textFlow.flowComposer.numLines;
+ var last:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(length - 1);
+ var size:int = last.textLength;
+ var count:int = TestFrame.textLength;
+
+ for (var i:int = 0; i < 1000; i++)
+ {
+ paddingBottom = i;
+ TestFrame.textFlow.flowComposer.compose();
+
+ if (TestFrame.textLength == count - size)
+ {
+ return;
+ }
+ }
+ assertTrue("Expected " + size + "characters to be pushed off (the last line)" +
+ " but actually had " + (TestFrame.textLength - count) + "pushed off",
+ TestFrame.textLength != count - size);
+ }
+
+ /**
+ * Increase the left padding until you force the flow to create a new line.
+ */
+ [Test(dataProvider=dataProvider4)]
+ public function leftPaddingSqueezeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var length:int = SelManager.textFlow.flowComposer.numLines;
+
+ for (var i:int = 0; i < 1000; i++)
+ {
+ paddingLeft = i;
+ TestFrame.textFlow.flowComposer.compose();
+
+ if (SelManager.textFlow.flowComposer.numLines > length)
+ {
+ return;
+ }
+ }
+ assertTrue("Increasing the left padding to 1000 did not add lines",
+ SelManager.textFlow.flowComposer.numLines <= length);
+ }
+
+ /**
+ * Increase the right padding until you force the flow to create a new line.
+ */
+ [Test(dataProvider=dataProvider4)]
+ public function rightPaddingSqueezeTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var length:int = SelManager.textFlow.flowComposer.numLines;
+
+ for (var i:int = 0; i < 1000; i++)
+ {
+ paddingRight = i;
+ TestFrame.textFlow.flowComposer.compose();
+
+ if (SelManager.textFlow.flowComposer.numLines > length)
+ {
+ return;
+ }
+ }
+ assertTrue("Increasing the right padding to 1000 did not add lines",
+ SelManager.textFlow.flowComposer.numLines <= length);
+ }
+
+ [Test(dataProvider=dataProvider1)]
+ public function writingModeBreakTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ // clear all padding on the textFlow for this test
+ SelManager.textFlow.paddingTop = 0;
+ SelManager.textFlow.paddingLeft = 0;
+ SelManager.textFlow.paddingRight = 0;
+ SelManager.textFlow.paddingBottom = 0;
+
+ initSize = size;
+ size = new Point(200, 200);
+
+ var initCounts:Array = new Array(SelManager.textFlow.flowComposer.numLines);
+
+ var initMode:String = blockProgression;
+ var nextMode:String = null;
+
+ if (initMode == BlockProgression.TB)
+ {
+ nextMode = BlockProgression.RL;
+ } else
+ {
+ nextMode = BlockProgression.TB;
+ }
+
+
+ var i:int = 0;
+ for (; i < SelManager.textFlow.flowComposer.numLines; i++)
+ {
+ var line:TextFlowLine = SelManager.textFlow.flowComposer.getLineAt(i);
+ if (line.isDamaged())
+ break;
+ initCounts[i] = line.textLength;
+ }
+ initCounts.length = i;
+
+ blockProgression = nextMode;
+ SelManager.flushPendingOperations();
+
+ var endCounts:Array = new Array(SelManager.textFlow.flowComposer.numLines);
+
+ i = 0;
+ for (; i < SelManager.textFlow.flowComposer.numLines; i++)
+ {
+ line = SelManager.textFlow.flowComposer.getLineAt(i);
+ if (line.isDamaged())
+ break;
+ endCounts[i] = line.textLength;
+ }
+ endCounts.length = i;
+
+ var one:int = initCounts.length;
+ var two:int = endCounts.length;
+
+ assertTrue("number of lines are not the same after changing writing direction in a square frame",
+ initCounts.length == endCounts.length);
+ for (i = 0; i < initCounts.length; i++)
+ {
+ assertTrue("line length of line " + i + " changed after changing writing direction in a square frame",
+ initCounts[i] == endCounts[i]);
+ }
+ }
+
+ /**
+ * This test exists solely for snapshotting.
+ */
+ [Test(dataProvider=dataProvider2)]
+ public function checkVerticalAlignTopTest(dpData:Object):void
+ {
+ currentDpData = dpData;
+ setUpTest();
+
+ var division:int =
+ TestFrame.textFlow.computedFormat.blockProgression ==
+ BlockProgression.RL ?
+ TestFrame.compositionWidth / 3 :
+ TestFrame.compositionHeight / 3;
+
+ SelManager.selectAll();
+ SelManager.delet
<TRUNCATED>
[2/2] git commit: [flex-tlf] [refs/heads/FlexUnit4TestsTLF] - Migrate
ContainerAttributeTest class to FU 4 Remove some unused imports
Posted by pi...@apache.org.
Migrate ContainerAttributeTest class to FU 4
Remove some unused imports
Project: http://git-wip-us.apache.org/repos/asf/flex-tlf/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-tlf/commit/cd487156
Tree: http://git-wip-us.apache.org/repos/asf/flex-tlf/tree/cd487156
Diff: http://git-wip-us.apache.org/repos/asf/flex-tlf/diff/cd487156
Branch: refs/heads/FlexUnit4TestsTLF
Commit: cd4871560959bf2c064000f79c118bf07afef116
Parents: 0d5ac0c
Author: piotrz <pi...@gmail.com>
Authored: Thu Jun 5 23:11:25 2014 +0200
Committer: piotrz <pi...@gmail.com>
Committed: Thu Jun 5 23:11:25 2014 +0200
----------------------------------------------------------------------
automation_tests/src/AllTestsSuite.as | 4 +-
.../src/UnitTest/Tests/CompositionTest.as | 2 -
.../UnitTest/Tests/ContainerAttributeTest.as | 3398 ++++++++++--------
3 files changed, 1810 insertions(+), 1594 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cd487156/automation_tests/src/AllTestsSuite.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/AllTestsSuite.as b/automation_tests/src/AllTestsSuite.as
index cd41709..b24715b 100644
--- a/automation_tests/src/AllTestsSuite.as
+++ b/automation_tests/src/AllTestsSuite.as
@@ -27,6 +27,7 @@ package
import UnitTest.Tests.AttributeTest;
import UnitTest.Tests.BoxTest;
import UnitTest.Tests.CompositionTest;
+ import UnitTest.Tests.ContainerAttributeTest;
import UnitTest.Tests.ContainerTypeTest;
import UnitTest.Tests.FloatTest;
import UnitTest.Tests.OperationTest;
@@ -37,17 +38,18 @@ package
public dynamic class AllTestsSuite
{
public var accessibilityMethodsTest:AccessibilityMethodsTest;
- public var compositionTest:CompositionTest;
public var allChartAttributeTest:AllCharAttributeTest;
public var allContAttirbuteTest:AllContAttributeTest;
public var allEventTest:AllEventTest;
public var allParagraphAttributeTest:AllParaAttributeTest;
public var attributeTest:AttributeTest;
public var boxTest:BoxTest;
+ public var compositionTest:CompositionTest;
public var containerTypeTest:ContainerTypeTest;
public var floatTest:FloatTest;
public var operationTest:OperationTest;
public var scrollingTest:ScrollingTest;
+ public var containerAttributeTest:ContainerAttributeTest;
}
http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cd487156/automation_tests/src/UnitTest/Tests/CompositionTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/CompositionTest.as b/automation_tests/src/UnitTest/Tests/CompositionTest.as
index fdda766..0ba3dee 100644
--- a/automation_tests/src/UnitTest/Tests/CompositionTest.as
+++ b/automation_tests/src/UnitTest/Tests/CompositionTest.as
@@ -18,8 +18,6 @@
////////////////////////////////////////////////////////////////////////////////
package UnitTest.Tests
{
- import UnitTest.ExtendedClasses.TestDescriptor;
- import UnitTest.ExtendedClasses.TestSuiteExtended;
import UnitTest.ExtendedClasses.VellumTestCase;
import UnitTest.Fixtures.TestConfig;