import com.asunit.ui.*;
import com.asunit.framework.*;
import com.asunit.util.*;
import mx.controls.*;
class Main extends MovieClip {
public static var linkageId:String = "com.asunit.ui.Main";
var version:String = "2.8.0";
var flashIsTextEditorResult:Boolean;
var remoteVersionObj:RemoteVersion;
var localConn:LocalConnServer;
var outputLine:LocalConnServer;
var tResult:TestResult;
var tFailure:TestFailure;
var test:Test;
var intervalId:Number;
var items:Array;
var gutter:Number = 10;
var successes:Number = 0;
var failures:Number = 0;
var totalTests:Number = 0;
var output_txt:TextArea;
var clearAll:Button;
var reload:Button;
var outputPanel:TextArea;
var showSys:CheckBox;
var showSysSo:SharedObject;
var bar_mc:SuccessMeter;
public function Main() {
configureAssets();
items = new Array();
showSysSo = SharedObject.getLocal("showSysSoId");
_visible = false;
onEnterFrame = function() {
_visible = true;
remoteVersionObj = new RemoteVersion(this);
showSys.clickHandler = onShowClicked;
showSys.setSelected(showSysSo.data.isSelected);
onResize();
Stage.addListener(this);
delete onEnterFrame;
}
}
public function checkRemoteVersion(remoteVersion:String):Void {
var remNumber:Number = Number(remoteVersion.split(".").join(""));
var vers:Number = Number(getVersionNumber().split(".").join("").split(" [Release Candidate]").join(""));
if(remNumber > vers) {
var obj:Object = new Object();
obj.success = false;
obj.message = ">> There is a newer version of AsUnit (" + remoteVersion + ") available for download at: http://www.asunit.com";
addTests([obj]);
}
}
// Attached as clickHandler to the CheckBox
public function onShowClicked():Void {
_parent.onResize();
}
public function getVersionNumber():String {
return version;
}
public function onUnload():Void {
localConn.close();
outputLine.close();
saveTraceChoice();
}
public function saveTraceChoice():Void {
var success:Object = showSysSo.flush();
}
public function configureAssets() {
output_txt.vScrollPolicy = "auto";
reload.onRelease = function() {
_parent.onReload();
}
clearAll.onRelease = function() {
_parent.onClear();
}
}
public function clearTestDisplay():Void {
items = new Array();
refreshOutput();
}
public function onClear() {
MMExecute("fl.outputPanel.clear();");
clearTestDisplay();
}
public function onReload():Void {
_root.loadUi();
}
public function onLoad():Void {
init();
}
public function onResizeNoTrace():Void {
var w:Number = Stage.width-gutter*2;
var h:Number = Stage.height-(bar_mc._height + gutter*3);
outputPanel._visible = false;
output_txt.setSize(w, h);
output_txt._x = gutter;
showSys._x = gutter;
reload._x = showSys._x + showSys._width + gutter;
bar_mc._x = reload._x + reload._width + gutter;
output_txt._y = gutter;
bar_mc.setSize(w - (reload._x + reload._width), bar_mc._height);
reload._y = clearAll._y = bar_mc._y = output_txt._y + output_txt.height + gutter;
showSys._y = reload._y;
}
public function onResizeWithTrace():Void {
var w:Number = Stage.width-gutter*2;
var h:Number = Stage.height-(bar_mc._height + gutter*4);
outputPanel._visible = true;
outputPanel._x = gutter;
outputPanel._y = gutter;
outputPanel.setSize(w, h/2);
output_txt.setSize(w, h/2);
output_txt._y = outputPanel._y + outputPanel._height + gutter;
output_txt._x = gutter;
clearAll._x = output_txt._x;
showSys._x = gutter;
reload._x = showSys._x + showSys._width + gutter;
bar_mc._x = reload._x + reload._width + gutter;
bar_mc.setSize(w - (reload._x + reload._width), bar_mc._height);
reload._y = clearAll._y = bar_mc._y = output_txt._y + output_txt.height + gutter;
showSys._y = reload._y;
}
public function onResize():Void {
showSysSo.data.isSelected = showSys.selected;
showSysSo.flush();
if(showSys.selected) {
onResizeWithTrace();
} else {
onResizeNoTrace();
}
}
public function init():Void {
localConn = LocalConnGateway.createServer(this, "_AsUnitTestRunner");
outputLine = LocalConnGateway.createServer(this, "_outputLineLc");
output_txt.wordWrap = true;
refreshOutput();
}
public function onShowEcho(msg, category) {
msg = unescape(msg);
if(showSys.selected) {
outputPanel.text += msg;
} else {
MMExecute("fl.trace('" + msg + "');");
}
}
public function getFirstLine():String {
var str:String = "Version : " + getVersionNumber() + "\n";
if(localConn.status) {
str += "Unit Test UI Loaded at LocalConnection ID: '" + localConn.getId() + "'\n";
} else {
str += "ALERT : Unit Test UI LocalConnection Failed at ID : '" + localConn.getId() + "'\n";
}
if(outputLine.status) {
str += "Echo Output Loaded at LocalConnection ID: '" + outputLine.getId() + "'\n";
} else {
str += "ALERT : Echo Output LocalConnection Failed at ID : '" + outputLine.getId() + "'\n";
}
return str;
}
public function getTestResultString():String {
successes = 0;
failures = 0;
var str = "";
var fStr = "";
for(var i=0; i" + item.className + "\n";
} else {
str += "className : " + item.className + "\n";
}
// for(var i in item) {
// if(i == "className" && isWin) {
// str += i + " : " + "" + item[i] + "\n";
// } else {
// str += i + " : " + item[i] + "\n";
// }
// }
return str;
}
public function classNameClicked(name:String):Void {
name = name.split(".").join("/") + ".as";
var uri:String = "";
if(MMExecute('fl.version.indexOf("MAC");') == -1) {
if(flashIsTextEditor()) {
uri = getMacPath(name);
MMExecute('fl.openScript("' + uri + '");');;
} else {
uri = getWinPath(name);
MMExecute("FileIo.open('" + uri + "');");
}
}
else {
uri = getMacPath(name);
MMExecute('fl.openScript("' + uri + '");');;
}
}
public function getWinPath(suffix:String):String {
var flaUri:String = MMExecute("fl.getDocumentDOM().path");
var dPath = flaUri.split(Sys.getFileSeparator());
var sPath = suffix.split("/");
dPath.pop();
dPath = dPath.join("\\\\") + "\\\\" + sPath.join("\\\\");
dPath = dPath.split(" ").join("\\ ");
return dPath;
}
public function getMacPath(suffix:String):String {
return getCurrentUri(suffix);
}
public function getCurrentUri(suffix:String):String {
var flaUri:String = MMExecute("fl.getDocumentDOM().path");
var dPath = flaUri.split(Sys.getFileSeparator());
dPath.pop();
dPath = dPath.join("/")
// Perform Windows Colonoscopy
if(dPath.charAt(1) == ":") {
dPath = dPath.substring(0,1) + "|" + dPath.substring(2);
}
return "file:///" + dPath + "/" + suffix;
}
public function getTestNumberOutput():String {
return successes + " out of " + items.length + " Asserts passed.\n";
}
public function refreshOutput() {
output_txt.text = getFirstLine();
output_txt.text += "\n" + getTestResultString();
bar_mc.setSuccess((failures == 0));
if(intervalId == undefined) {
intervalId = setInterval(this, "scrollDown", 100);
}
}
public function scrollDown():Void {
output_txt.vPosition = output_txt.maxVPosition;
clearInterval(intervalId);
delete intervalId;
}
public function addTests(arr:Array) {
if(items == undefined) {
items = new Array();
}
for(var i = 0; i < arr.length; i++) {
items.push(arr[i]);
}
refreshOutput();
}
}