<?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="LangPacks/ChineseSimplified/tests/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="LangPackApp.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[
	]]>
	</mx:Script>

	<testCases>
                <TestCase testID="CN_DateChooser_ChineseSimplified_Layout" description="Test that Japanese DateChooser layout is correct." keywords="[DateChooser, layout]">
			<setup>
			    <ResetComponent target="dc" className="mx.controls.DateChooser"  waitEvent="updateComplete" waitTarget="dc"/> 
			    <SetProperty target="dc" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" waitEvent="updateComplete" waitTarget="dc"/>
			</setup>
			<body>
				<CompareBitmap target="dc" url="../tests/baselines/$testID.png" timeout="5000" />
			</body>
		</TestCase>

		<TestCase testID="CN_DateChooser_Property_DayNames_Default" keywords="[dayNames, DateChooser]">
			<setup>
				<ResetComponent target="dc" className="mx.controls.DateChooser"  waitEvent="updateComplete" waitTarget="dc"/> 
			    <SetProperty target="dc" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" waitEvent="updateComplete" waitTarget="dc"/>
			</setup>
			<body>
				<AssertPropertyValue target="dc" propertyName="dayNames" value="['日','一','二','三','四','五','六']" />
			</body>
		</TestCase>

		<TestCase testID="CN_DateChooser_Property_MonthNames_Default" keywords="[monthNames, DateChooser]">
			<setup>
				<ResetComponent target="dc" className="mx.controls.DateChooser"  waitEvent="updateComplete" waitTarget="dc"/> 
			    <SetProperty target="dc" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" waitEvent="updateComplete" waitTarget="dc"/>
			</setup>
			<body>
				<AssertPropertyValue target="dc" propertyName="monthNames" value="['一','二','三','四','五','六','七','八','九','十','十一','十二']" />
			</body>
		</TestCase>

    <TestCase testID="CN_DateChooser_Property_yearSymbol_Default"  keywords="[yearSymbol, DateChooser]">
			<setup>
				<ResetComponent target="dc" className="mx.controls.DateChooser"  waitEvent="updateComplete" waitTarget="dc"/> 
			    <SetProperty target="dc" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" waitEvent="updateComplete" waitTarget="dc"/>				
			</setup>
			<body> 
				<AssertPropertyValue target="dc" propertyName="yearSymbol" value="年" />
			</body>
		</TestCase>

    <TestCase testID="CN_DateChooser_Property_monthSymbol_Default"  keywords="[monthSymbol, DateChooser]">
			<setup>
				<ResetComponent target="dc" className="mx.controls.DateChooser"  waitEvent="updateComplete" waitTarget="dc"/> 
			    <SetProperty target="dc" propertyName="selectedDate" valueExpression="value=new Date(2005, 2, 5)" waitEvent="updateComplete" waitTarget="dc"/>				
			</setup>
			<body> 
				<AssertPropertyValue target="dc" propertyName="monthSymbol" value="月" />
			</body>
		</TestCase>

	</testCases>

</UnitTester>
