<?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="Validators/CurrencyValidator/Properties/"  
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns="*" 
    testSWF="Validators_Currency_customSeparator.mxml">

	<!-- this set of lines form a tNbplate 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="CurrencyValidator_customSeparator"  keywords="[allowNegative, CurrencyValidator]" description="Test CurrencyValidator with a custom decimal separator">
			<setup>
				<ResetComponent target="inputValue" className="mx.controls.Label"  waitEvent="updateComplete" /> 				
				<SetProperty target="inputValue" propertyName="text" value="3,6" waitEvent="updateComplete" />
			</setup>
			<body>
				<AssertPropertyValue target="result" propertyName="text" value="valid"/>
			</body>  
		</TestCase>
		
		<TestCase testID="CurrencyValidator_customSeparatorMax"  keywords="[allowNegative, CurrencyValidator]" description="Test CurrencyValidator with a custom decimal separator">
			<setup>
				<ResetComponent target="inputValue" className="mx.controls.Label"  waitEvent="updateComplete" /> 				
				<SetProperty target="inputValue" propertyName="text" value="4,6" waitEvent="updateComplete" />				
			</setup>
			<body>
				<AssertPropertyValue target="result" propertyName="text" value="invalid"/>
			</body>  
		</TestCase>		
		
		<TestCase testID="CurrencyValidator_customSeparatorMin"  keywords="[allowNegative, CurrencyValidator]" description="Test CurrencyValidator with a custom decimal separator">
			<setup>
				<ResetComponent target="inputValue" className="mx.controls.Label"  waitEvent="updateComplete" /> 				
				<SetProperty target="inputValue" propertyName="text" value="1,1" waitEvent="updateComplete" />				
			</setup>
			<body>
				<AssertPropertyValue target="result" propertyName="text" value="invalid"/>
			</body>  
		</TestCase>			
		
	</testCases>
</UnitTester>
