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

	<testCases>

		<TestCase testID="statesApp_array" keywords="[States]" description="Verify that Arrays work in states" >
			<setup>
				<ResetComponent target="customGrp" className="CustomAsGroup" waitEvent="updateComplete"/>
			</setup>
			<body>
				<SetProperty propertyName="currentState" value="stateB" waitEvent="currentStateChange" />				
				<AssertPropertyValue target="" propertyName="currentState" value="stateB" />
				<AssertPropertyValue target="lbl" propertyName="text" value="stateB" />						
			</body>
		</TestCase>

	</testCases>                	     
</UnitTester>
