<?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="containers/Canvas/Properties/"  xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" testSWF="Canvas_deferredContentCreated_app.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;

		]]>
	</mx:Script>

    <!--
        This doesn't test deferred instantiation. It's just testing that deferredContentCreated
		is correct in very basic cases.
        
        Everything is in MXML, so don't call ResetComponent.

        We need a quick pause to wait for the app to finish opening.  Otherwise it launches and
        exits with no results.
    -->

	<testCases>
		<TestCase testID="Canvas_properties_deferredContentCreated_test1" description="Check deferredContentCreated for a Canvas." keywords="[Canvas,deferredContentCreated]">
			<body>
				<Pause timeout="100" />
				<AssertPropertyValue target="canvas1" propertyName ="deferredContentCreated" value="true"/>
				<AssertPropertyValue target="canvas2" propertyName ="deferredContentCreated" value="false"/>
				<AssertMethodValue method="value = FlexGlobals.topLevelApplication.canvas1.numChildren" value="1" />
				<AssertMethodValue method="value = FlexGlobals.topLevelApplication.canvas2.numChildren" value="0" />
			</body>
		</TestCase>
		
		<TestCase testID="Canvas_properties_deferredContentCreated_test2" description="auto" keywords="[Canvas,deferredContentCreated]">
			<body>
				<Pause timeout="100" />
				<SetProperty target="acc2" propertyName="selectedIndex" value="1" waitEvent="updateComplete" />
				<WaitForEffectsToEnd />
				<AssertPropertyValue target="canvas3" propertyName ="deferredContentCreated" value="true"/>
			</body>
		</TestCase>
    </testCases>
</UnitTester>
