<?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="gumbo/components/ButtonBar/Properties/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="ButtonBarApp1.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 Assets.*;
        import spark.components.*;

	]]>
	</mx:Script>

	<testCases>

<!--
========================================================
selectedItem
Verify that the correct button ends up in the selected
state and that selectedIndex is correct.
========================================================
-->
<TestCase testID="selectedItem_sanityTest" keywords="[ButtonBar,selectedItem]" description="Make sure selection looks right." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <DispatchMouseClickEvent target="bb1.dataGroup.getElementAt(0)" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="0" />
        <AssertPropertyValue target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(0)" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="true" />
        <CompareBitmap numColorVariances="4" maxColorVariance="8" url="../Properties/baselines/$testID.png" target="bb1" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test1" keywords="[ButtonBar,selectedItem]" description="Use it to select the first item." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(0)" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="true" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="0" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test2" keywords="[ButtonBar,selectedItem]" description="Use it to select the middle item." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(1)" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="true" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="1" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test3" keywords="[ButtonBar,selectedItem]" description="Use it to select the last item." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(2)" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="true" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="2" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test4" keywords="[ButtonBar,selectedItem]" description="Use it to select an item which is not in the bar." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb2, 2)" waitTarget="bb2" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb2" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="-1" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test5" keywords="[ButtonBar,selectedItem]" description="Use it to select an item which is already selected. Just change the size instead of pausing." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(2)" waitEvent="updateComplete" />
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(2)" />
        <SetProperty target="bb1" propertyName="width" valueExpression="value=application.bb1.width + 1" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="true" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="2" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test6" keywords="[ButtonBar,selectedItem]" description="Use it to select an item, then remove the item. Prop should then be null or undefined." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=application.bb1.dataProvider.getItemAt(2)" waitEvent="updateComplete" />
        <RunCode code="application.bb1.dataProvider.removeItemAt(2)" waitTarget="bb1" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="-1" />
        <AssertPropertyValue target="bb1" propertyName="selectedItem" valueExpression="value=undefined" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test7" keywords="[ButtonBar,selectedItem]" description="Set it to null." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=null" />
        <SetProperty target="bb1" propertyName="width" valueExpression="value=application.bb1.width + 1" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="-1" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test8" keywords="[ButtonBar,selectedItem]" description="Set it to null when something is selected.  Because deselecting a button does not dispatch an event (SDK-18305), change size and wait for updateComplete." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="selectedItem" value="1" waitEvent="updateComplete" />
        <SetProperty target="bb1" propertyName="selectedItem" valueExpression="value=null" />
        <SetProperty target="bb1" propertyName="width" valueExpression="value=application.bb1.width + 1" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="-1" />
    </body>
</TestCase>

<!-- Bug SDK-18389. -->
<TestCase testID="selectedItem_test9" keywords="[ButtonBar,selectedItem]" description="Set it to null when requireSelection is true (not allowed)." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <SetProperty target="bb1" propertyName="requireSelection" value="true" waitEvent="updateComplete" />
        <SetProperty target="bb1" propertyName="selectedItem" value="null" />
        <SetProperty target="bb1" propertyName="width" valueExpression="value=application.bb1.width + 1" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(0)" propertyName="selected" value="true" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(1)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1.dataGroup.getElementAt(2)" propertyName="selected" value="false" />
        <AssertPropertyValue target="bb1" propertyName="selectedIndex" value="0" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test10" keywords="[ButtonBar,selectedItem]" description="Get it when the first item is selected." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <DispatchMouseClickEvent target="bb1.dataGroup.getElementAt(0)" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1" propertyName="selectedItem" value="one" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test11" keywords="[ButtonBar,selectedItem]" description="Get it when the middle item is selected." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <DispatchMouseClickEvent target="bb1.dataGroup.getElementAt(1)"  localX="10" localY="5" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1" propertyName="selectedItem" value="two" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test12" keywords="[ButtonBar,selectedItem]" description="Get it when the last item is selected." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <DispatchMouseClickEvent target="bb1.dataGroup.getElementAt(2)"  localX="10" localY="5" waitEvent="updateComplete" />
        <AssertPropertyValue target="bb1" propertyName="selectedItem" value="three" />
    </body>
</TestCase>

<TestCase testID="selectedItem_test13" keywords="[ButtonBar,selectedItem]" description="Get it when nothing is selected." >
    <setup>
        <ResetComponent target="bb1" className="spark.components::ButtonBar" waitEvent="updateComplete" />
        <RunCode code="application.setDataProvider(application.bb1, 1)" waitTarget="bb1" waitEvent="updateComplete" />
    </setup>
    <body>
        <AssertPropertyValue target="bb1" propertyName="selectedItem" value="null" />
    </body>
</TestCase>

	</testCases>
</UnitTester>
