<?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="components/CheckBox/properties/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="CheckBox_Mirroring_Main.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[

        ]]>
    </mx:Script>

    <testCases>
  
        <TestCase testID="Mirroring_CheckBox" keywords="[Mirroring, layoutDirection, CheckBox]" description="Tests setting layoutDirection=rtl  for a CheckBox inside of Canvas">
            <setup>
                <SetProperty target="myCheckBox" propertyName="y" value="50"/>
                <SetStyle target="myCheckBox" styleName="direction" value="rtl"/>
                <SetProperty target="myCheckBox" propertyName="layoutDirection" value="rtl"/>
                <SetProperty target="myCheckBox" propertyName="width" value="80"/>
                <SetProperty target="myCheckBox" propertyName="label" value="CheckBox Label" waitEvent="updateComplete"  waitTarget="myCheckBox"/>
            </setup>
            <body>
                <CompareBitmap url="../properties/baselines/$testID.png" target="myCanvas"/>
            </body>
        </TestCase>
        <TestCase testID="Mirroring_CheckBox_selected" keywords="[Mirroring, layoutDirection, CheckBox]" description="Tests setting layoutDirection=rtl for a CheckBox inside of Canvas">
            <setup>
                <ResetComponent target="myCheckBox" className="mx.controls.CheckBox" waitEvent="updateComplete"  waitTarget="myCheckBox"/>
                <SetProperty target="myCheckBox" propertyName="y" value="50"/>
                <SetStyle target="myCheckBox" styleName="direction" value="rtl"/>
                <SetProperty target="myCheckBox" propertyName="layoutDirection" value="rtl"/>
                <SetProperty target="myCheckBox" propertyName="label" value="Label" waitEvent="updateComplete"  waitTarget="myCheckBox"/>
                <SetProperty target="myCheckBox" propertyName="selected" value="true" waitEvent="updateComplete"  waitTarget="myCheckBox"/>
            </setup>
            <body>
                <CompareBitmap url="../properties/baselines/$testID.png" target="myCanvas"/>
            </body>
        </TestCase>
    </testCases>
</UnitTester>

