<?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/ViewStack/Styles/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="ViewStack_Basic.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="ViewStack_Styles_paddingBottom" keywords="[visible, paddingBottom, fillColors, ViewStack]" >
			<setup>
				<ResetComponent target="vs" className="VSComp"  waitEvent="updateComplete" waitTarget="vs"/>
 				<SetStyle target="vs.viewS" styleName="paddingBottom" value="5" waitEvent="updateComplete" waitTarget="vs.viewS" />
			</setup>
			<body>
 				<AssertStyleValue target="vs.viewS" styleName="paddingBottom" value="5" />
 				<WaitForEffectsToEnd />
 				<CompareBitmap target="vs.viewS" url="../Styles/baselines/paddingBottom.png" timeout="4000" />
 			</body>
		</TestCase>
 		<TestCase testID="ViewStack_Styles_paddingTop" keywords="[visible, paddingTop, fillColors, ViewStack]" >
			<setup>
				<ResetComponent target="vs" className="VSComp"  waitEvent="updateComplete" waitTarget="vs"/>
 				<SetStyle target="vs.viewS" styleName="paddingTop" value="5" waitEvent="updateComplete" waitTarget="vs.viewS" />
			</setup>
			<body>
 				<AssertStyleValue target="vs.viewS" styleName="paddingTop" value="5" />
 				<WaitForEffectsToEnd />
 				<CompareBitmap target="vs.viewS" url="../Styles/baselines/paddingTop.png" timeout="4000" />
 			</body>
		</TestCase>		
 		<TestCase testID="ViewStack_Styles_verticalGap" keywords="[visible, verticalGap, fillColors, ViewStack]" >
			<setup>
				<ResetComponent target="vs" className="VSComp"  waitEvent="updateComplete" waitTarget="vs"/>
 				<WaitForEffectsToEnd />
 				<SetStyle target="vs.viewS" styleName="verticalGap" value="5" waitEvent="updateComplete" waitTarget="vs.viewS" />
			</setup>
			<body>
 				<AssertStyleValue target="vs.viewS" styleName="verticalGap" value="5" />
 				<WaitForEffectsToEnd />
 				<CompareBitmap target="vs.viewS" url="../Styles/baselines/verticalGap.png" timeout="4000" />
 			</body>
		</TestCase>  
 		<TestCase testID="ViewStack_Styles_horizontalGap" keywords="[visible, horizontalGap, fillColors, ViewStack]" >
			<setup>
				<ResetComponent target="vs" className="VSComp"  waitEvent="updateComplete" waitTarget="vs"/>
 				<SetStyle target="vs.viewS" styleName="horizontalGap" value="10" waitEvent="updateComplete" waitTarget="vs.viewS" />
			</setup>
			<body>
 				<AssertStyleValue target="vs.viewS" styleName="horizontalGap" value="10" />
 				<WaitForEffectsToEnd />
 				<CompareBitmap target="vs.viewS" url="../Styles/baselines/horizontalGap.png" timeout="4000" />
 			</body>
		</TestCase>		
	</testCases>

</UnitTester>
