<?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="Printing/Properties/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="FlexPrintJob_Basic.mxml">

	<!-- this set of lines Alert 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.printing.FlexPrintJob;
			import mx.controls.Alert;
	]]>
	</mx:Script>

	<testCases>

		<TestCase testID="PrintJob_Properties_default_orientation" description="Tests if the printJob property of FlexPrintJob can be accessed"  keywords="[FlexPrintJob, PrintJob]">
			<setup>
				<RunCode code="application.fPrintJob = new FlexPrintJob()" />
				<RunCode code="application.setOrientation()" />
			</setup>
			<body>
                <AssertPropertyValue target="printJobOrientation" propertyName="text"  value="0" />
			</body>  
		</TestCase>

	</testCases>
</UnitTester>
