102 lines
3.8 KiB
JavaScript
102 lines
3.8 KiB
JavaScript
var TRACE_LEVEL_NONE = new JsUnitTraceLevel(0, null);
|
|
var TRACE_LEVEL_WARNING = new JsUnitTraceLevel(1, "#FF0000");
|
|
var TRACE_LEVEL_INFO = new JsUnitTraceLevel(2, "#009966");
|
|
var TRACE_LEVEL_DEBUG = new JsUnitTraceLevel(3, "#0000FF");
|
|
|
|
function JsUnitTracer(testManager) {
|
|
this._testManager = testManager;
|
|
this._traceWindow = null;
|
|
this.popupWindowsBlocked = false;
|
|
}
|
|
|
|
JsUnitTracer.prototype.initialize = function() {
|
|
if (this._traceWindow != null && top.testManager.closeTraceWindowOnNewRun.checked)
|
|
this._traceWindow.close();
|
|
this._traceWindow = null;
|
|
}
|
|
|
|
JsUnitTracer.prototype.finalize = function() {
|
|
if (this._traceWindow != null) {
|
|
this._traceWindow.document.write('<\/body>\n<\/html>');
|
|
this._traceWindow.document.close();
|
|
}
|
|
}
|
|
|
|
JsUnitTracer.prototype.warn = function() {
|
|
this._trace(arguments[0], arguments[1], TRACE_LEVEL_WARNING);
|
|
}
|
|
|
|
JsUnitTracer.prototype.inform = function() {
|
|
this._trace(arguments[0], arguments[1], TRACE_LEVEL_INFO);
|
|
}
|
|
|
|
JsUnitTracer.prototype.debug = function() {
|
|
this._trace(arguments[0], arguments[1], TRACE_LEVEL_DEBUG);
|
|
}
|
|
|
|
JsUnitTracer.prototype._trace = function(message, value, traceLevel) {
|
|
if (!top.shouldSubmitResults() && this._getChosenTraceLevel().matches(traceLevel)) {
|
|
var traceString = message;
|
|
if (value)
|
|
traceString += ': ' + value;
|
|
var prefix = this._testManager.getTestFileName() + ":" +
|
|
this._testManager.getTestFunctionName() + " - ";
|
|
this._writeToTraceWindow(prefix, traceString, traceLevel);
|
|
}
|
|
}
|
|
|
|
JsUnitTracer.prototype._getChosenTraceLevel = function() {
|
|
var levelNumber = eval(top.testManager.traceLevel.value);
|
|
return traceLevelByLevelNumber(levelNumber);
|
|
}
|
|
|
|
JsUnitTracer.prototype._writeToTraceWindow = function(prefix, traceString, traceLevel) {
|
|
var htmlToAppend = '<p class="jsUnitDefault">' + prefix + '<font color="' + traceLevel.getColor() + '">' + traceString + '</font><\/p>\n';
|
|
this._getTraceWindow().document.write(htmlToAppend);
|
|
}
|
|
|
|
JsUnitTracer.prototype._getTraceWindow = function() {
|
|
if (this._traceWindow == null && !top.shouldSubmitResults() && !this.popupWindowsBlocked) {
|
|
this._traceWindow = window.open('', '', 'width=600, height=350,status=no,resizable=yes,scrollbars=yes');
|
|
if (!this._traceWindow)
|
|
this.popupWindowsBlocked = true;
|
|
else {
|
|
var resDoc = this._traceWindow.document;
|
|
resDoc.write('<html>\n<head>\n<link rel="stylesheet" href="css/jsUnitStyle.css">\n<title>Tracing - JsUnit<\/title>\n<head>\n<body>');
|
|
resDoc.write('<h2>Tracing - JsUnit<\/h2>\n');
|
|
resDoc.write('<p class="jsUnitDefault"><i>(Traces are color coded: ');
|
|
resDoc.write('<font color="' + TRACE_LEVEL_WARNING.getColor() + '">Warning</font> - ');
|
|
resDoc.write('<font color="' + TRACE_LEVEL_INFO.getColor() + '">Information</font> - ');
|
|
resDoc.write('<font color="' + TRACE_LEVEL_DEBUG.getColor() + '">Debug</font>');
|
|
resDoc.write(')</i></p>');
|
|
}
|
|
}
|
|
return this._traceWindow;
|
|
}
|
|
|
|
if (xbDEBUG.on) {
|
|
xbDebugTraceObject('window', 'JsUnitTracer');
|
|
}
|
|
|
|
function JsUnitTraceLevel(levelNumber, color) {
|
|
this._levelNumber = levelNumber;
|
|
this._color = color;
|
|
}
|
|
|
|
JsUnitTraceLevel.prototype.matches = function(anotherTraceLevel) {
|
|
return this._levelNumber >= anotherTraceLevel._levelNumber;
|
|
}
|
|
|
|
JsUnitTraceLevel.prototype.getColor = function() {
|
|
return this._color;
|
|
}
|
|
|
|
function traceLevelByLevelNumber(levelNumber) {
|
|
switch (levelNumber) {
|
|
case 0: return TRACE_LEVEL_NONE;
|
|
case 1: return TRACE_LEVEL_WARNING;
|
|
case 2: return TRACE_LEVEL_INFO;
|
|
case 3: return TRACE_LEVEL_DEBUG;
|
|
}
|
|
return null;
|
|
} |