<?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="States/CurrentSyntax/Integration/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="graphicsApp.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>

<!--
================================================================================
Be sure states work with the Graphics code.
================================================================================
-->
<TestCase testID="graphics_1" keywords="[States,Integration]" description="Make the fill property of a Rec stateful, state1. (Green should be in the middle.)" >
    <setup>
        <RunCode code="application.doManualReset()" waitEvent="manualResetComplete" />
    </setup>
    <body>
        <SetProperty target="{application}" propertyName="currentState" value="state1" waitTarget="{application}" waitEvent="currentStateChange" />
        <CompareBitmap target="group1" url="../Integration/Baselines/$testID.png" />
    </body>
</TestCase>

<TestCase testID="graphics_2" keywords="[States,Integration]" description="Make the fill property of a Rec stateful, state2. (Green should be on the outside.)" >
    <setup>
        <RunCode code="application.doManualReset()" waitEvent="manualResetComplete" />
    </setup>
    <body>
        <SetProperty target="{application}" propertyName="currentState" value="state2" waitTarget="{application}" waitEvent="currentStateChange" />
        <CompareBitmap target="group1" url="../Integration/Baselines/$testID.png" />
    </body>
</TestCase>

<TestCase testID="graphics_3" keywords="[States,Integration]" description="Make the presence of a GradientEntry item in a LinearGradient array stateful, state1. (Green should be in the middle.)" >
    <setup>
        <RunCode code="application.doManualReset()" waitEvent="manualResetComplete" />
    </setup>
    <body>
        <SetProperty target="{application}" propertyName="currentState" value="state1" waitTarget="{application}" waitEvent="currentStateChange" />
        <CompareBitmap target="group2" url="../Integration/Baselines/$testID.png" />
    </body>
</TestCase>

<TestCase testID="graphics_4" keywords="[States,Integration]" description="Make the presence of a GradientEntry item in a LinearGradient array stateful, state1. (Red should be in the middle.)" >
    <setup>
        <RunCode code="application.doManualReset()" waitEvent="manualResetComplete" />
    </setup>
    <body>
        <SetProperty target="{application}" propertyName="currentState" value="state2" waitTarget="{application}" waitEvent="currentStateChange" />
        <CompareBitmap target="group2" url="../Integration/Baselines/$testID.png" />
    </body>
</TestCase>

	</testCases>
</UnitTester>
