Source code

Revision control

Copy as Markdown

Other Tools

if (typeof(dojo) != 'undefined') { dojo.require('MochiKit.Logging'); }
if (typeof(JSAN) != 'undefined') { JSAN.use('MochiKit.Logging'); }
if (typeof(tests) == 'undefined') { tests = {}; }
tests.test_Logging = function (t) {
// just in case
logger.clear();
t.is( logLevelAtLeast('DEBUG')('INFO'), false, 'logLevelAtLeast false' );
t.is( logLevelAtLeast('WARNING')('INFO'), false, 'logLevelAtLeast true' );
t.ok( logger instanceof Logger, "global logger installed" );
var allMessages = [];
logger.addListener("allMessages", null,
bind(allMessages.push, allMessages));
var fatalMessages = [];
logger.addListener("fatalMessages", "FATAL",
bind(fatalMessages.push, fatalMessages));
var firstTwo = [];
logger.addListener("firstTwo", null,
bind(firstTwo.push, firstTwo));
log("foo");
var msgs = logger.getMessages();
t.is( msgs.length, 1, 'global log() put one message in queue' );
t.is( compare(allMessages, msgs), 0, "allMessages listener" );
var msg = msgs.pop();
t.is( compare(msg.info, ["foo"]), 0, "info matches" );
t.is( msg.level, "INFO", "level matches" );
logDebug("debugFoo");
t.is( msgs.length, 0, 'getMessages() returns copy' );
msgs = logger.getMessages();
t.is( compare(allMessages, msgs), 0, "allMessages listener" );
t.is( msgs.length, 2, 'logDebug()' );
msg = msgs.pop();
t.is( compare(msg.info, ["debugFoo"]), 0, "info matches" );
t.is( msg.level, "DEBUG", "level matches" );
logger.removeListener("firstTwo");
logError("errorFoo");
msgs = logger.getMessages();
t.is( compare(allMessages, msgs), 0, "allMessages listener" );
t.is( msgs.length, 3, 'logError()' );
msg = msgs.pop();
t.is( compare(msg.info, ["errorFoo"]), 0, "info matches" );
t.is( msg.level, "ERROR", "level matches" );
logWarning("warningFoo");
msgs = logger.getMessages();
t.is( compare(allMessages, msgs), 0, "allMessages listener" );
t.is( msgs.length, 4, 'logWarning()' );
msg = msgs.pop();
t.is( compare(msg.info, ["warningFoo"]), 0, "info matches" );
t.is( msg.level, "WARNING", "level matches" );
logFatal("fatalFoo");
msgs = logger.getMessages();
t.is( compare(allMessages, msgs), 0, "allMessages listener" );
t.is( msgs.length, 5, 'logFatal()' );
msg = msgs.pop();
t.is( compare(fatalMessages, [msg]), 0, "fatalMessages listener" );
t.is( compare(msg.info, ["fatalFoo"]), 0, "info matches" );
t.is( msg.level, "FATAL", "level matches" );
msgs = logger.getMessages(1);
t.is( compare(fatalMessages, msgs), 0, "getMessages with limit returns latest" );
logger.removeListener("allMessages");
logger.removeListener("fatalMessages");
t.is( compare(firstTwo, logger.getMessages().slice(0, 2)), 0, "firstTwo" );
logger.clear();
msgs = logger.getMessages();
t.is(msgs.length, 0, "clear removes existing messages");
logger.baseLog(LogLevel.INFO, 'infoFoo');
msg = logger.getMessages().pop();
t.is(msg.level, "INFO", "baseLog converts level")
logger.baseLog(45, 'errorFoo');
msg = logger.getMessages().pop();
t.is(msg.level, "ERROR", "baseLog converts ad-hoc level")
};