<?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.s
  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="PerModuleStyles/styleManager/"  xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns="*" testSWF="CurrentStyleManagerApp2.mxml">

	<!-- this set of lines form a template that must be in each unit test -->
	<fx:Script>
	<![CDATA[
		public static function init(o:DisplayObject):void
		{
		}
		]]>
	</fx:Script>

	<fx:Metadata>
		<![CDATA[
		[Mixin]
	]]>
	</fx:Metadata>
	<!-- end of set of lines that must be in each unit test -->

	<testCases>
		<TestCase testID="testModuleStyleManager" keywords="[Styles,Module]" description="Test to make sure getStyleDeclaration return local only styles" >
		    <body>	
			<RunCode code="application.iniit();"  waitTarget="mod_loader" waitEvent="ready" timeout="8000"/>	
			<Pause timeout="1000" />		
			<DispatchMouseClickEvent target="mod_loader.child.checkTopLevelStyleManager" waitEvent="click" waitTarget="mod_loader.child.checkTopLevelStyleManager" />
			<AssertPropertyValue target="mod_loader.child.result" propertyName="text" value="pass" />

			<DispatchMouseClickEvent target="mod_loader.child.checkModuleStyleManager" waitEvent="click" waitTarget="mod_loader.child.checkModuleStyleManager" />
			<AssertPropertyValue target="mod_loader.child.result" propertyName="text" value="pass" />
		    </body>
		</TestCase>
	</testCases>

</UnitTester>