<?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/H_V_Rule/Styles/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="Rule_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="HRule_Styles_themeColor" keywords="[themeColor, HRule]">
			<setup>
				<ResetComponent target="mainHRule" className="mx.controls.HRule" waitEvent="updateComplete" waitTarget="mainHRule"/>
				<SetProperty target="mainHRule" propertyName="width" value="200" />
				<SetProperty target="mainHRule" propertyName="height" value="5" />
 				<SetStyle target="mainHRule" styleName="themeColor" value="#FFFFFF" waitEvent="updateComplete" waitTarget="mainHRule" />
			</setup>
			<body>
 				<AssertStyleValue target="mainHRule" styleName="themeColor" value="0xFFFFFF" />
 			</body>
		</TestCase>
 		<TestCase testID="HRule_Styles_shadowColor" keywords="[shadowColor, HRule]">
			<setup>
				<ResetComponent target="mainHRule" className="mx.controls.HRule" waitEvent="updateComplete" waitTarget="mainHRule"/>
				<SetProperty target="mainHRule" propertyName="width" value="200" />
				<SetProperty target="mainHRule" propertyName="height" value="5" />
 				<SetStyle target="mainHRule" styleName="shadowColor" value="#0000FF" waitEvent="updateComplete" waitTarget="mainHRule" />
 				<SetStyle target="mainHRule" styleName="shadowDistance" value="12" waitEvent="updateComplete" waitTarget="mainHRule" />
 				<SetStyle target="mainHRule" styleName="dropShadowEnabled" value="true" waitEvent="updateComplete" waitTarget="mainHRule" />
			</setup>
			<body>
 				<AssertStyleValue target="mainHRule" styleName="shadowColor" value="0x0000FF" />
 			</body>
		</TestCase>
 		<TestCase testID="HRule_Styles_strokeColor" keywords="[strokeColor, HRule]">
			<setup>
				<ResetComponent target="mainHRule" className="mx.controls.HRule" waitEvent="updateComplete" waitTarget="mainHRule"/>
				<SetProperty target="mainHRule" propertyName="width" value="200" />
				<SetProperty target="mainHRule" propertyName="height" value="10" />
 				<SetStyle target="mainHRule" styleName="strokeColor" value="#0000FF" waitEvent="updateComplete" waitTarget="mainHRule" />
			</setup>
			<body>
 				<AssertStyleValue target="mainHRule" styleName="strokeColor" value="0x0000FF" />
 			</body>
		</TestCase>
 		<TestCase testID="HRule_Styles_strokeWidth" keywords="[strokeWidth, HRule]">
			<setup>
				<ResetComponent target="mainHRule" className="mx.controls.HRule" waitEvent="updateComplete" waitTarget="mainHRule"/>
				<SetProperty target="mainHRule" propertyName="width" value="200" />
				<SetProperty target="mainHRule" propertyName="height" value="10" />
 				<SetStyle target="mainHRule" styleName="strokeWidth" value="4" waitEvent="updateComplete" waitTarget="mainHRule" />
			</setup>
			<body>
 				<AssertStyleValue target="mainHRule" styleName="strokeWidth" value="4" />
 			</body>
		</TestCase>
	</testCases>
</UnitTester>
