<?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="Application/Application_SparkSkin/Styles/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="Application_ModalTransparencyBlur_Test1.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.controls.Alert;
        import mx.core.Application;

        public var curAlert:Alert;
    ]]>
    </mx:Script>

	<testCases>


<!--
================================================================================
modalTransparencyBlur
Alert affects the parent app; it seems we can't make an alert in a child app.
So, each test case has its own SWF.

Yes, these CompareBitmaps are of the entire stage, since when blur=255 it 
really does take up that much space.
================================================================================
-->	

    <TestCase testID="style_modalTransparencyBlur_test1" keywords="[application, modalTransparencyBlur]" description="Check 0 (boundary)">
        <setup>
            <SetStyle target="" styleName="modalTransparencyBlur" value="0" />
            <SetStyle target="" styleName="backgroundImage" value="" />
            <SetStyle target="" styleName="backgroundColor" value="0x00ff00" waitEvent="updateComplete" />
        </setup>
        <body>
            <RunCode code="curAlert = Alert.show('')" />
            <RunCode code="curAlert.height = 82" />
            <RunCode code="curAlert.setStyle('headerHeight', 31)" waitTarget="script:curAlert" waitEvent="updateComplete"/>
            <WaitForEffectsToEnd />
            <AssertStyleValue target="" styleName="modalTransparencyBlur" value="0" />
            <CompareBitmap target="" url="../Styles/Baselines/$testID.png" />
        </body>
    </TestCase>

	</testCases>
</UnitTester>
