<?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="apollo/spark/components/WindowedApplication/effects/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="wa_app2.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 flash.system.Capabilities;
        import mx.core.FlexGlobals;
        import spark.components.*;
        import spark.skins.spark.*;

	]]>
	</mx:Script>

	<testCases>

<!--
========================================================
Test some effects.  We can't tell that it played
correctly (manual), but we can run them and be sure
they don't RTE or something.
========================================================
-->

<!--
========================================================
Test minimizeEffect
========================================================
-->

<TestCase testID="minimizeEffect_test1" keywords="[WindowedApplication,minimizeEffect]" description="Minimize." >
    <setup>
        <RunCode code="FlexGlobals.topLevelApplication.doReset()" waitTarget="" waitEvent="resetComplete" />
    </setup>
    <body>
        <SetStyle target="" styleName="minimizeEffect" valueExpression="value = FlexGlobals.topLevelApplication.fade1" />
        <RunCode code="FlexGlobals.topLevelApplication.minimize()" waitTarget="" waitEvent="displayStateChange" />  
        <WaitForEvent numExpectedEvents="-1" eventName="effectStart" target="" />
        <WaitForEffectsToEnd />
        <AssertEvent target="" eventName="effectStart" eventClass="mx.events::EffectEvent" />
    </body>
</TestCase>

<!--
========================================================
Test unminimizeEffect
========================================================
-->
<TestCase testID="unminimizeEffect_test1" keywords="[WindowedApplication,minimizeEffect]" description="Minimize." >
    <setup>
        <RunCode code="FlexGlobals.topLevelApplication.doReset()" waitTarget="" waitEvent="resetComplete" />
    </setup>
    <body>
        <SetStyle target="" styleName="unminimizeEffect" valueExpression="value = FlexGlobals.topLevelApplication.fade2" />
        <RunCode code="FlexGlobals.topLevelApplication.minimize()" waitTarget="" waitEvent="displayStateChange" />  
        <RunCode code="FlexGlobals.topLevelApplication.restore()" />  
        <AssertEvent target="" eventName="effectStart" eventClass="mx.events::EffectEvent" />
    </body>
</TestCase>

	</testCases>
</UnitTester>
