// Copyright 2010 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.LogBufferTest'); goog.setTestOnly('goog.debug.LogBufferTest'); goog.require('goog.debug.LogBuffer'); goog.require('goog.debug.Logger'); goog.require('goog.testing.jsunit'); var DUMMY_LEVELS = [ goog.debug.Logger.Level.INFO, goog.debug.Logger.Level.WARNING, goog.debug.Logger.Level.SEVERE ]; var DUMMY_MESSAGES = ['a', 'b', 'c']; var DUMMY_NAMES = ['X', 'Y', 'Z']; var buffer; var dummyIndex = 0; function setUp() { goog.debug.LogBuffer.CAPACITY = 4; goog.debug.LogBuffer.instance_ = null; buffer = goog.debug.LogBuffer.getInstance(); } function verifyRecord(expectedIndex, record) { var index = expectedIndex % DUMMY_MESSAGES.length; var message = DUMMY_MESSAGES[index]; var level = DUMMY_LEVELS[index]; var name = DUMMY_NAMES[index]; assertEquals( 'Wrong level for record ' + expectedIndex, level, record.getLevel()); assertEquals( 'Wrong message for record ' + expectedIndex, message, record.getMessage()); assertEquals( 'Wrong name for record ' + expectedIndex, name, record.getLoggerName()); } function addAndVerifyRecord() { var index = dummyIndex % DUMMY_MESSAGES.length; var level = DUMMY_LEVELS[index]; var message = DUMMY_MESSAGES[index]; var name = DUMMY_NAMES[index]; var record = buffer.addRecord(level, message, name); verifyRecord(dummyIndex, record); dummyIndex++; } function addSomeRecords(howMany) { for (var i = 0; i < howMany; i++) { addAndVerifyRecord(); } } function testAddRecord() { addSomeRecords(goog.debug.LogBuffer.CAPACITY * 3); } function testIsFull() { assertFalse('Should not be full.', buffer.isFull_); addSomeRecords(goog.debug.LogBuffer.CAPACITY * 1.5); assertTrue('Should be full.', buffer.isFull_); buffer.clear(); assertFalse('Should not be full after clear().', buffer.isFull_); addSomeRecords(goog.debug.LogBuffer.CAPACITY - 1); assertFalse('Should not be full but almost full.', buffer.isFull_); } function testForEachRecord() { // Test with it half full. var howMany1 = goog.debug.LogBuffer.CAPACITY / 2; addSomeRecords(howMany1); var counter1 = 0; buffer.forEachRecord(function(record) { verifyRecord(counter1++, record); }); assertEquals('Wrong number of records when half full.', howMany1, counter1); // Test with it full. var howMany2 = goog.debug.LogBuffer.CAPACITY; addSomeRecords(howMany2); var index = counter1; buffer.forEachRecord(function(record) { verifyRecord(index++, record); }); assertEquals( 'Wrong number of records when full.', howMany1 + howMany2, index); }