123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- // Copyright 2011 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed 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.
- goog.provide('goog.debug.ConsoleTest');
- goog.setTestOnly('goog.debug.ConsoleTest');
- goog.require('goog.debug.Console');
- goog.require('goog.debug.LogRecord');
- goog.require('goog.debug.Logger');
- goog.require('goog.testing.jsunit');
- goog.require('goog.testing.recordFunction');
- var debugConsole;
- var mockConsole;
- var loggerName1;
- var logRecord1;
- var loggerName2;
- var logRecord2;
- var loggerName3;
- var logRecord3;
- function setUp() {
- debugConsole = new goog.debug.Console();
- // Set up a recorder for mockConsole.log
- mockConsole = {log: goog.testing.recordFunction()};
- goog.debug.Console.console_ = mockConsole;
- // Test logger 1.
- loggerName1 = 'this.is.a.logger';
- logRecord1 = new goog.debug.LogRecord(
- goog.debug.Logger.Level.INFO, 'this is a statement', loggerName1);
- // Test logger 2.
- loggerName2 = 'name.of.logger';
- logRecord2 = new goog.debug.LogRecord(
- goog.debug.Logger.Level.WARNING, 'hey, this is a warning', loggerName2);
- // Test logger 3.
- loggerName3 = 'third.logger';
- logRecord3 = new goog.debug.LogRecord(
- goog.debug.Logger.Level.SEVERE, 'seriously, this statement is serious',
- loggerName3);
- }
- function testLoggingWithSimpleConsole() {
- // Make sure all messages use the log function.
- logAtAllLevels('test message');
- assertEquals(9, mockConsole.log.getCallCount());
- }
- function testLoggingWithInfoSupported() {
- // Make sure the log function is the default when only 'info' is available.
- mockConsole['info'] = goog.testing.recordFunction();
- logAtAllLevels('test message');
- assertEquals(1, mockConsole.info.getCallCount());
- assertEquals(8, mockConsole.log.getCallCount());
- }
- function testLoggingWithErrorSupported() {
- // Make sure the log function is the default when only 'error' is available.
- mockConsole['error'] = goog.testing.recordFunction();
- logAtAllLevels('test message');
- assertEquals(1, mockConsole.error.getCallCount());
- assertEquals(8, mockConsole.log.getCallCount());
- }
- function testLoggingWithWarningSupported() {
- // Make sure the log function is the default when only 'warn' is available.
- mockConsole['warn'] = goog.testing.recordFunction();
- logAtAllLevels('test message');
- assertEquals(1, mockConsole.warn.getCallCount());
- assertEquals(8, mockConsole.log.getCallCount());
- }
- function testLoggingWithDebugSupported() {
- // Make sure the log function is the default when only 'debug' is available.
- mockConsole['debug'] = goog.testing.recordFunction();
- logAtAllLevels('test message');
- assertEquals(6, mockConsole.debug.getCallCount());
- assertEquals(3, mockConsole.log.getCallCount());
- }
- function testLoggingWithEverythingSupported() {
- mockConsole['info'] = goog.testing.recordFunction();
- mockConsole['error'] = goog.testing.recordFunction();
- mockConsole['warn'] = goog.testing.recordFunction();
- mockConsole['debug'] = goog.testing.recordFunction();
- logAtAllLevels('test message');
- assertEquals(1, mockConsole.info.getCallCount());
- assertEquals(1, mockConsole.error.getCallCount());
- assertEquals(1, mockConsole.warn.getCallCount());
- assertEquals(6, mockConsole.debug.getCallCount());
- }
- function testAddLogRecordWithoutFilters() {
- // Make sure none are filtered.
- debugConsole.addLogRecord(logRecord1);
- assertEquals(1, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord2);
- assertEquals(2, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord3);
- assertEquals(3, mockConsole.log.getCallCount());
- }
- function testAddLogRecordWithOneFilter() {
- // Filter #2 and make sure the filtering is correct for all records.
- debugConsole.addFilter(loggerName2);
- debugConsole.addLogRecord(logRecord1);
- assertEquals(1, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord2);
- assertEquals(1, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord3);
- assertEquals(2, mockConsole.log.getCallCount());
- }
- function testAddLogRecordWithMoreThanOneFilter() {
- // Filter #1 and #3 and check.
- debugConsole.addFilter(loggerName1);
- debugConsole.addFilter(loggerName3);
- debugConsole.addLogRecord(logRecord1);
- assertEquals(0, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord2);
- assertEquals(1, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord3);
- assertEquals(1, mockConsole.log.getCallCount());
- }
- function testAddLogRecordWithAddAndRemoveFilter() {
- debugConsole.addFilter(loggerName1);
- debugConsole.addFilter(loggerName2);
- debugConsole.removeFilter(loggerName1);
- debugConsole.removeFilter(loggerName2);
- debugConsole.addLogRecord(logRecord1);
- assertEquals(1, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord2);
- assertEquals(2, mockConsole.log.getCallCount());
- debugConsole.addLogRecord(logRecord3);
- assertEquals(3, mockConsole.log.getCallCount());
- }
- function testSetConsole() {
- var fakeConsole = {log: goog.testing.recordFunction()};
- logAtLevel(goog.debug.Logger.Level.INFO, 'test message 1');
- logAtAllLevels('test message 1');
- assertEquals(0, fakeConsole.log.getCallCount());
- goog.debug.Console.setConsole(fakeConsole);
- logAtLevel(goog.debug.Logger.Level.INFO, 'test message 2');
- assertEquals(1, fakeConsole.log.getCallCount());
- }
- /**
- * Logs the message at all log levels.
- * @param {string} message The message to log.
- */
- function logAtAllLevels(message) {
- logAtLevel(goog.debug.Logger.Level.SHOUT, message);
- logAtLevel(goog.debug.Logger.Level.SEVERE, message);
- logAtLevel(goog.debug.Logger.Level.WARNING, message);
- logAtLevel(goog.debug.Logger.Level.INFO, message);
- logAtLevel(goog.debug.Logger.Level.CONFIG, message);
- logAtLevel(goog.debug.Logger.Level.FINE, message);
- logAtLevel(goog.debug.Logger.Level.FINER, message);
- logAtLevel(goog.debug.Logger.Level.FINEST, message);
- logAtLevel(goog.debug.Logger.Level.ALL, message);
- }
- /**
- * Adds a log record to the debug console.
- * @param {!goog.debug.Logger.Level} level The level at which to log.
- * @param {string} message The message to log.
- */
- function logAtLevel(level, message) {
- debugConsole.addLogRecord(
- new goog.debug.LogRecord(level, message, loggerName1));
- }
|