<?xml version="1.0" encoding="utf-8"?>
<!--

  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.

-->
<UnitTester testDir="Mirroring/properties/" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"  xmlns:m="http://ns.adobe.com/mxml/2009" xmlns="*" testSWF="Mirroring_Main.mxml">
    <!-- this set of lines form a template that must be in each unit test -->
    <fx:Script>
        <![CDATA[
            public static function init(o:DisplayObject):void { }
        ]]>
    </fx:Script>
    <fx:Metadata>
        <![CDATA[
        [Mixin]
        ]]>
    </fx:Metadata>
    <!-- end of set of lines that must be in each unit test -->
    <fx:Script>
        <![CDATA[
        
           import mx.core.LayoutDirection;
        ]]>
    </fx:Script>
    <testCases>
        
        
        <TestCase testID="Mirroring_layoutDirection_default" keywords="[Mirroring, layoutDirection]" description="Check the default value of the layoutDirection style.">
            <setup>
                <ResetComponent target="vgroup1" className="comps.VGroupComp" waitEvent="updateComplete" waitTarget="vgroup1"/>
            </setup>
            <body>
                <AssertPropertyValue target="vgroup1" propertyName="layoutDirection" valueExpression="value=LayoutDirection.LTR" />
            </body>
        </TestCase>
        
        
    </testCases>
</UnitTester>
