blob: e76d5f51984119679c7691d2307c419fca4e185e [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// 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.
//
////////////////////////////////////////////////////////////////////////////////
package UnitTest.Tests
{
import UnitTest.ExtendedClasses.TestSuiteExtended;
import UnitTest.ExtendedClasses.VellumTestCase;
import UnitTest.Fixtures.FileRepository;
import UnitTest.Fixtures.TestConfig;
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.text.engine.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
import flashx.textLayout.elements.*;
import flashx.textLayout.property.*;
import flashx.textLayout.tlf_internal;
import mx.containers.Canvas;
import mx.utils.LoaderUtil;
public class SWFTest extends VellumTestCase
{
public function SWFTest(methodName:String, testID:String, testConfig:TestConfig, testCaseXML:XML=null)
{
super(methodName, testID, testConfig, testCaseXML);
}
public static function suiteFromXML(testListXML:XML, testConfig:TestConfig, ts:TestSuiteExtended):void
{
var testCaseClass:Class = SWFTest;
VellumTestCase.suiteFromXML(testCaseClass, testListXML, testConfig, ts);
}
public var ldr:Loader;
public var load_file:String;
public var thing1:Sprite = new Sprite();
public function LoadTestSWF():void
{
load_file = TestData.swf;
ldr = new Loader();
ldr.load(new URLRequest(LoaderUtil.createAbsoluteURL(baseURL,"../../asPrivateTestApps/bin/" + load_file)));
var func:Function = addAsync(validateLoad, 10000, null);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, func, false, 0, true);
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, true);
}
public function validateLoad(e:Event):void
{
// If privateTestApps doesn't exist, then don't error.
// There are some tests that rely on embedded fonts we can't distribute.
if (!(e is ErrorEvent))
{
var canvas:Canvas = testApp.getDisplayObject();
canvas.rawChildren.addChild(thing1);
thing1.addChild(ldr);
var result:String = ldr.content["validateTest"]();
assertTrue (result, result=="");
}
}
public function TextLayoutFormatInspectable():void
{ load_file = TestData.swf; LoadInspectableTest("../../asTestApps/bin/" + load_file); }
public function TabStopFormatInspectable():void
{ load_file = TestData.swf; LoadInspectableTest("../../asTestApps/bin/" + load_file); }
private function LoadInspectableTest(fileName:String):void
{
ldr = new Loader();
ldr.load(new URLRequest(LoaderUtil.createAbsoluteURL(baseURL,fileName)));
var func:Function = addAsync(validateInspectableLoad, 10000, null);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, func, false, 0, true);
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, true);
}
public function validateInspectableLoad(e:Event):void
{
assertTrue("Error loading inspectable swf:" + e.toString(),!(e is ErrorEvent));
var canvas:Canvas = testApp.getDisplayObject();
canvas.rawChildren.addChild(thing1);
// can causes a preloader failure
thing1.addChild(ldr);
ldr.content["validate"]();
}
private var exceptionList:Array;
/** Load a dependency checking swf */
private function loadDC(exceptions:Array):void
{
load_file = TestData.swf;
ldr = new Loader();
// load these into a separate application domain
var loaderContext:LoaderContext = new LoaderContext(false, new ApplicationDomain());
ldr.load(new URLRequest(LoaderUtil.createAbsoluteURL(baseURL,"../../asPrivateTestApps/bin/" + load_file)),loaderContext);
var func:Function = addAsync(validateLoadDC, 10000, null);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, func, false, 0, true);
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, func, false, 0, true);
exceptionList = exceptions;
}
/** This is for a known compiler bug. The event metadata on TextFlow causes these classes to be included in the final SWF.
* Remove this when http://bugs.adobe.com/jira/browse/ASC-4092 is fixed. */
static private var DCCoreOnlyExceptions:Array = [
"flashx.textLayout.events.FlowOperationEvent",
"flashx.textLayout.events.SelectionEvent",
"flashx.textLayout.edit.IEditManager",
"flashx.textLayout.edit.TextScrap",
"flashx.textLayout.operations.FlowOperation",
"flashx.undo.IOperation",
"flashx.undo.IUndoManager"
];
public function LoadDCCoreOnly():void
{ loadDC(DCCoreOnlyExceptions); }
public function LoadDCCoreConversionOnly():void
{ loadDC(DCCoreOnlyExceptions); }
public function LoadDCCoreSelectionManagerOnly():void
{ loadDC([]); }
public function validateLoadDC(e:Event):void
{
// If privateTestApps doesn't exist, then don't error.
// There are some tests that rely on embedded fonts we can't distribute.
if (!(e is ErrorEvent))
{
var canvas:Canvas = testApp.getDisplayObject();
canvas.rawChildren.addChild(thing1);
thing1.addChild(ldr);
var result:String = ldr.content["validateTest"](exceptionList);
assertTrue (result, result=="");
}
}
public override function tearDown():void
{
if (thing1.parent)
{
var canvas:Canvas = testApp.getDisplayObject();
canvas.rawChildren.removeChild(thing1);
}
super.tearDown();
}
}
}