<?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="components/ComboBox/Properties/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="ComboBoxMain.mxml">
    <mx:Script>
    <![CDATA[
    public static function init(o:DisplayObject):void
    {
    }
    ]]>
    </mx:Script>
    <mx:Metadata>
    <![CDATA[
        [Mixin]
    ]]>
    </mx:Metadata>
    <mx:Script>
    <![CDATA[
    import mx.styles.StyleManager;
    import mx.managers.SystemManager;
    import mx.core.mx_internal;

    use namespace mx_internal;

    public function addItems():void
    {
       for(var i:int=0;i<15;i++)
       {
          var obj:Object={slno:i,name:"Added Item",age:100+i}
          application.mybox.myCB.dataProvider.addItem(obj);
       }
    }

    public function addLongItem():void
    {
          var obj:Object={slno:0,name:"Added Looooooooooooooooooooooooooooooooooooooooooooooooooooooooong Item",age:100}
          application.mybox.myCB.dataProvider.addItemAt(obj,0);
    }

    public function myCBLabelFunction(obj:Object):String
    {
          return(obj.name + "[check]");
    }

    public function remove_and_repopulate():void
    {
        application.mybox.myCB.dataProvider.removeAll();
        application.mybox.myCB.dataProvider=[{slno:"1",label:"Joseph",age:"23"},{slno:"2",label:"Jeena",age:"21"},{slno:"3",label:"Jerry",age:"4"}
         ,{slno:"4",label:"Tom",age:"1"},{slno:"5",label:"Rick",age:"12"},{slno:"6",label:"John",age:"52"}];
    }
    ]]>
    </mx:Script>

      <testCases>
    <TestCase testID="Spark_combobox_properties_bugs_SDK12104" keywords="[list, bugs, SDK12104]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
          <SetProperty target="mybox.myCB" propertyName="dataProvider"
            value= "{ [ '', 'dog', 'cat', 'weirdo', 'chicken', 'monkey', 'cow', 'dolphin' ] }" />
         </setup>
        <body>
          <DispatchKeyEvent key="TAB" waitEvent="focusIn" waitTarget="mybox.myCB"/>
           <DispatchKeyEvent key="DOWN" ctrlKey="true"  waitEvent="open" waitTarget="mybox.myCB"/>
           <DispatchKeyEvent key="DOWN"  />
             <DispatchKeyEvent key="DOWN"  />
              <DispatchKeyEvent key="ENTER"  waitEvent="change" waitTarget="mybox.myCB"/>
             <AssertPropertyValue target="mybox.myCB" propertyName="selectedIndex" value="2" />
               <DispatchKeyEvent key="DOWN" ctrlKey="true"  waitEvent="open" waitTarget="mybox.myCB"/>
           <DispatchKeyEvent key="UP"  />
             <DispatchKeyEvent key="UP"  />
             <DispatchKeyEvent key="ENTER"  waitEvent="close" waitTarget="mybox.myCB"/>
             <AssertPropertyValue target="mybox.myCB" propertyName="selectedIndex" value="0" />
              <DispatchKeyEvent key="UP"  />
         </body>
    </TestCase>
    <TestCase testID="Spark_combobox_properties_bugs_SDK12172" keywords="[list, bugs, SDK12172]">
              <setup>
               <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
              <SetProperty target="mybox.myCB" propertyName="dataProvider"
                value= "{ [ '', 'dog', 'cat', 'weirdo', 'chicken', 'monkey', 'cow', 'dolphin' ] }" />
             </setup>
            <body>
              <DispatchKeyEvent key="TAB" waitEvent="focusIn" waitTarget="mybox.myCB"/>
               <DispatchKeyEvent key="DOWN" ctrlKey="true"  waitEvent="open" waitTarget="mybox.myCB"/>
               <DispatchKeyEvent key="PAGE_DOWN"  />
                 <DispatchKeyEvent key="PAGE_DOWN"  />
                  <DispatchKeyEvent key="ENTER"  waitEvent="change" waitTarget="mybox.myCB"/>
                 <AssertPropertyValue target="mybox.myCB" propertyName="selectedIndex" value="7" />
                   <DispatchKeyEvent key="DOWN" ctrlKey="true"  waitEvent="open" waitTarget="mybox.myCB"/>
               <DispatchKeyEvent key="PAGE_UP"  />
                 <DispatchKeyEvent key="PAGE_UP"  />
                 <DispatchKeyEvent key="ENTER"  waitEvent="close" waitTarget="mybox.myCB"/>
                 <AssertPropertyValue target="mybox.myCB" propertyName="selectedIndex" value="0" />
             </body>
    </TestCase>
    <TestCase testID="Spark_combobox_properties_selectedIndex_keyboard" keywords="[comboBox, properties, selectedIndex, keyboard]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
        <DispatchMouseClickEvent target="mybox.myCB" localX="2" localY="2" waitEvent="focusIn" waitTarget="mybox.myCB"/>
        <DispatchKeyEvent key="DOWN" ctrlKey="true" waitEvent="open" waitTarget="mybox.myCB"/>
        <DispatchKeyEvent key="DOWN" ctrlKey="false" repeatCount="4"/>
        <DispatchKeyEvent key="ENTER" ctrlKey="true" waitEvent="close" waitTarget="mybox.myCB"/>
        <AssertPropertyValue target="mybox.myCB" propertyName ="selectedIndex" value="4"/>
         </body>
    </TestCase>
    <TestCase testID="Spark_combobox_properties_selectedLabel_keyboard" keywords="[comboBox, properties, selectedLabel, keyboard]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
        <DispatchMouseClickEvent target="mybox.myCB" localX="2" localY="2" waitEvent="focusIn" waitTarget="mybox.myCB"/>
        <DispatchKeyEvent key="DOWN" ctrlKey="true" waitEvent="open" waitTarget="mybox.myCB"/>
        <DispatchKeyEvent key="DOWN" ctrlKey="false" repeatCount="4" />
        <DispatchKeyEvent key="ENTER" ctrlKey="true" waitEvent="close" waitTarget="mybox.myCB"/>
        <AssertPropertyValue target="mybox.myCB" propertyName ="selectedLabel" value="Rick"/>
         </body>
    </TestCase>
    <TestCase testID="Spark_combobox_properties_selectedIndex_mouse" keywords="[comboBox, properties, selectedIndex, mouse]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
        <DispatchMouseClickEvent target="mybox.myCB" localX="2" localY="2" waitEvent="open" waitTarget="mybox.myCB"/>
        <WaitForEffectsToEnd />
        <DispatchMouseClickEvent target="mybox.myCB.dropdown.mx_internal:rendererArray.2.0" localX="40" localY="6" waitEvent="close" waitTarget="mybox.myCB"/>
        <AssertPropertyValue target="mybox.myCB" propertyName ="selectedIndex" value="2" />
         </body>
    </TestCase>
    <TestCase testID="Spark_combobox_properties_selectedLabel_mouse" keywords="[comboBox, properties, selectedLabel, mouse]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
        <DispatchMouseClickEvent target="mybox.myCB" localX="2" localY="2" waitEvent="open" waitTarget="mybox.myCB"/>
        <WaitForEffectsToEnd />
        <DispatchMouseClickEvent target="mybox.myCB.dropdown.mx_internal:rendererArray.2.0" localX="45" localY="5" waitEvent="close" waitTarget="mybox.myCB"/>
        <AssertPropertyValue target="mybox.myCB" propertyName ="selectedLabel" value="Jerry" />
         </body>
    </TestCase>
    <TestCase testID="Spark_combobox_properties_labelFunction" keywords="[comboBox, properties, labelFunction]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <SetProperty target="mybox" propertyName="width" value= "350" waitEvent="updateComplete" waitTarget="mybox"/>
          <SetProperty target="mybox.myCB" propertyName="width" value= "300" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
          <SetProperty target="mybox.myCB" propertyName="labelFunction" valueExpression ="value = myCBLabelFunction" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_labelfunction_spark.png" />
          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
    <TestCase testID="Spark_combobox_properties_prompt" keywords="[comboBox, properties, prompt]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_default_spark.png" />
           <SetProperty target="mybox.myCB" propertyName="selectedIndex" value="-1" waitEvent="updateComplete"
           waitTarget="mybox.myCB"/>
           <CompareBitmap target="mybox" url="../Properties/Baselines/cb_without_prompt_spark.png" />
           <SetProperty target="mybox" propertyName="width" value= "250" waitEvent="updateComplete" waitTarget="mybox"/>
           <SetProperty target="mybox.myCB" propertyName="width" value= "200" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
           <SetProperty target="mybox.myCB" propertyName="prompt" value="Select One" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
           <SetProperty target="mybox.myCB" propertyName="selectedIndex" value="-1" waitEvent="updateComplete"
           waitTarget="mybox.myCB"/>
           <CompareBitmap target="mybox" url="../Properties/Baselines/cb_with_prompt_spark.png" />
         </body>
      </TestCase>
    <TestCase testID="Spark_combobox_properties_labelfield_default" keywords="[comboBox, properties, labelfield,default]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <RunCode code="remove_and_repopulate()" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_labelfield_default_spark.png" numColorVariances="3" ignoreMaxColorVariance="true"/>

          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>

      <TestCase testID="Spark_combobox_properties_labelfield_set" keywords="[comboBox, properties, labelfield,set]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <RunCode code="remove_and_repopulate()" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
          <SetProperty target="mybox.myCB" propertyName="labelField" value="slno" waitEvent="updateComplete" waitTarget="mybox.myCB"/>
           <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_labelfield_set_spark.png" />

          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
      <TestCase testID="Spark_combobox_properties_rowCount_default" keywords="[comboBox, properties, rowCount,default]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_rowcount_default_spark.png" />
           <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
     <TestCase testID="Spark_combobox_properties_rowCount_zero" keywords="[comboBox, properties, rowCount,zero]">
          <setup>
               <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
           <SetProperty target="mybox.myCB" propertyName="rowCount" value="0"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_rowcount_zero_spark.png" />
          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
     <TestCase testID="Spark_combobox_properties_rowCount_small" keywords="[comboBox, properties, rowCount,small]">
          <setup>
               <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
           <SetProperty target="mybox.myCB" propertyName="rowCount" value="2"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_rowcount_small_spark.png" />
          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
      <TestCase testID="Spark_combobox_properties_rowCount_large" keywords="[comboBox, properties, rowCount,large]">
          <setup>
               <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
           <SetProperty target="mybox.myCB" propertyName="rowCount" value="20"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_rowcount_large_spark.png" />
          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
    <TestCase testID="Spark_combobox_properties_dropdownwidth_default" keywords="[comboBox, properties, dropdownwidth,default]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_drpdownwidth_default_spark.png" />

          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
      <TestCase testID="Spark_combobox_properties_dropdownwidth_small" keywords="[comboBox, properties, dropdownwidth,small]">
          <setup>
               <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
           <SetProperty target="mybox.myCB" propertyName="dropdownWidth" value="15"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_drpdownwidth_small_spark.png" />

          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
         </body>
      </TestCase>
      <TestCase testID="Spark_combobox_properties_dropdownwidth_large" keywords="[comboBox, properties, dropdownwidth,large]">
          <setup>
               <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <SetProperty target="mybox" propertyName="width" value="600" waitEvent="updateComplete" waitTarget="mybox" />
           <SetProperty target="mybox.myCB" propertyName="dropdownWidth" value="575"/>
          <RunCode code="application.mybox.myCB.open()" />
          <AssertEvent target="mybox.myCB" eventName="open" eventClass="mx.events::DropdownEvent"/>
          <CompareBitmap target="mybox" url="../Properties/Baselines/cb_drpdownwidth_large_spark.png" />

          <RunCode code="application.mybox.myCB.close()" />
          <AssertEvent target="mybox.myCB" eventName="close" eventClass="mx.events::DropdownEvent"/>
          <WaitForEffectsToEnd/>
        </body>
      </TestCase>
      <TestCase testID="Spark_combobox_properties_dropdownwidth_long_item_default" keywords="[comboBox, properties, dropdownwidth,longitem, default]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
         </setup>
        <body>
          <RunCode code="application.mybox.myCB.open()" waitEvent="open" waitTarget="mybox.myCB" />
          <RunCode code="application.mybox.myCB.close()"  waitEvent="close" waitTarget="mybox.myCB" />
          <RunCode code="addLongItem()"  waitEvent="updateComplete" waitTarget="mybox.myCB"/>
          <SetProperty target="mybox.myCB" propertyName="selectedIndex" value="0"  waitEvent="updateComplete" waitTarget="mybox.myCB"/>
          <RunCode code="application.mybox.myCB.open()" waitEvent="open" waitTarget="mybox.myCB"/>
         <RunCode code="application.mybox.myCB.close()" waitEvent="close" waitTarget="mybox.myCB" />
          <AssertPropertyValue target="mybox.myCB" propertyName="dropdownWidth" value= "473"/>
         </body>
      </TestCase>

    <TestCase testID="Spark_combobox_properties_prompt_default" keywords="[comboBox, properties, prompt]">
          <setup>
           <ResetComponent target="mybox" className="ComboBoxComp" waitEvent="updateComplete" waitTarget="mybox"/>
           <SetProperty target="mybox.myCB" propertyName="selectedIndex" value="-1" waitEvent="updateComplete"
           waitTarget="mybox.myCB"/>
           <SetProperty target="mybox.myCB" propertyName="prompt" value="Select..."  waitEvent="updateComplete" waitTarget="mybox.myCB"/>

         </setup>
        <body>
          <CompareBitmap target="mybox.myCB" url="../Properties/Baselines/cb_prompt_default_spark.png" />
         </body>
      </TestCase>
    </testCases>
</UnitTester>
