blob: 10471331a20051d011c6de2e01d249046827a876 [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// 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.TestDescriptor;
import UnitTest.ExtendedClasses.TestSuiteExtended;
import UnitTest.ExtendedClasses.VellumTestCase;
import UnitTest.Fixtures.TestConfig;
import flash.events.Event;
import flash.geom.Point;
import flash.geom.Rectangle;
import flashx.textLayout.compose.StandardFlowComposer;
import flashx.textLayout.compose.TextFlowLine;
import flashx.textLayout.formats.BlockProgression;
import flashx.textLayout.formats.Direction;
import flashx.textLayout.formats.ITextLayoutFormat;
import flashx.textLayout.formats.TextLayoutFormat;
import flashx.textLayout.tlf_internal;
use namespace tlf_internal;
public class SpacingTest extends VellumTestCase
{
private var firstLine:TextFlowLine;
private var secondLine:TextFlowLine;
public function SpacingTest(methodName:String, testID:String, testConfig:TestConfig, testCaseXML:XML=null)
{
super(methodName, testID, testConfig, testCaseXML);
// Note: These must correspond to a Watson product area (case-sensitive)
metaData.productArea = "Text Composition";
}
public static function suite(testConfig:TestConfig, ts:TestSuiteExtended):void
{
ts.addTestDescriptor(new TestDescriptor(SpacingTest, "spaceLeadingMarginTest", testConfig));
}
public override function setUp():void
{
super.setUp();
var ca:TextLayoutFormat = new TextLayoutFormat(TestFrame.format);
ca.columnCount = 1;
TestFrame.format = ca;
TestFrame.textFlow.flowComposer.updateAllControllers();
}
//Paragraph.
public function spaceLeadingMarginTest():void
{
var lines:Array = StandardFlowComposer(SelManager.textFlow.flowComposer).lines;
firstLine = lines[0] as TextFlowLine;
for each (var sl:TextFlowLine in lines){
if(sl.paragraph != firstLine.paragraph &&
sl.location == firstLine.location
){
secondLine = sl;
break;
}
}
SelManager.selectRange(firstLine.absoluteStart,firstLine.textLength - 2);
var pa:TextLayoutFormat = new TextLayoutFormat();
if (this.writingDirection[0] == BlockProgression.TB)
{
if (this.writingDirection[1] == Direction.LTR)
{
assertTrue(firstLine.x == secondLine.x);
pa.paragraphStartIndent = 100;
}
else if (this.writingDirection[1] == Direction.RTL)
{
// these should be close
var l1End:Number = firstLine.x+firstLine.getTextLine().width;
var l2End:Number = secondLine.x+secondLine.getTextLine().width;
var isNearlyEqual:Boolean = Math.abs(l1End-l2End)< 0.1;
assertTrue(isNearlyEqual);
pa.paragraphEndIndent = 100;
}
else
fail("Unknown direction " + this.writingDirection[1]);
}
else if (this.writingDirection[0] == BlockProgression.RL)
{
assertTrue(firstLine.y == secondLine.y);
pa.paragraphStartIndent = 100;
}
else
fail("Unknown blockProgression " + this.writingDirection[0]);
SelManager.applyParagraphFormat(pa);
SelManager.flushPendingOperations();
firstLine = lines[0];
testLines();
}
private function testLines():void
{
if (this.writingDirection[0] == BlockProgression.TB)
{
if (this.writingDirection[1] == Direction.LTR)
{
assertTrue("First = " + firstLine.x + ", Second = " + secondLine.x,
firstLine.x == secondLine.x + 100
);
}
else if (this.writingDirection[1] == Direction.RTL)
{
assertTrue("First = " + firstLine.targetWidth +
", Second = " + secondLine.targetWidth,
firstLine.targetWidth == secondLine.targetWidth - 100
);
}
else
fail("Unknown direction " + this.writingDirection[1]);
}
else if (this.writingDirection[0] == BlockProgression.RL)
{
assertTrue("First = " + firstLine.y + ", Second = " + secondLine.y,
firstLine.y == secondLine.y + 100
);
}
else
fail("Unknown blockProgression " + this.writingDirection[0]);
}
}
}