////////////////////////////////////////////////////////////////////////////////
//
//  Licensed to the Apache Software Foundation (ASF) under one or more
//  contributor license agreements.  See the NOTICE file distributed with
//  this work for additional information regarding copyright ownership.
//  The ASF licenses this file to You under the Apache License, Version 2.0
//  (the "License"); you may not use this file except in compliance with
//  the License.  You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package
{

    import UnitTest.Tests.AccessibilityMethodsTest;
    import UnitTest.Tests.AllCharAttributeTest;
    import UnitTest.Tests.AllContAttributeTest;
    import UnitTest.Tests.AllEventTest;
    import UnitTest.Tests.AllParaAttributeTest;
    import UnitTest.Tests.AttributeTest;
    import UnitTest.Tests.BoundsAndAlignmentTest;
    import UnitTest.Tests.BoxTest;
    import UnitTest.Tests.CompositionTest;
    import UnitTest.Tests.ContainerAttributeTest;
    import UnitTest.Tests.ContainerTypeTest;
    import UnitTest.Tests.CrossContainerTest;
    import UnitTest.Tests.ElementOperationTest;
    import UnitTest.Tests.EventOverrideTest;
    import UnitTest.Tests.FLEX_34807_Test;
    import UnitTest.Tests.FactoryImportTest;
    import UnitTest.Tests.FloatTest;
    import UnitTest.Tests.FlowModelTest;
    import UnitTest.Tests.GeneralFunctionsTest;
    import UnitTest.Tests.HorizontalScrollingTest;
    import UnitTest.Tests.ImpliedParagraphTest;
    import UnitTest.Tests.ImportAPITest;
    import UnitTest.Tests.KeyboardGestureTest;
    import UnitTest.Tests.LeadingTest;
    import UnitTest.Tests.LinkTest;
    import UnitTest.Tests.ListTest;
    import UnitTest.Tests.LocaleTests;
    import UnitTest.Tests.MeasurementTest;
    import UnitTest.Tests.OperationTest;
    import UnitTest.Tests.ParagraphTest;
    import UnitTest.Tests.PasteWithMutliParagraph_FLEX_34876_Test;
    import UnitTest.Tests.ScrollToRangeTest;
    import UnitTest.Tests.ScrollingTest;
    import UnitTest.Tests.SelectionTest;
    import UnitTest.Tests.SpacingTest;
    import UnitTest.Tests.StyleTest;
    import UnitTest.Tests.TCYTest;
    import UnitTest.Tests.TabTest;
    import UnitTest.Tests.TextBlock_FLEX_35100_Test;
    import UnitTest.Tests.TextContainerManagerTest;
    import UnitTest.Tests.TextFlowEditTest;
    import UnitTest.Tests.TextFlowTextLineFactoryTest;
    import UnitTest.Tests.TextLineFilterTest;
    import UnitTest.Tests.UndoRedoTest;
    import UnitTest.Tests.VerticalScrollingTest;
    import UnitTest.Tests.WritingModeTest;

    [Suite(order=1)]
    [RunWith("org.flexunit.runners.Suite")]
    public dynamic class AllTestsSuite
    {
        public var generalFunctionsTest:GeneralFunctionsTest;
        public var factoryImportTest:FactoryImportTest;
        public var accessibilityMethodsTest:AccessibilityMethodsTest;
        public var allChartAttributeTest:AllCharAttributeTest;
        public var allContAttributeTest:AllContAttributeTest;
        public var allEventTest:AllEventTest;
        public var allParagraphAttributeTest:AllParaAttributeTest;
        public var attributeTest:AttributeTest;
        public var boxTest:BoxTest;
        public var compositionTest:CompositionTest;
        public var containerTypeTest:ContainerTypeTest;
        public var floatTest:FloatTest;
        public var operationTest:OperationTest;
        public var scrollingTest:ScrollingTest;
        public var containerAttributeTest:ContainerAttributeTest;
        public var boundsAndAlignmentTest:BoundsAndAlignmentTest;
        public var crossContainerTest:CrossContainerTest;
        public var elementOperationTest:ElementOperationTest;
        public var eventOverrideTest:EventOverrideTest;
        public var flowModelTest:FlowModelTest;
        public var writingModeTest:WritingModeTest;
        public var undoRedoTest:UndoRedoTest;
        public var textFlowEditTest:TextFlowEditTest;
        public var tabTest:TabTest;
        public var horizontalScrollingTest:HorizontalScrollingTest;
        public var impliedParagraphTest:ImpliedParagraphTest;
        public var importApiTest:ImportAPITest;
        public var keyboardGestureTest:KeyboardGestureTest;
        public var spacingTest:SpacingTest;
        public var verticalScrollingTest:VerticalScrollingTest;
        public var listTest:ListTest;
        public var linkTest:LinkTest;
        public var localeTest:LocaleTests;
        public var textLineFilterTest:TextLineFilterTest;
        public var textFlowTextLineFactoryTest:TextFlowTextLineFactoryTest;
        public var textContainerManagerTest:TextContainerManagerTest;
        public var tcyTest:TCYTest;
        public var styleTest:StyleTest;
        public var selectionTest:SelectionTest;
        public var paragraphTest:ParagraphTest;
        public var measurementTest:MeasurementTest;
        public var leadingTest:LeadingTest;
        public var scrollToRangeTest:ScrollToRangeTest;
        public var pasteWithMultiParagraph:PasteWithMutliParagraph_FLEX_34876_Test;
		public var flex_34807:FLEX_34807_Test;
        public var flex_35100:TextBlock_FLEX_35100_Test;
    }

}
