61c6ab3fb0
functional tests, unless a whole lot of mock objects are introduced, which isn't entirely out of the question). Uses JsUnit, which is included in this commit.
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;
|
|
} |