http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/ParagraphTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/ParagraphTest.as 
b/automation_tests/src/UnitTest/Tests/ParagraphTest.as
index debc433..85463a9 100644
--- a/automation_tests/src/UnitTest/Tests/ParagraphTest.as
+++ b/automation_tests/src/UnitTest/Tests/ParagraphTest.as
@@ -40,7 +40,9 @@ package UnitTest.Tests
     import flashx.textLayout.property.Property;
     import flashx.textLayout.tlf_internal;
 
-       use namespace tlf_internal;
+    import org.flexunit.asserts.assertTrue;
+
+    use namespace tlf_internal;
 
        public class ParagraphTest extends VellumTestCase
        {

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/SWFTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/SWFTest.as 
b/automation_tests/src/UnitTest/Tests/SWFTest.as
index 9afcbf0..cdaff1e 100644
--- a/automation_tests/src/UnitTest/Tests/SWFTest.as
+++ b/automation_tests/src/UnitTest/Tests/SWFTest.as
@@ -42,7 +42,9 @@ package UnitTest.Tests
        import mx.containers.Canvas;
        import mx.utils.LoaderUtil;
 
-       public class SWFTest extends VellumTestCase
+    import org.flexunit.asserts.assertTrue;
+
+    public class SWFTest extends VellumTestCase
        {
                public function SWFTest(methodName:String, testID:String, 
testConfig:TestConfig, testCaseXML:XML=null)
                {
@@ -63,9 +65,9 @@ package UnitTest.Tests
                        load_file = TestData.swf;
                        ldr = new Loader();
                        ldr.load(new 
URLRequest(LoaderUtil.createAbsoluteURL(baseURL,"../../asPrivateTestApps/bin/" 
+ load_file)));
-                       var func:Function = addAsync(validateLoad, 10000, null);
+                       /*var func:Function = addAsync(validateLoad, 10000, 
null);
                        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,  
func, false, 0, true);
-                       
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, 
true);
+                       
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, 
true);   */
                }
                
                public function validateLoad(e:Event):void
@@ -79,7 +81,7 @@ package UnitTest.Tests
                                
                                thing1.addChild(ldr);
                                var result:String = 
ldr.content["validateTest"]();
-                               assertTrue (result, result=="");
+                               assertTrue(result, result=="");
                        }
                }
                
@@ -92,9 +94,9 @@ package UnitTest.Tests
                {
                        ldr = new Loader();
                        ldr.load(new 
URLRequest(LoaderUtil.createAbsoluteURL(baseURL,fileName)));
-                       var func:Function = addAsync(validateInspectableLoad, 
10000, null);
+                       /*var func:Function = addAsync(validateInspectableLoad, 
10000, null);
                        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,  
func, false, 0, true);
-                       
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, 
true);
+                       
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, 
true); */
                }
                
                public function validateInspectableLoad(e:Event):void
@@ -119,9 +121,9 @@ package UnitTest.Tests
                        // load these into a separate application domain
                        var loaderContext:LoaderContext = new 
LoaderContext(false, new ApplicationDomain());
                        ldr.load(new 
URLRequest(LoaderUtil.createAbsoluteURL(baseURL,"../../asPrivateTestApps/bin/" 
+ load_file)),loaderContext);
-                       var func:Function = addAsync(validateLoadDC, 10000, 
null);
+               /*      var func:Function = addAsync(validateLoadDC, 10000, 
null);
                        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,  
func, false, 0, true);
-                       
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, 
true);
+                       
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, 
true); */
                        exceptionList = exceptions;
                }
                
@@ -196,14 +198,14 @@ package UnitTest.Tests
                        }
                }
 
-               public override function tearDown():void
+               public override function tearDownTest():void
                {
                        if (thing1.parent)
                        {
                                var canvas:Canvas = testApp.getDisplayObject();
                                canvas.rawChildren.removeChild(thing1);
                        }
-                       super.tearDown();
+                       super.tearDownTest();
                }
        }
 }

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/ScrollToRangeTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/ScrollToRangeTest.as 
b/automation_tests/src/UnitTest/Tests/ScrollToRangeTest.as
index 71caf02..5ff8646 100644
--- a/automation_tests/src/UnitTest/Tests/ScrollToRangeTest.as
+++ b/automation_tests/src/UnitTest/Tests/ScrollToRangeTest.as
@@ -40,7 +40,10 @@ package UnitTest.Tests
        
        import mx.containers.Canvas;
 
-       public class ScrollToRangeTest extends VellumTestCase
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.asserts.fail;
+
+    public class ScrollToRangeTest extends VellumTestCase
        {
                private var testCanvas:Canvas;
                private var testCaseXML:XML;
@@ -71,7 +74,7 @@ package UnitTest.Tests
                        VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
                }
                
-               override public function setUp() : void
+               override public function setUpTest() : void
                {
                        cleanUpTestApp();
                        TestDisplayObject = testApp.getDisplayObject();
@@ -81,7 +84,7 @@ package UnitTest.Tests
                        }
                        else
                        {
-                               fail ("Did not get a blank canvas to work 
with");
+                               fail("Did not get a blank canvas to work with");
                        }
                }
                

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/ScrollingTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/ScrollingTest.as 
b/automation_tests/src/UnitTest/Tests/ScrollingTest.as
index 13c5e01..4b52fbf 100644
--- a/automation_tests/src/UnitTest/Tests/ScrollingTest.as
+++ b/automation_tests/src/UnitTest/Tests/ScrollingTest.as
@@ -18,543 +18,587 @@
 
////////////////////////////////////////////////////////////////////////////////
 package UnitTest.Tests
 {
-       import UnitTest.ExtendedClasses.TestSuiteExtended;
-       import UnitTest.ExtendedClasses.VellumTestCase;
-       import UnitTest.Fixtures.TestConfig;
-       import UnitTest.Tests.SingleContainerTest;
-       
-       import flash.display.Shape;
-       import flash.display.Sprite;
-       import flash.events.KeyboardEvent;
-       import flash.ui.Keyboard;
-       
-       import flashx.textLayout.compose.IFlowComposer;
-       import flashx.textLayout.compose.TextFlowLine;
-       import flashx.textLayout.container.ContainerController;
-       import flashx.textLayout.conversion.TextConverter;
-       import flashx.textLayout.edit.IEditManager;
-       import flashx.textLayout.edit.SelectionManager;
-       import flashx.textLayout.edit.SelectionState;
-       import flashx.textLayout.elements.FlowElement;
-       import flashx.textLayout.elements.InlineGraphicElement;
-       import flashx.textLayout.elements.ParagraphElement;
-       import flashx.textLayout.elements.SpanElement;
-       import flashx.textLayout.elements.TextFlow;
-       import flashx.textLayout.elements.TextRange;
-       import flashx.textLayout.formats.*;
-       import flashx.textLayout.utils.NavigationUtil;
-       
-       /** Test the state of selection after each operation is done, undone, 
and redone.
-        */
-       public class ScrollingTest extends VellumTestCase
-       {
-               public function ScrollingTest(methodName:String, testID:String, 
testConfig:TestConfig, testCaseXML:XML=null)
-               {
-                       super(methodName, testID, testConfig, testCaseXML);
-                       addDefaultTestSettings = false;
-                       if (!TestData.hasOwnProperty("testFile"))
-                               TestData.fileName = "aliceExcerpt.xml";         
// longer file so it exceeds container - default for this suite, tests may 
override in XML
-                       else
-                               TestData.fileName = TestData.testFile;
-
-                       // Note: These must correspond to a Watson product area 
(case-sensitive)
-                       metaData.productArea = "UI";
-                       metaData.productSubArea = "Scrolling";
-               }
-
-               public static function suiteFromXML(testListXML:XML, 
testConfig:TestConfig, ts:TestSuiteExtended):void
-               {
-                       var testCaseClass:Class = ScrollingTest;
-                       VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
-               }
-
-
-               private function 
findFirstAndLastVisibleLine(flowComposer:IFlowComposer, 
controller:ContainerController):Array
-               {
-                       var firstLine:int = 
flowComposer.findLineIndexAtPosition(controller.absoluteStart);
-                       var lastLine:int = 
flowComposer.findLineIndexAtPosition(controller.absoluteStart + 
controller.textLength - 1);
-                       var lastColumn:int = 0;
-                       var firstVisibleLine:int = -1;
-                       var lastVisibleLine:int = -1;
-                       for (var lineIndex:int = firstLine; lineIndex <= 
lastLine; lineIndex++)
-                       {
-                               var curLine:TextFlowLine = 
flowComposer.getLineAt(lineIndex);
-                               if (curLine.controller != controller)
-                                       continue;
-
-                               // skip until we find the lines in the last 
column
-                               if (curLine.columnIndex != lastColumn)
-                                       continue;
-
-                               if (curLine.textLineExists && 
curLine.getTextLine().parent)
-                               {
-                                       if (firstVisibleLine < 0)
-                                               firstVisibleLine = lineIndex;
-
-                                       lastVisibleLine = lineIndex;
-                               }
-                       }
-
-                       return [firstVisibleLine, lastVisibleLine];
-               }
-
-               /* Test Cases:  (explicit & wrap, vertical & horizontal, ltr, 
rtl)
-                       - Page forward, backward
-                       - Forward, backward by n lines
-                               - Partial line visible
-                               - On line boundary
-                       - Forward, backward by n pixels
-                       - Scroll to position horizontal scroll forward/backward 
(mimic typing off form field)
-                       - Scroll to position when position is visible
-                       - Scroll to position when position is partly visible 
(up/down/left/right)
-                       - Scroll to end
-                       - Scroll to start
-               */
-
-               private function pageForwardOrBackward(forward:Boolean):Array
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var controller:ContainerController = 
flowComposer.getControllerAt(0);
-                       var blockProgression:String = 
textFlow.computedFormat.blockProgression;
-
-                       var linePositionBefore:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
-
-                       var panelSize:Number = (blockProgression == 
BlockProgression.TB) ? controller.compositionHeight : 
controller.compositionWidth;
-                       var pageSize:Number = panelSize * .75;
-
-                       if (!forward)
-                               pageSize = -pageSize;
-
-                       if (blockProgression == BlockProgression.TB)
-                               controller.verticalScrollPosition += pageSize;
-                       else
-                               controller.horizontalScrollPosition -= pageSize;
-
-                       flowComposer.updateAllControllers();
-
-                       return linePositionBefore;
-               }
-
-               public function pageForward():void
-               {
-                       var beforePosition:Array = pageForwardOrBackward(true);
-                       var beforeFirstVisibleLine:int = beforePosition[0];
-                       var beforeLastVisibleLine:int = beforePosition[1];
-
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var controller:ContainerController = 
flowComposer.getControllerAt(0);
-                       var afterPosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
-                       var afterFirstVisibleLine:int = afterPosition[0];
-                       var afterLastVisibleLine:int = afterPosition[1];
-
-                       // Check that we did scroll forward, and check that 
some text that was visible before is still visible.
-                       assertTrue("PageForward didn't advance scroll", 
afterFirstVisibleLine > beforeFirstVisibleLine);
-                       assertTrue("PageForward didn't overlap previous text", 
afterFirstVisibleLine < beforeLastVisibleLine);
-               }
-
-               public function pageBackward():void
-               {
-                       var beforePosition:Array = pageForwardOrBackward(false);
-                       var beforeFirstVisibleLine:int = beforePosition[0];
-                       var beforeLastVisibleLine:int = beforePosition[1];
-
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var controller:ContainerController = 
flowComposer.getControllerAt(0);
-                       var afterPosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
-                       var afterFirstVisibleLine:int = afterPosition[0];
-                       var afterLastVisibleLine:int = afterPosition[1];
-
-                       // Check that we did scroll backward, and check that 
some text that was visible before is still visible.
-                       assertTrue("PageBackward didn't reverse scroll", 
afterFirstVisibleLine < beforeFirstVisibleLine);
-                       assertTrue("PageBackward didn't overlap previous text", 
afterLastVisibleLine > beforeFirstVisibleLine);
-               }
-
-               public function scrollByPageTest():void
-               {
-                       pageForward();
-                       pageBackward();
-               }
-
-               private function 
pageForwardOrBackwardByLines(numberOfLines:int):void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var controller:ContainerController = 
flowComposer.getControllerAt(0);
-                       var blockProgression:String = 
textFlow.computedFormat.blockProgression;
-
-                       var beforePosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
-
-                       var amount:Number = 
controller.getScrollDelta(numberOfLines);
-
-                       if (blockProgression == BlockProgression.TB)
-                               controller.verticalScrollPosition += amount;
-                       else
-                               controller.horizontalScrollPosition -= amount;
-
-                       flowComposer.updateAllControllers();
-
-                       var beforeFirstVisibleLine:int = beforePosition[0];
-                       var beforeLastVisibleLine:int = beforePosition[1];
-
-                       var afterPosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
-                       var afterFirstVisibleLine:int = afterPosition[0];
-                       var afterLastVisibleLine:int = afterPosition[1];
-
-                       // Check that we did scroll forward, and check that 
some text that was visible before is still visible.
-                       assertTrue("scrollMultipleLines didn't advance scroll 
correctly", afterFirstVisibleLine == beforeFirstVisibleLine + numberOfLines);
-               }
-
-               public function scrollMultipleLinesTest():void
-               {
-                       pageForwardOrBackwardByLines(26);
-                       pageForwardOrBackwardByLines(-13);
-                       for (var i:int = 0; i < 6; ++i)
-                               pageForwardOrBackwardByLines(1);
-               }
-
-               public function scrollAndResizeTest():void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var position:int = textFlow.textLength-1;
-
-                       // shrink it down
-                       var w:Number = TestFrame.compositionWidth;
-                       var h:Number = TestFrame.compositionHeight;
-                       TestFrame.setCompositionSize(w/2,h/2);
-                       textFlow.flowComposer.updateAllControllers();
-
-                       // select at the end
-                       SelManager.selectRange(position,position);
-                       TestFrame.scrollToRange(position,position);
-
-                       // restore size
-                       TestFrame.setCompositionSize(w,h);
-                       textFlow.flowComposer.updateAllControllers();
-
-                       // verify that the last line is in view
-                       var afterPosition:Array = 
findFirstAndLastVisibleLine(textFlow.flowComposer, TestFrame);
-                       var afterFirstVisibleLine:int = afterPosition[0];
-                       var afterLastVisibleLine:int = afterPosition[1];
-                       assertTrue("scrollAndResizeTest last line no longer in 
view", afterLastVisibleLine == textFlow.flowComposer.numLines-1);
-               }
-               /* 
************************************************************** */
-               /* nextPage() test */
-               /* 
************************************************************** */
-
-               public function nextPageTest():void
-               {
-                       //Create a new TextFlow, IFlowComposer, 
ContainerController
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var controller:ContainerController = 
flowComposer.getControllerAt(0);
-
-                       //set a textRange.
-                       var textRange:TextRange = new TextRange(textFlow, 0, 
10);
-
-                       NavigationUtil.nextPage(textRange, false);
-
-                       //composes all the text up-to date.
-                       flowComposer.updateAllControllers();
-
-                       //find what the first line displayed in a scrolling 
container is
-                       var firstLineIndex:int = 
findFirstAndLastVisibleLine(flowComposer, controller)[0];
-
-                       //verify the position of textRange after nextPage 
applied
-                       assertTrue("first line index at first line is " + 
firstLineIndex + " and it should be large than 0" ,
-                               firstLineIndex > 0);
-               }
-
-               /* 
************************************************************** */
-               /* previousPage() test */
-               /* 
************************************************************** */
-
-               public function previousPageTest():void
-               {
-                       //Create a new TextFlow, IFlowComposer, 
ContainerController?
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var controller:ContainerController = 
flowComposer.getControllerAt(0);
-                       controller.verticalScrollPosition = 100;
-
-                       //set a textRange.
-                       var textRange:TextRange = new TextRange(textFlow, 1000, 
1010);
-
-                       //find text index at the first line in the visible area 
befor change
-                       var firstLineIndexBefore:int = 
findFirstAndLastVisibleLine(flowComposer, controller)[0];
-
-                       NavigationUtil.previousPage(textRange, false);
-
-                       //composes all the text up-to date.
-                       flowComposer.updateAllControllers();
-
-                       //find text index at the first line in the visible area 
after change
-                       var firstLineIndexAfter:int = 
findFirstAndLastVisibleLine(flowComposer, controller)[0];
-
-                       //verify the position of textRange after previousPage 
applied
-                       assertTrue("last line index at last line is " + 
firstLineIndexAfter + " and it should be less than " + firstLineIndexBefore,
-                       firstLineIndexAfter < firstLineIndexBefore);
-               }
-               
-
-               private function testScrollLimitWithString(content:String):void
-                       // Scrolling from a long line to a short line should 
not scroll horizontally if end of short line already in view
-               {
-                       var textFlow:TextFlow = 
TextConverter.importToFlow(content, TextConverter.PLAIN_TEXT_FORMAT);
-                       textFlow.lineBreak = LineBreak.EXPLICIT;
-                       var flowComposer:IFlowComposer = textFlow.flowComposer;
-                       var s:Sprite = new Sprite();
-                       var controller:ContainerController = new 
ContainerController(s, 100, 30);
-                       flowComposer.addController(controller);
-                       var selectionManager:SelectionManager = new 
SelectionManager();
-                       textFlow.interactionManager = selectionManager;
-                       selectionManager.selectRange(0, 0);
-                       selectionManager.setFocus();
-                       flowComposer.updateAllControllers();
-
-                       // Set cursor at the end of the 1st line
-                       var firstLine:TextFlowLine = flowComposer.getLineAt(0);
-                       selectionManager.selectRange(firstLine.absoluteStart + 
firstLine.textLength - 1, firstLine.absoluteStart + firstLine.textLength - 1);
-                       
controller.scrollToRange(selectionManager.absoluteStart, 
selectionManager.absoluteEnd);
-                       var secondLine:TextFlowLine = flowComposer.getLineAt(1);
-                       var expectScrolling:Boolean = firstLine.textLength > 
secondLine.textLength;
-                       
-                       
-                       // Scroll down and back up
-                       scrollByKey(textFlow, Keyboard.DOWN, expectScrolling);
-                       scrollByKey(textFlow, Keyboard.UP, false);
-                       scrollByKey(textFlow, Keyboard.DOWN, false);
-                       scrollByKey(textFlow, Keyboard.UP, false);
-                       
-                       
textFlow.interactionManager.selectRange(secondLine.absoluteStart + 
secondLine.textLength - 1, secondLine.absoluteStart + secondLine.textLength - 
1);
-                       
controller.scrollToRange(selectionManager.absoluteStart, 
selectionManager.absoluteEnd);
-                       flowComposer.updateAllControllers();
-
-                       // Scroll up and back down
-                       scrollByKey(textFlow, Keyboard.UP, !expectScrolling);
-                       scrollByKey(textFlow, Keyboard.DOWN, false);
-                       scrollByKey(textFlow, Keyboard.UP, false);
-                       scrollByKey(textFlow, Keyboard.DOWN, false);
-                       }
-               
-               public function scrollByKey(textFlow:TextFlow, keyCode:int, 
expectScrolling:Boolean):void
-                       // Scroll one line, and check that we only scrolled in 
vertical direction
-               {
-                       var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
-
-                       // Save off old logical horizontal scroll pos
-                       var blockProgression:String = 
textFlow.computedFormat.blockProgression;
-                       var logicalHorizontalScrollPosition:Number = 
(blockProgression == BlockProgression.TB) ? controller.horizontalScrollPosition 
: controller.verticalScrollPosition;
-
-                       var kEvent:KeyboardEvent = new KeyboardEvent( 
KeyboardEvent.KEY_DOWN, true, false, 0, keyCode);
-                       
SelectionManager(textFlow.interactionManager).keyDownHandler(kEvent);
-                       
-                       if (expectScrolling)
-                               assertTrue("Logical horizontal scroll position 
should have changed", 
-                                       logicalHorizontalScrollPosition != 
((blockProgression == BlockProgression.TB) ? 
controller.horizontalScrollPosition : controller.verticalScrollPosition));
-                       else
-                               assertTrue("Logical horizontal scroll position 
should not have changed", 
-                                       logicalHorizontalScrollPosition == 
((blockProgression == BlockProgression.TB) ? 
controller.horizontalScrollPosition : controller.verticalScrollPosition));
-               }
-               
-               // Test for Watson 2476646
-               public function scrollUpDownLimitTest():void
-                       // Scrolling from a long line to a short line or vice 
versa should not scroll horizontally if end of short line already in view
-               {
-                       testScrollLimitWithString("A B C D E F G\n" + "A B C D 
E F G H I J K L M N O P Q R S T U V W X Y Z");
-                       testScrollLimitWithString("A B C D E F G H I J K L M N 
O P Q R S T U V W X Y Z\n" + "A B C D E F G");
-               }
-               
-               public function scrollToSelectionAfterParagraphInsertion():void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       textFlow.flowComposer.updateAllControllers();
-                       SelManager.selectRange(textFlow.textLength, 
textFlow.textLength);
-                       var paragraphCount:int = 
textFlow.computedFormat.blockProgression == BlockProgression.RL ? 12 : 7;
-                       for (var i:int = 0; i < paragraphCount; ++i)
-                               SelManager.splitParagraph();
-                       var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
-                       var firstLineIndex:int = 
findFirstAndLastVisibleLine(textFlow.flowComposer, controller)[0];
-                       assertTrue("Expected view to scroll to keep selection 
in view", firstLineIndex > 0);
-               }
-               
-               public function scrollWithAdormentsAndInlines():void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       textFlow.flowComposer.updateAllControllers();
-                       // underline everything
-                       SelManager.selectAll();
-                       var format:TextLayoutFormat = new TextLayoutFormat();
-                       format.textDecoration = TextDecoration.UNDERLINE;
-                       (SelManager as IEditManager).applyLeafFormat(format);
-                       // insert a graphic
-                       var shape:Shape = new Shape;
-                       shape.graphics.beginFill(0xff0000);
-                       shape.graphics.drawRect(0,0,25,25);
-                       shape.graphics.endFill();
-                       SelManager.selectRange(0,0);
-                       (SelManager as 
IEditManager).insertInlineGraphic(shape,25,25);
-                       // now page forward and then back
-                       pageForward();
-                       pageBackward();
-                       // check rendering - there should be decorations
-               }
-               
-               public function scrollWithInsideList():void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       textFlow.flowComposer.updateAllControllers();
-                       // now page forward and then back
-                       pageForward();
-                       pageBackward();
-                       // check rendering - the inside list should have proper 
markers
-               }
-               
-               private function createFilledSprite(width:Number, 
height:Number, color:int):Sprite
-               {
-                       var sprite:Sprite = new Sprite();
-                       sprite.graphics.beginFill(color);       // red
-                       sprite.graphics.drawRect(0,0,width,height);
-                       sprite.graphics.endFill();
-                       return sprite;
-               }
-               
-               public function largeLastLine():void            // 2739996
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       SelManager.selectRange(textFlow.textLength - 1, 
textFlow.textLength - 1);
-                       SelManager.insertInlineGraphic(createFilledSprite(200, 
200, 0xff0000), 200, 200, Float.NONE);
-                       textFlow.flowComposer.updateAllControllers();
-                       SelManager.selectRange(0, 0);
-                       
textFlow.flowComposer.getControllerAt(0).scrollToRange(0, 0);
-                       var insertLineCount:int = 
textFlow.computedFormat.blockProgression == BlockProgression.RL ? 11 : 6;
-                       for (var i:int = 0; i < insertLineCount; ++i)           
// gradually force the inline out of view
-                               SelManager.splitParagraph();
-                       var firstVisibleLine:int = 
findFirstAndLastVisibleLine(textFlow.flowComposer, 
textFlow.flowComposer.getControllerAt(0))[0];
-                       assertTrue("Shouldn't scroll down yet", 
firstVisibleLine == 0);
-               }
-               
-               // mjzhang : Watson#2819924 Error #1009 in 
flashx.textLayout.container::ContainerController::updateGraphics()   
-               public function Bug2819924_case1():void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
-                       
-                       for ( var i:int = 0; i < 15; i ++ )
-                       {
-                               textFlow.addChild( TextConverter.importToFlow(
-                                               '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";>xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx <img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 xxxx</TextFlow>',
-                                               TextConverter.TEXT_LAYOUT_FORMAT
-                                       ).getChildAt(0) );
-                               
-                               textFlow.addChild(
-                                       TextConverter.importToFlow(
-                                               '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";>xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx</TextFlow>',
-                                               TextConverter.TEXT_LAYOUT_FORMAT
-                                       ).getChildAt(0) );
-                               
-                               controller.verticalScrollPosition += 50;
-                               textFlow.flowComposer.updateAllControllers();
-                       }
-               }
-               private var singleCT:SingleContainerTest = new 
SingleContainerTest();
-               // mjzhang : Watson#2819924 Error #1009 in 
flashx.textLayout.container::ContainerController::updateGraphics()   
-               public function Bug2819924_case2():void
-               {
-                       SelManager.insertInlineGraphic(singleCT, 600, 400, 
Float.NONE);
-               }
-               
-               // mjzhang : Watson#2819924 Error #1009 in 
flashx.textLayout.container::ContainerController::updateGraphics()   
-               public function Bug2819924_case3():void
-               {
-                       var textFlow:TextFlow = SelManager.textFlow;
-                       var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
-                       
-                       var str:String = "";
-                       var i:int = 30;
-                       while(i>0){
-                               str += i+"\n"
-                               i--;
-                       }
-                       
-                       var tf:TextFlow = TextConverter.importToFlow(str, 
TextConverter.PLAIN_TEXT_FORMAT);
-                       var flowElem:FlowElement = tf.getChildAt(0);
-                       textFlow.addChild( flowElem );
-                       
-                       textFlow.addChild( TextConverter.importToFlow(
-                               '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";><img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 </TextFlow>',
-                               TextConverter.TEXT_LAYOUT_FORMAT
-                       ).getChildAt(0) );
-                       
-                       
-                       for ( var j:int = 0; j < 100; j ++ )
-                       {
-                               textFlow.addChild( 
TextConverter.importToFlow("aaa", 
TextConverter.PLAIN_TEXT_FORMAT).getChildAt(0) );
-                               textFlow.addChild( TextConverter.importToFlow(
-                                       '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";><img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 </TextFlow>',
-                                       TextConverter.TEXT_LAYOUT_FORMAT
-                               ).getChildAt(0) );
-                               
-                               controller.verticalScrollPosition += 10;
-                               textFlow.flowComposer.updateAllControllers();
-                       }
-                       
-                       textFlow.flowComposer.updateAllControllers();
-               }
-               
-               public function bug2988852():void
-               {
-                       var tf:TextFlow = SelManager.textFlow;
-                       for( var i:int = 0; i < 15; i ++ )
-                       {
-                               tf.addChild( TextConverter.importToFlow(
-                                       '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";>Alice was beginning to get very 
tired of sitting by her sister   on the bank, and of having nothing to do: once 
or twice she had peeped into the book her sister was reading, but it had no 
pictures or conversations in it, “and what is the use of a book,” thought 
Alice “without pictures or conversation?<img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 conversation?</TextFlow>',
-                                       TextConverter.TEXT_LAYOUT_FORMAT
-                               ).getChildAt(0) );
-                       }
-                       tf.flowComposer.updateAllControllers();
-                       
-                       SelManager.insertInlineGraphic(singleCT, "auto", 
"auto", Float.NONE, new SelectionState(tf, 500,500));
-                       var controller:ContainerController = 
tf.flowComposer.getControllerAt(0);
-                       controller.verticalScrollPosition += 20;
-                       tf.flowComposer.updateAllControllers();
-                       
-                       controller.verticalScrollPosition += 2000;
-                       tf.flowComposer.updateAllControllers();
-                       
-                       controller.verticalScrollPosition -= 2100;
-                       tf.flowComposer.updateAllControllers();
-                       
-                       for(var scrollTimes:int = 0; scrollTimes < 10; 
scrollTimes ++)
-                       {
-                               controller.verticalScrollPosition += (800 + 
50*scrollTimes);
-                               tf.flowComposer.updateAllControllers();
-                               
-                               controller.verticalScrollPosition -= (800 + 
20*scrollTimes);
-                               tf.flowComposer.updateAllControllers();
-                       }
-               }
-               
-               public function twoColumnsTest():void
-               {
-                       var tf:TextFlow = SelManager.textFlow;
-                       for( var i:int = 0; i < 60; i ++ )
-                       {
-                               tf.addChildAt(0, TextConverter.importToFlow(
-                                       '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";><list paddingRight="24" 
paddingLeft="24" listStyleType="upperAlpha"><li>upperAlpha 
item</li></list></TextFlow>',
-                                       TextConverter.TEXT_LAYOUT_FORMAT
-                               ).getChildAt(0));
-                       }
-                       var controller:ContainerController = 
tf.flowComposer.getControllerAt(0);
-                       controller.columnCount = 2;
-                       tf.flowComposer.updateAllControllers();
-                       
-                       controller.verticalScrollPosition += 100;
-                       tf.flowComposer.updateAllControllers();
-                       var tfl60:TextFlowLine = tf.flowComposer.getLineAt(59);
-                       assertTrue("The 60th line should be on the stage after 
scrolling down 100 pixels", controller.container.contains(tfl60.getTextLine()));
-               }
-       }
+
+    import UnitTest.ExtendedClasses.TestSuiteExtended;
+    import UnitTest.ExtendedClasses.VellumTestCase;
+    import UnitTest.Fixtures.TestConfig;
+
+    import flash.display.Shape;
+    import flash.display.Sprite;
+    import flash.events.KeyboardEvent;
+    import flash.ui.Keyboard;
+
+    import flashx.textLayout.compose.IFlowComposer;
+    import flashx.textLayout.compose.TextFlowLine;
+    import flashx.textLayout.container.ContainerController;
+    import flashx.textLayout.conversion.TextConverter;
+    import flashx.textLayout.edit.IEditManager;
+    import flashx.textLayout.edit.SelectionManager;
+    import flashx.textLayout.edit.SelectionState;
+    import flashx.textLayout.elements.FlowElement;
+    import flashx.textLayout.elements.TextFlow;
+    import flashx.textLayout.elements.TextRange;
+    import flashx.textLayout.formats.*;
+    import flashx.textLayout.utils.NavigationUtil;
+
+    import org.flexunit.asserts.assertTrue;
+
+    /** Test the state of selection after each operation is done, undone, and 
redone.
+     */
+    public class ScrollingTest extends VellumTestCase
+    {
+        public function ScrollingTest()
+        {
+            // super(methodName, testID, testConfig, testCaseXML);
+            super("", "OperationTest2", TestConfig.getInstance());
+
+            addDefaultTestSettings = false;
+            TestData.fileName = "aliceExcerpt.xml";
+
+            /*if (!TestData.hasOwnProperty("testFile"))
+             TestData.fileName = "aliceExcerpt.xml";           // longer file 
so it exceeds container - default for this suite, tests may override in XML
+             else
+             TestData.fileName = TestData.testFile;   */
+
+            metaData = {};
+            // Note: These must correspond to a Watson product area 
(case-sensitive)
+            metaData.productArea = "UI";
+            metaData.productSubArea = "Scrolling";
+        }
+
+        public static function suiteFromXML(testListXML:XML, 
testConfig:TestConfig, ts:TestSuiteExtended):void
+        {
+            var testCaseClass:Class = ScrollingTest;
+            VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
+        }
+
+        [Before]
+        override public function setUpTest():void
+        {
+            super.setUpTest();
+        }
+
+        [After]
+        override public function tearDownTest():void
+        {
+            super.tearDownTest();
+        }
+
+        private function 
findFirstAndLastVisibleLine(flowComposer:IFlowComposer, 
controller:ContainerController):Array
+        {
+            var firstLine:int = 
flowComposer.findLineIndexAtPosition(controller.absoluteStart);
+            var lastLine:int = 
flowComposer.findLineIndexAtPosition(controller.absoluteStart + 
controller.textLength - 1);
+            var lastColumn:int = 0;
+            var firstVisibleLine:int = -1;
+            var lastVisibleLine:int = -1;
+            for (var lineIndex:int = firstLine; lineIndex <= lastLine; 
lineIndex++)
+            {
+                var curLine:TextFlowLine = flowComposer.getLineAt(lineIndex);
+                if (curLine.controller != controller)
+                    continue;
+
+                // skip until we find the lines in the last column
+                if (curLine.columnIndex != lastColumn)
+                    continue;
+
+                if (curLine.textLineExists && curLine.getTextLine().parent)
+                {
+                    if (firstVisibleLine < 0)
+                        firstVisibleLine = lineIndex;
+
+                    lastVisibleLine = lineIndex;
+                }
+            }
+
+            return [firstVisibleLine, lastVisibleLine];
+        }
+
+        /* Test Cases:  (explicit & wrap, vertical & horizontal, ltr, rtl)
+         - Page forward, backward
+         - Forward, backward by n lines
+         - Partial line visible
+         - On line boundary
+         - Forward, backward by n pixels
+         - Scroll to position horizontal scroll forward/backward (mimic typing 
off form field)
+         - Scroll to position when position is visible
+         - Scroll to position when position is partly visible 
(up/down/left/right)
+         - Scroll to end
+         - Scroll to start
+         */
+
+        private function pageForwardOrBackward(forward:Boolean):Array
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var controller:ContainerController = 
flowComposer.getControllerAt(0);
+            var blockProgression:String = 
textFlow.computedFormat.blockProgression;
+
+            var linePositionBefore:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
+
+            var panelSize:Number = (blockProgression == BlockProgression.TB) ? 
controller.compositionHeight : controller.compositionWidth;
+            var pageSize:Number = panelSize * .75;
+
+            if (!forward)
+                pageSize = -pageSize;
+
+            if (blockProgression == BlockProgression.TB)
+                controller.verticalScrollPosition += pageSize;
+            else
+                controller.horizontalScrollPosition -= pageSize;
+
+            flowComposer.updateAllControllers();
+
+            return linePositionBefore;
+        }
+
+        private function pageForward():void
+        {
+            var beforePosition:Array = pageForwardOrBackward(true);
+            var beforeFirstVisibleLine:int = beforePosition[0];
+            var beforeLastVisibleLine:int = beforePosition[1];
+
+            var textFlow:TextFlow = SelManager.textFlow;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var controller:ContainerController = 
flowComposer.getControllerAt(0);
+            var afterPosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
+            var afterFirstVisibleLine:int = afterPosition[0];
+            var afterLastVisibleLine:int = afterPosition[1];
+
+            // Check that we did scroll forward, and check that some text that 
was visible before is still visible.
+            assertTrue("PageForward didn't advance scroll", 
afterFirstVisibleLine > beforeFirstVisibleLine);
+            assertTrue("PageForward didn't overlap previous text", 
afterFirstVisibleLine < beforeLastVisibleLine);
+        }
+
+
+        private function pageBackward():void
+        {
+            var beforePosition:Array = pageForwardOrBackward(false);
+            var beforeFirstVisibleLine:int = beforePosition[0];
+            var beforeLastVisibleLine:int = beforePosition[1];
+
+            var textFlow:TextFlow = SelManager.textFlow;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var controller:ContainerController = 
flowComposer.getControllerAt(0);
+            var afterPosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
+            var afterFirstVisibleLine:int = afterPosition[0];
+            var afterLastVisibleLine:int = afterPosition[1];
+
+            // Check that we did scroll backward, and check that some text 
that was visible before is still visible.
+            assertTrue("PageBackward didn't reverse scroll", 
afterFirstVisibleLine < beforeFirstVisibleLine);
+            assertTrue("PageBackward didn't overlap previous text", 
afterLastVisibleLine > beforeFirstVisibleLine);
+        }
+
+        [Test]
+        public function scrollByPageTest():void
+        {
+            pageForward();
+            pageBackward();
+        }
+
+        private function pageForwardOrBackwardByLines(numberOfLines:int):void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var controller:ContainerController = 
flowComposer.getControllerAt(0);
+            var blockProgression:String = 
textFlow.computedFormat.blockProgression;
+
+            var beforePosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
+
+            var amount:Number = controller.getScrollDelta(numberOfLines);
+
+            if (blockProgression == BlockProgression.TB)
+                controller.verticalScrollPosition += amount;
+            else
+                controller.horizontalScrollPosition -= amount;
+
+            flowComposer.updateAllControllers();
+
+            var beforeFirstVisibleLine:int = beforePosition[0];
+            var beforeLastVisibleLine:int = beforePosition[1];
+
+            var afterPosition:Array = 
findFirstAndLastVisibleLine(flowComposer, controller);
+            var afterFirstVisibleLine:int = afterPosition[0];
+            var afterLastVisibleLine:int = afterPosition[1];
+
+            // Check that we did scroll forward, and check that some text that 
was visible before is still visible.
+            assertTrue("scrollMultipleLines didn't advance scroll correctly", 
afterFirstVisibleLine == beforeFirstVisibleLine + numberOfLines);
+        }
+
+        [Test]
+        [Ignore]
+        public function scrollMultipleLinesTest():void
+        {
+            pageForwardOrBackwardByLines(26);
+            pageForwardOrBackwardByLines(-13);
+            for (var i:int = 0; i < 6; ++i)
+                pageForwardOrBackwardByLines(1);
+        }
+
+        [Test]
+        public function scrollAndResizeTest():void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            var position:int = textFlow.textLength - 1;
+
+            // shrink it down
+            var w:Number = TestFrame.compositionWidth;
+            var h:Number = TestFrame.compositionHeight;
+            TestFrame.setCompositionSize(w / 2, h / 2);
+            textFlow.flowComposer.updateAllControllers();
+
+            // select at the end
+            SelManager.selectRange(position, position);
+            TestFrame.scrollToRange(position, position);
+
+            // restore size
+            TestFrame.setCompositionSize(w, h);
+            textFlow.flowComposer.updateAllControllers();
+
+            // verify that the last line is in view
+            var afterPosition:Array = 
findFirstAndLastVisibleLine(textFlow.flowComposer, TestFrame);
+            var afterFirstVisibleLine:int = afterPosition[0];
+            var afterLastVisibleLine:int = afterPosition[1];
+            assertTrue("scrollAndResizeTest last line no longer in view", 
afterLastVisibleLine == textFlow.flowComposer.numLines - 1);
+        }
+
+        /* ************************************************************** */
+        /* nextPage() test */
+        /* ************************************************************** */
+
+        [Test]
+        public function nextPageTest():void
+        {
+            //Create a new TextFlow, IFlowComposer, ContainerController
+            var textFlow:TextFlow = SelManager.textFlow;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var controller:ContainerController = 
flowComposer.getControllerAt(0);
+
+            //set a textRange.
+            var textRange:TextRange = new TextRange(textFlow, 0, 10);
+
+            NavigationUtil.nextPage(textRange, false);
+
+            //composes all the text up-to date.
+            flowComposer.updateAllControllers();
+
+            //find what the first line displayed in a scrolling container is
+            var firstLineIndex:int = findFirstAndLastVisibleLine(flowComposer, 
controller)[0];
+
+            //verify the position of textRange after nextPage applied
+            assertTrue("first line index at first line is " + firstLineIndex + 
" and it should be large than 0",
+                    firstLineIndex > 0);
+        }
+
+        /* ************************************************************** */
+        /* previousPage() test */
+        /* ************************************************************** */
+        [Test]
+        public function previousPageTest():void
+        {
+            //Create a new TextFlow, IFlowComposer, ContainerController?
+            var textFlow:TextFlow = SelManager.textFlow;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var controller:ContainerController = 
flowComposer.getControllerAt(0);
+            controller.verticalScrollPosition = 100;
+
+            //set a textRange.
+            var textRange:TextRange = new TextRange(textFlow, 1000, 1010);
+
+            //find text index at the first line in the visible area befor 
change
+            var firstLineIndexBefore:int = 
findFirstAndLastVisibleLine(flowComposer, controller)[0];
+
+            NavigationUtil.previousPage(textRange, false);
+
+            //composes all the text up-to date.
+            flowComposer.updateAllControllers();
+
+            //find text index at the first line in the visible area after 
change
+            var firstLineIndexAfter:int = 
findFirstAndLastVisibleLine(flowComposer, controller)[0];
+
+            //verify the position of textRange after previousPage applied
+            assertTrue("last line index at last line is " + 
firstLineIndexAfter + " and it should be less than " + firstLineIndexBefore,
+                    firstLineIndexAfter < firstLineIndexBefore);
+        }
+
+
+        private function testScrollLimitWithString(content:String):void
+            // Scrolling from a long line to a short line should not scroll 
horizontally if end of short line already in view
+        {
+            var textFlow:TextFlow = TextConverter.importToFlow(content, 
TextConverter.PLAIN_TEXT_FORMAT);
+            textFlow.lineBreak = LineBreak.EXPLICIT;
+            var flowComposer:IFlowComposer = textFlow.flowComposer;
+            var s:Sprite = new Sprite();
+            var controller:ContainerController = new ContainerController(s, 
100, 30);
+            flowComposer.addController(controller);
+            var selectionManager:SelectionManager = new SelectionManager();
+            textFlow.interactionManager = selectionManager;
+            selectionManager.selectRange(0, 0);
+            selectionManager.setFocus();
+            flowComposer.updateAllControllers();
+
+            // Set cursor at the end of the 1st line
+            var firstLine:TextFlowLine = flowComposer.getLineAt(0);
+            selectionManager.selectRange(firstLine.absoluteStart + 
firstLine.textLength - 1, firstLine.absoluteStart + firstLine.textLength - 1);
+            controller.scrollToRange(selectionManager.absoluteStart, 
selectionManager.absoluteEnd);
+            var secondLine:TextFlowLine = flowComposer.getLineAt(1);
+            var expectScrolling:Boolean = firstLine.textLength > 
secondLine.textLength;
+
+
+            // Scroll down and back up
+            scrollByKey(textFlow, Keyboard.DOWN, expectScrolling);
+            scrollByKey(textFlow, Keyboard.UP, false);
+            scrollByKey(textFlow, Keyboard.DOWN, false);
+            scrollByKey(textFlow, Keyboard.UP, false);
+
+            textFlow.interactionManager.selectRange(secondLine.absoluteStart + 
secondLine.textLength - 1, secondLine.absoluteStart + secondLine.textLength - 
1);
+            controller.scrollToRange(selectionManager.absoluteStart, 
selectionManager.absoluteEnd);
+            flowComposer.updateAllControllers();
+
+            // Scroll up and back down
+            scrollByKey(textFlow, Keyboard.UP, !expectScrolling);
+            scrollByKey(textFlow, Keyboard.DOWN, false);
+            scrollByKey(textFlow, Keyboard.UP, false);
+            scrollByKey(textFlow, Keyboard.DOWN, false);
+        }
+
+        private function scrollByKey(textFlow:TextFlow, keyCode:int, 
expectScrolling:Boolean):void
+            // Scroll one line, and check that we only scrolled in vertical 
direction
+        {
+            var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
+
+            // Save off old logical horizontal scroll pos
+            var blockProgression:String = 
textFlow.computedFormat.blockProgression;
+            var logicalHorizontalScrollPosition:Number = (blockProgression == 
BlockProgression.TB) ? controller.horizontalScrollPosition : 
controller.verticalScrollPosition;
+
+            var kEvent:KeyboardEvent = new 
KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, keyCode);
+            
SelectionManager(textFlow.interactionManager).keyDownHandler(kEvent);
+
+            if (expectScrolling)
+                assertTrue("Logical horizontal scroll position should have 
changed",
+                        logicalHorizontalScrollPosition != ((blockProgression 
== BlockProgression.TB) ? controller.horizontalScrollPosition : 
controller.verticalScrollPosition));
+            else
+                assertTrue("Logical horizontal scroll position should not have 
changed",
+                        logicalHorizontalScrollPosition == ((blockProgression 
== BlockProgression.TB) ? controller.horizontalScrollPosition : 
controller.verticalScrollPosition));
+        }
+
+        /**
+         * Test for Watson 2476646
+         */
+        [Test]
+        public function scrollUpDownLimitTest():void
+            // Scrolling from a long line to a short line or vice versa should 
not scroll horizontally if end of short line already in view
+        {
+            testScrollLimitWithString("A B C D E F G\n" + "A B C D E F G H I J 
K L M N O P Q R S T U V W X Y Z");
+            testScrollLimitWithString("A B C D E F G H I J K L M N O P Q R S T 
U V W X Y Z\n" + "A B C D E F G");
+        }
+
+        [Test]
+        public function scrollToSelectionAfterParagraphInsertion():void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            textFlow.flowComposer.updateAllControllers();
+            SelManager.selectRange(textFlow.textLength, textFlow.textLength);
+            var paragraphCount:int = textFlow.computedFormat.blockProgression 
== BlockProgression.RL ? 12 : 7;
+            for (var i:int = 0; i < paragraphCount; ++i)
+                SelManager.splitParagraph();
+            var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
+            var firstLineIndex:int = 
findFirstAndLastVisibleLine(textFlow.flowComposer, controller)[0];
+            assertTrue("Expected view to scroll to keep selection in view", 
firstLineIndex > 0);
+        }
+
+        [Test]
+        public function scrollWithAdormentsAndInlines():void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            textFlow.flowComposer.updateAllControllers();
+            // underline everything
+            SelManager.selectAll();
+            var format:TextLayoutFormat = new TextLayoutFormat();
+            format.textDecoration = TextDecoration.UNDERLINE;
+            (SelManager as IEditManager).applyLeafFormat(format);
+            // insert a graphic
+            var shape:Shape = new Shape;
+            shape.graphics.beginFill(0xff0000);
+            shape.graphics.drawRect(0, 0, 25, 25);
+            shape.graphics.endFill();
+            SelManager.selectRange(0, 0);
+            (SelManager as IEditManager).insertInlineGraphic(shape, 25, 25);
+            // now page forward and then back
+            pageForward();
+            pageBackward();
+            // check rendering - there should be decorations
+        }
+
+        [Test]
+        public function scrollWithInsideList():void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            textFlow.flowComposer.updateAllControllers();
+            // now page forward and then back
+            pageForward();
+            pageBackward();
+            // check rendering - the inside list should have proper markers
+        }
+
+        private function createFilledSprite(width:Number, height:Number, 
color:int):Sprite
+        {
+            var sprite:Sprite = new Sprite();
+            sprite.graphics.beginFill(color);  // red
+            sprite.graphics.drawRect(0, 0, width, height);
+            sprite.graphics.endFill();
+            return sprite;
+        }
+
+        [Test]
+        public function largeLastLine():void           // 2739996
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            SelManager.selectRange(textFlow.textLength - 1, 
textFlow.textLength - 1);
+            SelManager.insertInlineGraphic(createFilledSprite(200, 200, 
0xff0000), 200, 200, Float.NONE);
+            textFlow.flowComposer.updateAllControllers();
+            SelManager.selectRange(0, 0);
+            textFlow.flowComposer.getControllerAt(0).scrollToRange(0, 0);
+            var insertLineCount:int = textFlow.computedFormat.blockProgression 
== BlockProgression.RL ? 11 : 6;
+            for (var i:int = 0; i < insertLineCount; ++i)              // 
gradually force the inline out of view
+                SelManager.splitParagraph();
+            var firstVisibleLine:int = 
findFirstAndLastVisibleLine(textFlow.flowComposer, 
textFlow.flowComposer.getControllerAt(0))[0];
+            assertTrue("Shouldn't scroll down yet", firstVisibleLine == 0);
+        }
+
+        /**
+         *  mjzhang : Watson#2819924 Error #1009 in 
flashx.textLayout.container::ContainerController::updateGraphics()
+         */
+        [Test]
+        public function Bug2819924_case1():void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
+
+            for (var i:int = 0; i < 15; i++)
+            {
+                textFlow.addChild(TextConverter.importToFlow(
+                        '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";>xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx <img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 xxxx</TextFlow>',
+                        TextConverter.TEXT_LAYOUT_FORMAT
+                ).getChildAt(0));
+
+                textFlow.addChild(
+                        TextConverter.importToFlow(
+                                '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";>xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx</TextFlow>',
+                                TextConverter.TEXT_LAYOUT_FORMAT
+                        ).getChildAt(0));
+
+                controller.verticalScrollPosition += 50;
+                textFlow.flowComposer.updateAllControllers();
+            }
+        }
+
+        private var singleCT:SingleContainerTest = new SingleContainerTest();
+
+        /**
+         * mjzhang : Watson#2819924 Error #1009 in 
flashx.textLayout.container::ContainerController::updateGraphics()
+         */
+        [Test]
+        public function Bug2819924_case2():void
+        {
+            SelManager.insertInlineGraphic(singleCT, 600, 400, Float.NONE);
+        }
+
+        /**
+         * mjzhang : Watson#2819924 Error #1009 in 
flashx.textLayout.container::ContainerController::updateGraphics()  
+         */
+        [Test]
+        public function Bug2819924_case3():void
+        {
+            var textFlow:TextFlow = SelManager.textFlow;
+            var controller:ContainerController = 
textFlow.flowComposer.getControllerAt(0);
+
+            var str:String = "";
+            var i:int = 30;
+            while (i > 0)
+            {
+                str += i + "\n"
+                i--;
+            }
+
+            var tf:TextFlow = TextConverter.importToFlow(str, 
TextConverter.PLAIN_TEXT_FORMAT);
+            var flowElem:FlowElement = tf.getChildAt(0);
+            textFlow.addChild(flowElem);
+
+            textFlow.addChild(TextConverter.importToFlow(
+                    '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";><img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 </TextFlow>',
+                    TextConverter.TEXT_LAYOUT_FORMAT
+            ).getChildAt(0));
+
+
+            for (var j:int = 0; j < 100; j++)
+            {
+                textFlow.addChild(TextConverter.importToFlow("aaa", 
TextConverter.PLAIN_TEXT_FORMAT).getChildAt(0));
+                textFlow.addChild(TextConverter.importToFlow(
+                        '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";><img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 </TextFlow>',
+                        TextConverter.TEXT_LAYOUT_FORMAT
+                ).getChildAt(0));
+
+                controller.verticalScrollPosition += 10;
+                textFlow.flowComposer.updateAllControllers();
+            }
+
+            textFlow.flowComposer.updateAllControllers();
+        }
+
+        [Test]
+        public function bug2988852():void
+        {
+            var tf:TextFlow = SelManager.textFlow;
+            for (var i:int = 0; i < 15; i++)
+            {
+                tf.addChild(TextConverter.importToFlow(
+                        '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";>Alice was beginning to get very 
tired of sitting by her sister  on the bank, and of having nothing to do: once 
or twice she had peeped into the book her sister was reading, but it had no 
pictures or conversations in it, “and what is the use of a book,” thought 
Alice “without pictures or conversation?<img 
source="http://static.v41.skyrock.net/chat/chat20080110/images/smileys/3-blink.png"/>
 conversation?</TextFlow>',
+                        TextConverter.TEXT_LAYOUT_FORMAT
+                ).getChildAt(0));
+            }
+            tf.flowComposer.updateAllControllers();
+
+            SelManager.insertInlineGraphic(singleCT, "auto", "auto", 
Float.NONE, new SelectionState(tf, 500, 500));
+            var controller:ContainerController = 
tf.flowComposer.getControllerAt(0);
+            controller.verticalScrollPosition += 20;
+            tf.flowComposer.updateAllControllers();
+
+            controller.verticalScrollPosition += 2000;
+            tf.flowComposer.updateAllControllers();
+
+            controller.verticalScrollPosition -= 2100;
+            tf.flowComposer.updateAllControllers();
+
+            for (var scrollTimes:int = 0; scrollTimes < 10; scrollTimes++)
+            {
+                controller.verticalScrollPosition += (800 + 50 * scrollTimes);
+                tf.flowComposer.updateAllControllers();
+
+                controller.verticalScrollPosition -= (800 + 20 * scrollTimes);
+                tf.flowComposer.updateAllControllers();
+            }
+        }
+
+        [Test]
+        [Ignore]
+        public function twoColumnsTest():void
+        {
+            var tf:TextFlow = SelManager.textFlow;
+            for (var i:int = 0; i < 60; i++)
+            {
+                tf.addChildAt(0, TextConverter.importToFlow(
+                        '<TextFlow 
xmlns="http://ns.adobe.com/textLayout/2008";><list paddingRight="24" 
paddingLeft="24" listStyleType="upperAlpha"><li>upperAlpha 
item</li></list></TextFlow>',
+                        TextConverter.TEXT_LAYOUT_FORMAT
+                ).getChildAt(0));
+            }
+            var controller:ContainerController = 
tf.flowComposer.getControllerAt(0);
+            controller.columnCount = 2;
+            tf.flowComposer.updateAllControllers();
+
+            controller.verticalScrollPosition += 100;
+            tf.flowComposer.updateAllControllers();
+            var tfl60:TextFlowLine = tf.flowComposer.getLineAt(59);
+            assertTrue("The 60th line should be on the stage after scrolling 
down 100 pixels", controller.container.contains(tfl60.getTextLine()));
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/SelectionTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/SelectionTest.as 
b/automation_tests/src/UnitTest/Tests/SelectionTest.as
index b2138d7..2e72cfd 100644
--- a/automation_tests/src/UnitTest/Tests/SelectionTest.as
+++ b/automation_tests/src/UnitTest/Tests/SelectionTest.as
@@ -51,7 +51,10 @@ package UnitTest.Tests
        
        import mx.utils.LoaderUtil;
 
-       public class SelectionTest extends VellumTestCase
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.asserts.fail;
+
+    public class SelectionTest extends VellumTestCase
        {
                public function SelectionTest(methodName:String, testID:String, 
testConfig:TestConfig, testCaseXML:XML=null)
                {
@@ -72,14 +75,14 @@ package UnitTest.Tests
                        VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
                }
 
-               public override function setUp():void
+               public override function setUpTest():void
                {
-                       super.setUp();
+                       super.setUpTest();
                }
 
-               public override function tearDown():void
+               public override function tearDownTest():void
                {
-                       super.tearDown();
+                       super.tearDownTest();
                }
 
                // Tests the default SelectionFormat

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/SimpleTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/SimpleTest.as 
b/automation_tests/src/UnitTest/Tests/SimpleTest.as
new file mode 100644
index 0000000..319fc5a
--- /dev/null
+++ b/automation_tests/src/UnitTest/Tests/SimpleTest.as
@@ -0,0 +1,37 @@
+/**
+ * Created with IntelliJ IDEA.
+ * User: piotr.zarzycki
+ * Date: 05.04.14
+ * Time: 11:55
+ * To change this template use File | Settings | File Templates.
+ */
+package UnitTest.Tests
+{
+
+    import org.flexunit.asserts.assertTrue;
+
+    public class SimpleTest
+    {
+        public function SimpleTest()
+        {
+        }
+
+        [Before]
+        public function setUp() : void
+        {
+            var ddd:Object = null;
+        }
+
+        [After]
+        public function tearDown():void
+        {
+            var ddd:Object = null;
+        }
+
+        [Test]
+        public function myTest():void
+        {
+            assertTrue(true);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/SpacingTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/SpacingTest.as 
b/automation_tests/src/UnitTest/Tests/SpacingTest.as
index 1047133..a689a28 100644
--- a/automation_tests/src/UnitTest/Tests/SpacingTest.as
+++ b/automation_tests/src/UnitTest/Tests/SpacingTest.as
@@ -35,7 +35,11 @@ package UnitTest.Tests
        import flashx.textLayout.formats.TextLayoutFormat;
        import flashx.textLayout.tlf_internal;
 
-       use namespace tlf_internal;
+    import org.flexunit.asserts.assertTrue;
+
+    import org.flexunit.asserts.fail;
+
+    use namespace tlf_internal;
 
        public class SpacingTest extends VellumTestCase
        {
@@ -55,9 +59,9 @@ package UnitTest.Tests
                        ts.addTestDescriptor(new TestDescriptor(SpacingTest, 
"spaceLeadingMarginTest", testConfig));
                }
 
-               public override function setUp():void
+               public override function setUpTest():void
                {
-                       super.setUp();
+                       super.setUpTest();
 
                        var ca:TextLayoutFormat = new 
TextLayoutFormat(TestFrame.format);
                        ca.columnCount = 1;

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/StyleTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/StyleTest.as 
b/automation_tests/src/UnitTest/Tests/StyleTest.as
index 6dd2efb..2aecda9 100644
--- a/automation_tests/src/UnitTest/Tests/StyleTest.as
+++ b/automation_tests/src/UnitTest/Tests/StyleTest.as
@@ -29,7 +29,9 @@ package UnitTest.Tests
        import flashx.textLayout.formats.TextAlign;
        import flashx.textLayout.formats.TextLayoutFormat;
 
-       public class StyleTest extends VellumTestCase
+    import org.flexunit.asserts.assertTrue;
+
+    public class StyleTest extends VellumTestCase
        {
                private var formatResolver:TestFormatResolver;
 
@@ -48,19 +50,19 @@ package UnitTest.Tests
                        VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
                }
 
-               public override function setUp():void
+               public override function setUpTest():void
                {
-                       super.setUp();
+                       super.setUpTest();
 
                        formatResolver = new TestFormatResolver();
                        TestFrame.textFlow.formatResolver = formatResolver;
                }
 
-               public override function tearDown():void
+               public override function tearDownTest():void
                {
                        TestFrame.textFlow.formatResolver = null;
 
-                       super.tearDown();
+                       super.tearDownTest();
                }
 
                public function basicStyleTest():void

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/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
index 13b11b5..f78776e 100644
--- a/automation_tests/src/UnitTest/Tests/TCYTests.as
+++ b/automation_tests/src/UnitTest/Tests/TCYTests.as
@@ -51,7 +51,14 @@ package UnitTest.Tests
        import flashx.textLayout.conversion.TextConverter;
        
        import mx.containers.Canvas;
-       use namespace tlf_internal;
+
+    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
        {
@@ -447,7 +454,10 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(4,7);
                        var tcy:TCYElement = editmanager.applyTCY(true);
-                       
tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_DOWN, 
addAsync(checkMouseDownEvent,2500,null),false,0,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();
@@ -466,7 +476,7 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(0, 0);
                }
-               
+
                public function tcyMouseClickEventMirrorTest():void     
                {       
                        SelManager.selectAll();
@@ -487,7 +497,10 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(4,7);
                        var tcy:TCYElement = editmanager.applyTCY(true);
-                       
tcy.getEventMirror().addEventListener(FlowElementMouseEvent.CLICK, 
addAsync(checkMouseClickEvent,2500,null),false,0,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();
@@ -511,7 +524,12 @@ package UnitTest.Tests
                        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();
@@ -532,7 +550,10 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(4,7);
                        var tcy:TCYElement = editmanager.applyTCY(true);
-                       
tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_MOVE, 
addAsync(checkMouseMoveEvent,2500,null),false,0,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();
@@ -575,7 +596,10 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(4,7);
                        var tcy:TCYElement = editmanager.applyTCY(true);
-                       
tcy.getEventMirror().addEventListener(FlowElementMouseEvent.MOUSE_UP, 
addAsync(checkMouseUpEvent,2500,null),false,0,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();
@@ -616,7 +640,10 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(4,7);
                        var tcy:TCYElement = editmanager.applyTCY(true);
-                       
tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OVER, 
addAsync(checkMouseRollOverEvent,2500,null),false,0,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();
@@ -660,7 +687,10 @@ package UnitTest.Tests
                        tf.interactionManager = editmanager;
                        editmanager.selectRange(4,7);
                        var tcy:TCYElement = editmanager.applyTCY(true);
-                       
tcy.getEventMirror().addEventListener(FlowElementMouseEvent.ROLL_OUT, 
addAsync(checkMouseRollOutEvent,2500,null),false,0,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();
@@ -736,38 +766,43 @@ package UnitTest.Tests
                }
                
                
-               private function 
checkMouseDownEvent(e:FlowElementMouseEvent):void
+               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):void
+               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):void
+               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):void
+               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):void
+               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):void
+               private function 
checkMouseRollOutEvent(e:FlowElementMouseEvent, passThroughData:Object):void
                {
                        assertTrue("mouseRollOut event is not fired", !(e is 
ErrorEvent));
                        tf.removeEventListener(FlowElementMouseEvent.ROLL_OUT, 
checkMouseRollOutEvent);
                }
-               
-               public function addDivInTcyTest():void  
+
+        private function tcyTestsTimeout(passThroughData:Object = null):void
+        {
+            fail(passThroughData.timeOut);
+        }
+
+        public function addDivInTcyTest():void
                {       
                        SelManager.selectAll();
                        SelManager.deleteText();

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TabTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TabTest.as 
b/automation_tests/src/UnitTest/Tests/TabTest.as
index 7e46fc4..2195826 100644
--- a/automation_tests/src/UnitTest/Tests/TabTest.as
+++ b/automation_tests/src/UnitTest/Tests/TabTest.as
@@ -30,8 +30,10 @@ package UnitTest.Tests
        import flashx.textLayout.formats.TabStopFormat;
        import flashx.textLayout.formats.TextLayoutFormat;
 
+    import org.flexunit.asserts.assertTrue;
 
-       public class TabTest extends VellumTestCase
+
+    public class TabTest extends VellumTestCase
        {
                public function TabTest(methodName:String, testID:String, 
testConfig:TestConfig, testCaseXML:XML=null)
                {

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TableBackgroundTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TableBackgroundTest.as 
b/automation_tests/src/UnitTest/Tests/TableBackgroundTest.as
index 3c98628..37a5b32 100644
--- a/automation_tests/src/UnitTest/Tests/TableBackgroundTest.as
+++ b/automation_tests/src/UnitTest/Tests/TableBackgroundTest.as
@@ -44,8 +44,10 @@ package UnitTest.Tests
        import flashx.textLayout.tlf_internal;
        
        import mx.containers.Canvas;
-       
-       use namespace tlf_internal;
+
+    import org.flexunit.asserts.assertTrue;
+
+    use namespace tlf_internal;
        
        public class TableBackgroundTest extends VellumTestCase
        {
@@ -64,17 +66,17 @@ package UnitTest.Tests
                        super(methodName, testID, testConfig, testCaseXML);
                }
                
-               override public function setUp():void
+               override public function setUpTest():void
                {
                        // TODO Auto Generated method stub
-                       super.setUp();
+                       super.setUpTest();
                        _canvas = VellumTestCase.testApp.getDisplayObject() as 
Canvas;
                }
                
                
-               override public function tearDown():void
+               override public function tearDownTest():void
                {       
-                       super.tearDown();
+                       super.tearDownTest();
                }
                
                public static function suite(testConfig:TestConfig, 
ts:TestSuiteExtended):void

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TableTests.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TableTests.as 
b/automation_tests/src/UnitTest/Tests/TableTests.as
index c775658..bc8ed99 100644
--- a/automation_tests/src/UnitTest/Tests/TableTests.as
+++ b/automation_tests/src/UnitTest/Tests/TableTests.as
@@ -48,6 +48,8 @@ package UnitTest.Tests
        
        import mx.containers.Canvas;
 
+    import org.flexunit.asserts.assertTrue;
+
     use namespace tlf_internal;
        
        public class TableTests extends VellumTestCase
@@ -152,16 +154,16 @@ package UnitTest.Tests
             ts.addTestDescriptor (new TestDescriptor 
(TableTests,"callTestMethod", testConfig, testXML) );
                }
                
-               override public function setUp() : void
+               override public function setUpTest() : void
                {
-                       super.setUp();
+                       super.setUpTest();
                        initializeSourceTextFlow();
                        initializeFlow();
                }
                
-               override public function tearDown(): void
+               override public function tearDownTest(): void
                {
-                       super.tearDown();
+                       super.tearDownTest();
                }
                
         public function callTestMethod():void

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TextContainerManagerTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TextContainerManagerTest.as 
b/automation_tests/src/UnitTest/Tests/TextContainerManagerTest.as
index 7c22fde..2380592 100644
--- a/automation_tests/src/UnitTest/Tests/TextContainerManagerTest.as
+++ b/automation_tests/src/UnitTest/Tests/TextContainerManagerTest.as
@@ -59,7 +59,11 @@ package UnitTest.Tests
        import flashx.textLayout.formats.TextLayoutFormat;
        import flashx.textLayout.tlf_internal;
 
-       use namespace tlf_internal;
+    import org.flexunit.asserts.assertTrue;
+
+    import org.flexunit.asserts.fail;
+
+    use namespace tlf_internal;
 
        import mx.containers.Canvas;
        import mx.core.ByteArrayAsset;
@@ -97,7 +101,7 @@ package UnitTest.Tests
                        VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
                }
 
-               override public function setUp() : void
+               override public function setUpTest() : void
                {
                        cleanUpTestApp();
                        TestDisplayObject = testApp.getDisplayObject();
@@ -107,7 +111,7 @@ package UnitTest.Tests
                        }
                        else
                        {
-                               fail ("Did not get a blank canvas to work 
with");
+                               fail("Did not get a blank canvas to work with");
                        }
                }
 
@@ -500,7 +504,7 @@ package UnitTest.Tests
                        testTCM.compositionHeight = 50;
                        testTCM.updateContainer();
                }
-               var selectionChanged:Boolean = false;
+               private var selectionChanged:Boolean = false;
                public function tcmSelectionTest():void
                {
                        var sprite:Sprite = new Sprite();
@@ -1009,7 +1013,7 @@ package UnitTest.Tests
                public function setTextDamageTest():void
                {
                        tempTCM = addTCM();
-                       tempTCM.addEventListener(DamageEvent.DAMAGE, 
addAsync(damageHandler, 1000, null));
+                       //tempTCM.addEventListener(DamageEvent.DAMAGE, 
addAsync(damageHandler, 1000, null));
                        tempTCM.setText("test");
                }
 

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TextFlowEditTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TextFlowEditTest.as 
b/automation_tests/src/UnitTest/Tests/TextFlowEditTest.as
index c9f199c..53f508c 100644
--- a/automation_tests/src/UnitTest/Tests/TextFlowEditTest.as
+++ b/automation_tests/src/UnitTest/Tests/TextFlowEditTest.as
@@ -34,7 +34,9 @@ package UnitTest.Tests
 
        import mx.utils.LoaderUtil;
 
-       public class TextFlowEditTest extends VellumTestCase
+    import org.flexunit.asserts.assertTrue;
+
+    public class TextFlowEditTest extends VellumTestCase
        {
                public function TextFlowEditTest(methodName:String, 
testID:String, testConfig:TestConfig, testXML:XML = null)
                {

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TextFlowTextLineFactoryTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TextFlowTextLineFactoryTest.as 
b/automation_tests/src/UnitTest/Tests/TextFlowTextLineFactoryTest.as
index 9806b38..8ecaf22 100644
--- a/automation_tests/src/UnitTest/Tests/TextFlowTextLineFactoryTest.as
+++ b/automation_tests/src/UnitTest/Tests/TextFlowTextLineFactoryTest.as
@@ -39,7 +39,11 @@ package UnitTest.Tests
        import flashx.textLayout.formats.LineBreak;
        import flashx.textLayout.formats.TextLayoutFormat;
        import flashx.textLayout.formats.VerticalAlign;
-       use namespace tlf_internal;
+
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.asserts.fail;
+
+    use namespace tlf_internal;
 
        import mx.utils.UIDUtil;
        import flashx.textLayout.edit.EditManager;

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/TextLineFilterTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/TextLineFilterTest.as 
b/automation_tests/src/UnitTest/Tests/TextLineFilterTest.as
index 559f70f..0fcd831 100644
--- a/automation_tests/src/UnitTest/Tests/TextLineFilterTest.as
+++ b/automation_tests/src/UnitTest/Tests/TextLineFilterTest.as
@@ -59,7 +59,10 @@ package UnitTest.Tests
        import mx.core.ByteArrayAsset;
        import mx.utils.LoaderUtil;
 
-       use namespace tlf_internal;
+    import org.flexunit.asserts.assertTrue;
+    import org.flexunit.asserts.fail;
+
+    use namespace tlf_internal;
 
        public class TextLineFilterTest extends VellumTestCase
        {
@@ -129,7 +132,7 @@ package UnitTest.Tests
                        VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
                }
 
-               override public function setUp() : void
+               override public function setUpTest() : void
                {
                        cleanUpTestApp();
                        TestDisplayObject = testApp.getDisplayObject();
@@ -139,7 +142,7 @@ package UnitTest.Tests
                        }
                        else
                        {
-                               fail ("Did not get a blank canvas to work 
with");
+                               fail("Did not get a blank canvas to work with");
                        }
 
                }
@@ -577,7 +580,7 @@ package UnitTest.Tests
                        if(!callback)
                        {
                                callback = true;
-                               
tf.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,addAsync(embeddedInlineGraphics,2500,null),false,0,true);
    
+                               
//tf.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,addAsync(embeddedInlineGraphics,2500,null),false,0,true);
                                var TestCanvas:Canvas;
                                TestDisplayObject = testApp.getDisplayObject();
                                if (TestDisplayObject)
@@ -621,7 +624,7 @@ package UnitTest.Tests
                                var img:InlineGraphicElement = tf.findLeaf(3) 
as InlineGraphicElement;
                                if(img.status != 
InlineGraphicElementStatus.READY)
                                {
-                                       
tf.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,addAsync(embeddedInlineGraphics,2500,null),false,0,true);
+                                       
//tf.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,addAsync(embeddedInlineGraphics,2500,null),false,0,true);
                                }
                        }
                        

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/UndoRedoTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/UndoRedoTest.as 
b/automation_tests/src/UnitTest/Tests/UndoRedoTest.as
index ecf5a2c..b0bfcee 100644
--- a/automation_tests/src/UnitTest/Tests/UndoRedoTest.as
+++ b/automation_tests/src/UnitTest/Tests/UndoRedoTest.as
@@ -35,7 +35,10 @@ package UnitTest.Tests
        import flashx.textLayout.operations.ApplyLinkOperation;
        
        import flashx.textLayout.tlf_internal;
-       use namespace tlf_internal;
+
+    import org.flexunit.asserts.assertTrue;
+
+    use namespace tlf_internal;
        /** Test the state of selection after each operation is done, undone, 
and redone.
         */
        public class UndoRedoTest extends VellumTestCase
@@ -94,7 +97,7 @@ package UnitTest.Tests
                        editManager.selectRange(1,posOfSelection);
                        editManager.doOperation(new  
ApplyLinkOperation(editManager.getSelectionState(), "http://www.yahoo.com";, 
"_self", true));
                        var resultString:String = editManager.errors;
-                       assertTrue ("Undo and Redo not successfully. " + 
resultString, resultString == "");
+                       assertTrue("Undo and Redo not successfully. " + 
resultString, resultString == "");
                }
 
                

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/VerticalScrollingTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/VerticalScrollingTest.as 
b/automation_tests/src/UnitTest/Tests/VerticalScrollingTest.as
index 77a2230..86ec159 100644
--- a/automation_tests/src/UnitTest/Tests/VerticalScrollingTest.as
+++ b/automation_tests/src/UnitTest/Tests/VerticalScrollingTest.as
@@ -31,9 +31,10 @@ package UnitTest.Tests
        import flashx.textLayout.formats.BlockProgression;
        import flashx.textLayout.elements.TextFlow;
 
+    import org.flexunit.asserts.assertTrue;
 
 
-       public class VerticalScrollingTest extends VellumTestCase
+    public class VerticalScrollingTest extends VellumTestCase
        {
                // List of available keyboard gestures
                // Note that on Mac: CTRL == COMMAND
@@ -103,17 +104,17 @@ package UnitTest.Tests
                        VellumTestCase.suiteFromXML(testCaseClass, testListXML, 
testConfig, ts);
                }
 
-               public override function setUp():void
+               public override function setUpTest():void
                {
                        // Booga - Need to load up the test file here.
 
-                       super.setUp();
+                       super.setUpTest();
                }
 
-               public override function tearDown():void
+               public override function tearDownTest():void
                {
                        // Restore default configurations
-                       super.tearDown();
+                       super.tearDownTest();
                }
 
 

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/UnitTest/Tests/WritingModeTest.as
----------------------------------------------------------------------
diff --git a/automation_tests/src/UnitTest/Tests/WritingModeTest.as 
b/automation_tests/src/UnitTest/Tests/WritingModeTest.as
index 74d3bfb..7b35e35 100644
--- a/automation_tests/src/UnitTest/Tests/WritingModeTest.as
+++ b/automation_tests/src/UnitTest/Tests/WritingModeTest.as
@@ -29,7 +29,9 @@ package UnitTest.Tests
        import flashx.textLayout.formats.BlockProgression;
        import flashx.textLayout.formats.Direction;
 
-       public class WritingModeTest extends VellumTestCase
+    import org.flexunit.asserts.assertTrue;
+
+    public class WritingModeTest extends VellumTestCase
        {
                public function WritingModeTest(methodName:String, 
testID:String, testConfig:TestConfig, testCaseXML:XML=null)
                {

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/perfAppTests/VellumAliceTestCanvas.mxml
----------------------------------------------------------------------
diff --git a/automation_tests/src/perfAppTests/VellumAliceTestCanvas.mxml 
b/automation_tests/src/perfAppTests/VellumAliceTestCanvas.mxml
index 290501a..2f19d0c 100644
--- a/automation_tests/src/perfAppTests/VellumAliceTestCanvas.mxml
+++ b/automation_tests/src/perfAppTests/VellumAliceTestCanvas.mxml
@@ -47,8 +47,10 @@
                        import mx.controls.Text;
                        import mx.core.ByteArrayAsset;
 
-                       
-               use namespace tlf_internal;
+            import org.flexunit.asserts.assertTrue;
+
+
+            use namespace tlf_internal;
                
                private static var factory:TextFlowTextLineFactory = new 
TextFlowTextLineFactory();
                
@@ -161,8 +163,9 @@
                        {
                                lineHolder.rawChildren.removeChildAt(0);
                        }
-                               
-                       CONFIG::debug { 
assert(lineHolder.rawChildren.numChildren == 0,"bad test"); }           
+
+            assertTrue(lineHolder.rawChildren.numChildren == 0,"bad test");
+                       //CONFIG::debug { 
assert(lineHolder.rawChildren.numChildren == 0,"bad test"); }
                        
                        var begTime:int = getTimer();
                        var example:DisplayObject = 
buildVellumFactory(currWidthVal);

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/automation_tests/src/perfAppTests/VellumTweenTestCanvas.mxml
----------------------------------------------------------------------
diff --git a/automation_tests/src/perfAppTests/VellumTweenTestCanvas.mxml 
b/automation_tests/src/perfAppTests/VellumTweenTestCanvas.mxml
index bcc046d..08fde2a 100644
--- a/automation_tests/src/perfAppTests/VellumTweenTestCanvas.mxml
+++ b/automation_tests/src/perfAppTests/VellumTweenTestCanvas.mxml
@@ -48,7 +48,9 @@
        import mx.collections.ArrayCollection;
        import mx.controls.Text;
 
-       use namespace tlf_internal;
+            import org.flexunit.asserts.assertTrue;
+
+            use namespace tlf_internal;
 
                private static var factory:StringTextLineFactory = new 
StringTextLineFactory();
                
@@ -171,8 +173,10 @@
                        {
                                lineHolder.rawChildren.removeChildAt(0);
                        }
-                               
-                       CONFIG::debug { 
assert(lineHolder.rawChildren.numChildren == 0,"bad test"); }
+
+            assertTrue(lineHolder.rawChildren.numChildren == 0,"bad test");
+
+               //      CONFIG::debug { 
assert(lineHolder.rawChildren.numChildren == 0,"bad test"); }
                                
                        //lineHolder.visible = false;                   
                        

http://git-wip-us.apache.org/repos/asf/flex-tlf/blob/cad064e0/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index 4fffecb..531710c 100644
--- a/build.xml
+++ b/build.xml
@@ -22,7 +22,7 @@
        <property file="${basedir}/build.properties"/>
     <!-- Specify a FLEX_HOME in local.properties or
          Override on cmd line with -D=FLEX_HOME=path. -->
-       <property file="${basedir}/local.properties"/>
+       <!--<property file="${basedir}/local.properties"/>-->
     <!-- Default Flex SDK is the trunk.  Override on cmd line with 
-D=FLEX_HOME=path. -->
        <property name="FLEX_HOME" value="${basedir}/../flex-sdk"/>
        <echo>FLEX_HOME is ${FLEX_HOME}</echo>
@@ -190,7 +190,7 @@
        <target name="testApps" description="Builds TLF test application">
                <mxmlc fork="${forkValue}"      
file="${testApps.dir}/src/flowCss.css" 
                                keep-generated-actionscript="false"
-                               
output="${output.dir}/apps/testApps/bin/Flow.swf">
+                               
output="${output.dir}/apps/automation_apps/bin/Flow.swf">
                        <jvmarg line="${jvm.args}"/>
                        <library-path/>
                        <library-path dir="${output.dir}" 
includes="textLayout.swc" append="true"/>
@@ -214,7 +214,7 @@
 
                <mxmlc fork="${forkValue}"      
file="${testApps.dir}/src/Flow.mxml" 
                                keep-generated-actionscript="false"
-                               
output="${output.dir}/apps/testApps/bin/Flow.swf">
+                               
output="${output.dir}/apps/automation_apps/bin/Flow.swf">
                        
                        <default-size width="1100" height="550" />
                        <jvmarg line="${jvm.args}"/>
@@ -341,10 +341,12 @@
                                
output="${output.dir}/apps/automation_apps/bin/VellumUnit.swf">
                        <jvmarg line="${jvm.args}"/>
                        <library-path/>
+
                        <library-path dir="${output.dir}" 
includes="textLayout.swc"             append="true"/>
                        <library-path 
dir="${output.dir}/apps/automation_apps/bin" includes="automation_core.swc"     
  append="true"/>
                        <library-path 
dir="${output.dir}/apps/automation_apps/bin" includes="automation_tests.swc"    
  append="true"/>
-                       <library-path dir="${automation_core.dir}/libs" 
includes="flexunit.swc"                 append="true"/>
+                       <library-path dir="${automation_apps.dir}/libs" 
includes="flexunit.swc"                 append="true"/>
+            <library-path dir="${automation_apps.dir}/libs" 
includes="flexunit-uilistener.swc"                 append="true"/>
 
                        <!-- External swcs -->
                        <library-path dir="${flex.sdk.frameworks}/libs/mx/" 
includes="mx.swc" append="true"/><!-- for Flex SDK 4.5 -->
@@ -357,10 +359,10 @@
                        <library-path dir="${flex.sdk.frameworks}/libs/" 
includes="utilities.swc" append="true"/>
                        <library-path 
dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="framework_rb.swc" 
append="true"/> 
                        <library-path 
dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="rpc_rb.swc" 
append="true"/>
-                       <library-path 
dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="spark_rb.swc" 
append="true"/> 
+                       <library-path 
dir="${flex.sdk.frameworks}/locale/${flex.locale}/" includes="spark_rb.swc" 
append="true"/>
+            <library-path dir="${flex.sdk.frameworks}/locale/${flex.locale}/" 
includes="textLayout_rb.swc" append="true"/>
 
-
-                       <static-link-runtime-shared-libraries/>
+            <static-link-runtime-shared-libraries/>
 
                        <define name="CONFIG::debug"                    
value="${dbg}"/>
                        <define name="CONFIG::release"                  
value="${rel}"/>

Reply via email to