<?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 xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="main.mxml">
    
    <!-- this set of lines form a template that must be in each unit test -->
    <mx:Script>
        <![CDATA[
            import mx.core.FlexGlobals;

            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="SetupSparkFormTest">
            <body>
                <SetProperty target="" propertyName="currentState" value="sparkFormTest" 
                             waitEvent="updateComplete" />
                <AssertPropertyValue target="sparkFormTests.formItem1" propertyName="label" value="Address" />
            </body>
        </TestCase>
        <TestCase testID="SparkFormTest1">
            <body>
                <SetProperty target="sparkFormTests.formItem1" propertyName="label" value="Mailing Address" 
                             waitEvent="updateComplete" waitTarget="sparkFormTests.formItem1.skin" />
                <AssertPropertyValue target="sparkFormTests.formItem1" propertyName="label" value="Mailing Address"/>
                <AssertPropertyValue target="sparkFormTests.formItem2.skin.labelCol" propertyName="width"
                                     valueExpression="value=FlexGlobals.topLevelApplication.sparkFormTests.formItem1.labelDisplay.width+5" />
                <AssertPropertyValue target="sparkFormTests.formItem2.contentGroup" propertyName="y" value="10" />
            </body>
        </TestCase>
    </testCases>
</UnitTester>
