blob: c02e03018b8dfc0dc3a32f4ea8937d52e1a56d58 [file] [log] [blame]
<?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[
import mx.core.FlexGlobals;
import mx.controls.ComboBox;
import mx.controls.DateField;
import mx.styles.IStyleManager2;
import mx.managers.SystemManager;
public function scriptFunction(a:String, b:int):String
{
return a + ":" + b.toString();
App
}
public var styleDecl:Object;
public var styleObj:Object;
public var validationObject:Object = {};
]]>
</mx:Script>
<testCases>
<TestCase testID="myScriptTest1">
<body>
<!-- inline code doesn't need fully qualified class names, but you must import -->
<RunCode code="styleDecl = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration('Button');" />
<RunCode code="styleDecl.defaultFactory.prototype = {}; styleObj = new styleDecl.defaultFactory();" />
<!-- to target a variable in the script block, use script: -->
<AssertPropertyValue target="script:styleObj" propertyName="cornerRadius" value="4" />
<!-- to target a class, use fully qualified name -->
<AssertPropertyValue target="mx.managers::CursorManager" propertyName="NO_CURSOR" value="0" />
<AssertPropertyValue target="mx.managers::SystemManager.mx_internal:topLevelSystemManagers.0" propertyName="height" value="375" />
</body>
</TestCase>
<TestCase testID="myValidatorTest1">
<setup>
<ResetComponent target="ccv" className="mx.validators::CreditCardValidator" />
<SetProperty target="ccv" propertyName="required" value="true" />
</setup>
<body>
<!-- to test methods that return complex objects, assign value to the return and match against the
return value. You can just enter "foo", let it run and fail and see what it prints out and
copy that in. Once you get past this step you test the complex object using AssertPropertyValue.
Note also that if the method can throw an error, assign the error in the catch block -->
<AssertMethodValue method="try { value=application.ccv.validate({}); } catch (e:Error) { value = e.message } " >
<!-- arrays start with [ but the MXML parser effectively strips those so if you need to match against
an array, you have to use this pattern instead -->
<value>
<mx:String>[Event type="invalid" bubbles=false cancelable=false eventPhase=2]</mx:String>
</value>
</AssertMethodValue>
<!-- until the next method call, script:value contains the complex return value, so you can use
AssertPropertyValue to test it -->
<AssertPropertyValue target="script:value.results" propertyName="length" value="3" />
<AssertPropertyValue target="script:value.results.0" propertyName="errorCode" value="requiredField" />
</body>
</TestCase>
<TestCase testID="myValidatorTest1a">
<setup>
<ResetComponent target="ccv" className="mx.validators::CreditCardValidator" />
<SetProperty target="ccv" propertyName="required" value="true" />
</setup>
<body>
<!-- you can create object literals like this with {} -->
<AssertMethodValue method="try { value=application.ccv.validate({ cardType: 'Visa', cardNumber: '4321123443211234'}); } catch (e:Error) { value = e.message } " >
<value>
<mx:String>[Event type="valid" bubbles=false cancelable=false eventPhase=2]</mx:String>
</value>
</AssertMethodValue>
</body>
</TestCase>
<TestCase testID="myValidatorTest1b">
<setup>
<ResetComponent target="ccv" className="mx.validators::CreditCardValidator" />
<SetProperty target="ccv" propertyName="required" value="true" />
<!-- or you can create objects using ResetComponent and SetProperty -->
<ResetComponent target="script:validationObject" className="Object" />
<SetProperty target="script:validationObject" propertyName="cardType" value="Visa" />
<SetProperty target="script:validationObject" propertyName="cardNumber" value="4321123443211234" />
</setup>
<body>
<AssertMethodValue method="try { value=application.ccv.validate(validationObject); } catch (e:Error) { value = e.message } " >
<value>
<mx:String>[Event type="valid" bubbles=false cancelable=false eventPhase=2]</mx:String>
</value>
</AssertMethodValue>
</body>
</TestCase>
<TestCase testID="myValidatorTest2">
<setup>
<ResetComponent target="ccv" className="mx.validators::CreditCardValidator" />
<SetProperty target="ccv" propertyName="required" value="true" />
</setup>
<body>
<SetProperty target="ccv" propertyName="allowedFormatChars" value="1" />
<AssertError value="foo" />
</body>
</TestCase>
<TestCase testID="myValidatorTest3">
<setup>
<ResetComponent target="ccv" className="mx.validators::CreditCardValidator" />
<SetProperty target="ccv" propertyName="required" value="true" />
</setup>
<body>
<SetProperty target="ccv" propertyName="allowedFormatChars" value="-!\\/" />
<AssertError value="null" />
</body>
</TestCase>
<TestCase testID="myMethodTest1">
<body>
<AssertMethodValue method="value=DateField.dateToString(new Date(2005, 2, 4), 'YY/MM/DD')" value="05/03/04" />
</body>
</TestCase>
<TestCase testID="myMethodTest2">
<body>
<AssertMethodValue method="value=application.cb.itemToLabel({ label: 'Alex', data: 1})" value="Alex" />
</body>
</TestCase>
<TestCase testID="myMethodTest3">
<body>
<AssertMethodValue method="value=scriptFunction('Flex', 1)" value="Flex:1" />
</body>
</TestCase>
<TestCase testID="myButtonTest1">
<body>
<DispatchMouseClickEvent target="btn" localX="10" localY="10" />
<AssertEvent target="btn" eventName="click" eventClass="flash.events::MouseEvent" />
</body>
</TestCase>
<TestCase testID="myDFTest1">
<body>
<SetProperty target="df" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" waitEvent="valueCommit" waitTarget="df" />
<AssertPropertyValue target="df" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" />
</body>
</TestCase>
<TestCase testID="myTest1">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
<Pause timeout="1000" />
</setup>
<body>
<SetProperty target="cb" propertyName="selectedIndex" value="1" waitEvent="valueCommit" waitTarget="cb" />
<AssertPropertyValue target="cb.getChildAt(0)" propertyName="width" value="51" />
<AssertPropertyValue target="cb" propertyName="selectedItem" value="3" />
</body>
</TestCase>
<TestCase testID="myTestError">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
</setup>
<body>
<AssertMethodValue method="value = 0; try { application.cb.dataProvider[8] = 51 } catch (e:Error) { value = e.message }"
value="Index '8' specified is out of bounds." />
</body>
</TestCase>
<TestCase testID="myTest2">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[2,3,4]" />
<AssertPropertyValue waitEvent="updateComplete" waitTarget="cb" target="cb" propertyName="selectedItem" value="2" />
</setup>
<body>
<SetProperty target="cb" propertyName="selectedIndex" value="2" />
<AssertPropertyValue target="cb" propertyName="selectedItem" value="4" />
</body>
<cleanup>
<!-- this is bs just making the call -->
<SetProperty target="cb" propertyName="selectedIndex" value="1" />
</cleanup>
</TestCase>
<TestCase testID="myTest3">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[8,9,10]" />
<AssertPropertyValue waitEvent="updateComplete" waitTarget="cb" target="cb" propertyName="selectedItem" value="8" />
</setup>
<body>
<SetProperty target="cb" propertyName="selectedIndex" value="1" waitEvent="updateComplete" />
<AssertNoEvent target="cb" eventName="change" />
<AssertPropertyValue target="cb" propertyName="selectedItem" value="9" />
<AssertPropertyValue target="cb.getTextInput()" propertyName="text" value="9" />
<AssertPropertyValue target="cb.getTextInput().getTextField()" propertyName="text" value="9" />
<AssertPropertyValue target="cb.getTextInput().getTextField()" propertyName="antiAliasType" value="advanced" />
<AssertPropertyValue target="cb.getTextInput().getTextField().getTextFormat()" propertyName="color" value="0x0B333C" />
</body>
</TestCase>
<TestCase testID="myTest4">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseDown" localX="10" localY="10" waitEvent="open" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseUp" localX="10" localY="10"/>
</setup>
<body>
<DispatchMouseEvent target="cb.dropdown" type="mouseOver" localX="10" localY="50" />
<DispatchMouseEvent target="cb.dropdown" type="mouseDown" localX="10" localY="50" />
<DispatchMouseEvent target="cb.dropdown" type="mouseUp" localX="10" localY="50" waitEvent="change" waitTarget="cb" />
<AssertPropertyValue target="cb" propertyName="selectedIndex" value="2" />
<CompareBitmap target="cb" url="myTest4.png" timeout="5000" />
</body>
</TestCase>
<TestCase testID="myTest4WithWait">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseDown" localX="10" localY="10"/>
<WaitForEffectsToEnd />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseUp" localX="10" localY="10"/>
</setup>
<body>
<DispatchMouseEvent target="cb.dropdown" type="mouseOver" localX="10" localY="50" />
<DispatchMouseEvent target="cb.dropdown" type="mouseDown" localX="10" localY="50" />
<DispatchMouseEvent target="cb.dropdown" type="mouseUp" localX="10" localY="50" waitEvent="change" waitTarget="cb" />
<AssertPropertyValue target="cb" propertyName="selectedIndex" value="2" />
<AssertPropertyValue target="cb.dropdown.mx_internal:rendererArray.2.0.getLabel()" propertyName="text" value="3" />
<CompareBitmap target="cb" url="myTest4.png" timeout="5000" />
</body>
</TestCase>
<TestCase testID="myTest5">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseDown" localX="10" localY="10" waitEvent="open" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseUp" localX="10" localY="10" />
</setup>
<body>
<DispatchKeyEvent key="ESCAPE" waitEvent="close" waitTarget="cb" />
<DispatchKeyEvent char="2" waitEvent="change" waitTarget="cb" />
<AssertPropertyValue target="cb" propertyName="selectedIndex" value="1" />
</body>
</TestCase>
<TestCase testID="myTestImage">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseDown" localX="10" localY="10" waitEvent="open" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseUp" localX="10" localY="10" />
</setup>
<body>
<DispatchKeyEvent key="ESCAPE" waitEvent="close" waitTarget="cb" />
<DispatchKeyEvent char="2" waitEvent="change" waitTarget="cb" />
<AssertEvent target="cb" eventName="change" eventClass="flash.events::Event" />
<AssertEventPropertyValue propertyName="type" value="change" />
<CompareBitmap target="cb" url="myBitmap.png" timeout="8000" />
</body>
</TestCase>
<TestCase testID="myStyleTest1">
<setup>
<ResetComponent target="cb" className="mx.controls::ComboBox" />
<SetProperty target="cb" propertyName="dataProvider" value="[1,2,3,4]" waitEvent="updateComplete" waitTarget="cb" />
<SetStyle target="cb" styleName="rollOverColor" value="0xFF0000" waitEvent="updateComplete" waitTarget="cb" />
</setup>
<body>
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseDown" localX="10" localY="10" waitEvent="open" waitTarget="cb" />
<DispatchMouseEvent target="cb.mx_internal:downArrowButton" type="mouseUp" localX="10" localY="10" />
<DispatchMouseEvent target="cb.dropdown" type="mouseOver" localX="10" localY="50" />
<AssertStyleValue target="cb" styleName="rollOverColor" value="0xFF0000" />
<AssertStyleValue target="cb.dropdown" styleName="rollOverColor" value="0xFF0000" />
<AssertPixelValue target="cb.dropdown" x="50" y="50" value="0xFF0000" />
<AssertPixelValue target="cb.dropdown" x="50" y="30" value="0xFF0000" />
</body>
</TestCase>
</testCases>
</UnitTester>