<?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 xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="main.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[
	]]>
	</mx:Script>

	<testCases>
		<TestCase testID="SetupFXG2RuntimeTests">
			<body>
				<SetProperty target="" propertyName="currentState" value="fxg2RuntimeTest" 
                    waitEvent="updateComplete" />
				<AssertPropertyValue target="fxg2RuntimeTests.graphic1" propertyName="width" value="200" />
			</body>
		</TestCase>
		<TestCase testID="FXG2RuntimeTests_luminosityMaskDefault">
		<body>
			<SetProperty target="fxg2RuntimeTests.graphic1" propertyName="maskType" value="luminosity" />
			<AssertPropertyValue target="fxg2RuntimeTests.graphic1" propertyName="maskType" value="luminosity" />
			<AssertPropertyValue target="fxg2RuntimeTests.graphic1" propertyName="luminosityClip" value="false" />
			<AssertPropertyValue target="fxg2RuntimeTests.graphic1" propertyName="luminosityInvert" value="false" />
		</body>
		</TestCase>
		<TestCase testID="FXG2RuntimeTests_luminosityMaskRuntimeChange">
		<body>
			<SetProperty target="fxg2RuntimeTests.graphic1" propertyName="luminosityClip" value="true" />
			<AssertPropertyValue target="fxg2RuntimeTests.graphic1" propertyName="luminosityClip" value="true" />
		</body>
		</TestCase>
		<TestCase testID="FXG2RuntimeTests_BlendModeChangeNormal">
		<body>
			<SetProperty target="fxg2RuntimeTests.bitmapGroup" propertyName="blendMode" value="normal" />
			<AssertPropertyValue target="fxg2RuntimeTests.bitmapGroup" propertyName="blendMode" value="normal" />	
		</body>
		</TestCase>
		<TestCase testID="FXG2RuntimeTests_BlendModeChangeColorDodge">
		<body>
			<SetProperty target="fxg2RuntimeTests.bitmapGroup" propertyName="blendMode" value="colordodge" />
			<AssertPropertyValue target="fxg2RuntimeTests.bitmapGroup" propertyName="blendMode" value="colordodge" />
		</body>
		</TestCase>
		<TestCase testID="FXG2RuntimeTests_BlendModeChangeDarken">
		<body>
			<SetProperty target="fxg2RuntimeTests.bitmapGroup" propertyName="blendMode" value="darken" />
			<AssertPropertyValue target="fxg2RuntimeTests.bitmapGroup" propertyName="blendMode" value="darken" />
		</body>
		</TestCase>
	</testCases>
</UnitTester>