<?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="containers/tabnavigator/Styles/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="TabNavigator_Basic_Mirroring.mxml">

    <!-- this set of lines form a template that must be in each unit test -->
    <mx:Script>
    <![CDATA[
    public static function init(o:DisplayObject):void
    {
    }                   
    ]]>
    </mx:Script>
    <mx:Metadata>
    <![CDATA[
        [Mixin]
    ]]>
    </mx:Metadata>  
    <!-- end of set of lines that must be in each unit test -->

    <mx:Script>
    <![CDATA[

    import mx.containers.* 
    import mx.controls.*
    import mx.styles.StyleManager;
    import mx.managers.SystemManager;

        
        
    ]]>
    
    </mx:Script>

    <testCases>
    <!--    Styles  -->
        <TestCase testID="TabNavigator_layoutDirection_RTL_MXML" keywords="[TabNavigator, layoutDirection, Mirroring]" description="Set layoutDirection=rtl on the parent of a tabnavigator in mxml." >
            <body>
                <AssertStyleValue target="tn2.tab1" styleName="layoutDirection" value="rtl" />
                <CompareBitmap target="tn2.tab1" url="../Styles/baselines/$testID.png" timeout="5000" numColorVariances="4" maxColorVariance="16" />
            </body>
        </TestCase>
        <TestCase testID="TabNavigator_layoutDirection_RTL_onParent" keywords="[TabNavigator, layoutDirection, Mirroring]" description="Set layoutDirection=rtl on the parent of a tabnavigator in as." >
            <setup>
                <ResetComponent target="tn" className="TNComp4" waitTarget="tn" waitEvent="updateComplete" /> 
            </setup>
            <body>
                <SetStyle target="tn" styleName="layoutDirection" value="rtl" waitTarget="tn" waitEvent="updateComplete" />
                <SetStyle target="tn" styleName="direction" value="rtl" waitTarget="tn" waitEvent="updateComplete" />
                <CompareBitmap target="tn" url="../Styles/baselines/$testID.png" timeout="5000" numColorVariances="4" maxColorVariance="16" />
            </body>
        </TestCase>
        <TestCase testID="TabNavigator_layoutDirection_RTL_focus" keywords="[TabNavigator, layoutDirection, Mirroring]" description="Set layoutDirection=rtl on the parent of a tabnavigator in as and use left, right keys to test focus." >
            <setup>
                <ResetComponent target="tn" className="TNComp4" waitTarget="tn" waitEvent="updateComplete" /> 
            </setup>
            <body>
                <SetStyle target="tn" styleName="layoutDirection" value="rtl" waitTarget="tn" waitEvent="updateComplete" />
                <SetStyle target="tn" styleName="direction" value="rtl" waitTarget="tn" waitEvent="updateComplete" />
                <RunCode code="application.ti.setFocus()" waitEvent="focusIn" waitTarget="ti" />
                <DispatchKeyEvent key="TAB" waitEvent="focusIn" waitTarget="tn.getElementAt(0)"/>
                <DispatchKeyEvent keys="[LEFT, LEFT, SPACE]" waitEvent="updateComplete" waitTarget="tn.getElementAt(0)"/>
                <AssertPropertyValue target="tn.getElementAt(0)" propertyName="selectedIndex" value="2" />
                <DispatchKeyEvent keys="[RIGHT, SPACE]" waitEvent="updateComplete" waitTarget="tn.getElementAt(0)"/>
                <AssertPropertyValue target="tn.getElementAt(0)" propertyName="selectedIndex" value="1" />
            </body>
        </TestCase>
    </testCases>

</UnitTester>
