<?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="mobile/components/ToggleSwitch/styles/"  xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"  xmlns:m="http://ns.adobe.com/mxml/2009" xmlns="*" 
	testSWF="ToggleSwitchStyles3.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 -->

	<fx:Script>
		<![CDATA[
            import spark.components.ToggleSwitch;
			import mx.core.FlexGlobals;

		]]>
	</fx:Script>

	<testCases>
		
		
		<!-- typeselector: bitmap unselected -->		
		
		<TestCase testID="advancedCSS_typeselector_unselected" keywords="[ToggleSwitch, styles, accentColor, default]" description="Typeselector accentColor">
			<setup>
			</setup>
			
			<body>
				<CompareBitmap numColorVariances="20" maxColorVariance="16" url="../styles/baselines" target="ts1">
					<ConditionalValue deviceDensity="160" os="win"/>
					<ConditionalValue deviceDensity="240" os="android" />
					<ConditionalValue deviceDensity="320" os="win"/>
					<ConditionalValue deviceDensity="320" os="ios" />
					<ConditionalValue deviceDensity="160" os="qnx" />
				</CompareBitmap>				
			</body>
		</TestCase>
		
		<!-- typeselector: bitmap selected -->		
		
		<TestCase testID="advancedCSS_typeselector_selected" keywords="[ToggleSwitch, styles, accentColor, default]" description="Typeselector accentColor">
			<setup>
				<SetProperty target="ts1" propertyName="selected" value="true" waitTarget="ts1" waitEvent="updateComplete" />
			</setup>
			
			<body>
				<CompareBitmap numColorVariances="20" maxColorVariance="16" url="../styles/baselines" target="ts1">
					<ConditionalValue deviceDensity="160" os="win"/>
					<ConditionalValue deviceDensity="240" os="android" />
					<ConditionalValue deviceDensity="320" os="win"/>
					<ConditionalValue deviceDensity="320" os="ios" />
					<ConditionalValue deviceDensity="160" os="qnx" />
				</CompareBitmap>				
			</body>
		</TestCase>
		
		
		<!-- class selector: unselected -->		
		
		<TestCase testID="advancedCSS_classselector_unselected" keywords="[ToggleSwitch, styles, accentColor, default]" description="Typeselector accentColor">
			<setup>
			</setup>
			
			<body>
				<CompareBitmap numColorVariances="20" maxColorVariance="16" url="../styles/baselines" target="ts2">
					<ConditionalValue deviceDensity="160" os="win"/>
					<ConditionalValue deviceDensity="240" os="android" />
					<ConditionalValue deviceDensity="320" os="win"/>
					<ConditionalValue deviceDensity="320" os="ios" />
					<ConditionalValue deviceDensity="160" os="qnx" />
				</CompareBitmap>				
			</body>
		</TestCase>
		
		<!-- class selector: selected -->		
		
		<TestCase testID="advancedCSS_classselector_selected" keywords="[ToggleSwitch, styles, accentColor, default]" description="Typeselector accentColor">
			<setup>
				<SetProperty target="ts2" propertyName="selected" value="true" waitTarget="ts2" waitEvent="updateComplete" />
			</setup>
			
			<body>
				<CompareBitmap numColorVariances="20" maxColorVariance="16" url="../styles/baselines" target="ts2">
					<ConditionalValue deviceDensity="160" os="win"/>
					<ConditionalValue deviceDensity="240" os="android" />
					<ConditionalValue deviceDensity="320" os="win"/>
					<ConditionalValue deviceDensity="320" os="ios" />
					<ConditionalValue deviceDensity="160" os="qnx" />
				</CompareBitmap>				
			</body>
		</TestCase>
		

		<!-- advanced selector: unselected -->		
		
		<TestCase testID="advancedCSS_advancedselector_unselected" keywords="[ToggleSwitch, styles, accentColor, default]" description="Typeselector accentColor">
			<setup>
			</setup>
			
			<body>
				<CompareBitmap numColorVariances="20" maxColorVariance="16" url="../styles/baselines" target="ts3">
					<ConditionalValue deviceDensity="160" os="win"/>
					<ConditionalValue deviceDensity="240" os="android" />
					<ConditionalValue deviceDensity="320" os="win"/>
					<ConditionalValue deviceDensity="320" os="ios" />
					<ConditionalValue deviceDensity="160" os="qnx" />
				</CompareBitmap>				
			</body>
		</TestCase>
		
		<!-- advanced selector: selected -->		
		
		<TestCase testID="advancedCSS_advancedselector_selected" keywords="[ToggleSwitch, styles, accentColor, default]" description="Typeselector accentColor">
			<setup>
				<SetProperty target="ts3" propertyName="selected" value="true" waitTarget="ts3" waitEvent="updateComplete" />
			</setup>
			
			<body>
				<CompareBitmap numColorVariances="20" maxColorVariance="16" url="../styles/baselines" target="ts3">
					<ConditionalValue deviceDensity="160" os="win"/>
					<ConditionalValue deviceDensity="240" os="android" />
					<ConditionalValue deviceDensity="320" os="win"/>
					<ConditionalValue deviceDensity="320" os="ios" />
					<ConditionalValue deviceDensity="160" os="qnx" />
				</CompareBitmap>				
			</body>
		</TestCase>
		
		
	</testCases>
</UnitTester>
