/**
*
* Copyright 2005 The Apache Software Foundation
*
* 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.
*/
package org.apache.geronimo.system.logging.log4j;
import junit.framework.TestCase;
import org.apache.log4j.Level;
/**
* Tests the {@link XLevel} class.
* @version $Rev$ $Date$
*/
public final class XLevelTest extends TestCase {
private static final int TRACE_SYSLOG_EQ = 7;
private static final String TRACE_STRING = "TRACE";
private static final int TRACE_INT = Level.DEBUG_INT - 1;
private static final int MOCK_INT = TRACE_INT - 99;
private final static class MockLevel extends Level {
MockLevel() {
super(MOCK_INT, "MOCK", 99);
}
}
private final static Level MOCK = new MockLevel();
/**
* Tests the constants declared in the {@link XLevel}.
* The {@link XLevel#TRACE_INT} value is tested to be defined as {@link Level#DEBUG_INT}-1.
* The {@link XLevel#TRACE} value is tested to be an instance of {@link XLevel},
* have a name "TRACE" and syslog level equivalent of <code>7</code>.
*/
public void testConstants() {
assertEquals("XLevel.TRACE_INT is defined as Level.DEBUG_INT-1", XLevel.TRACE_INT, TRACE_INT);
final Object o = XLevel.TRACE;
assertTrue("XLevel.TRACE is an instance of XLevel", o instanceof XLevel);
final XLevel traceLevel = (XLevel) o;
assertEquals("XLevel.TRACE syslog equivalent is indeed " + TRACE_SYSLOG_EQ, traceLevel.getSyslogEquivalent(), TRACE_SYSLOG_EQ);
assertEquals("XLevel.TRACE name is TRACE", traceLevel.toString(), TRACE_STRING);
assertEquals("XLevel.TRACE int level is " + TRACE_INT, traceLevel.toInt(), TRACE_INT);
}
/**
* Tests {@link XLevel#toLevel(java.lang.String, org.apache.log4j.Level) method.
* Tests that default value is returned if null value is passed.
* Tests that {@link XLevel#TRACE} is returned if the name is equal to "TRACE",
* irrespective of case.
* Tests that in all other cases the conversion is deferred to {@link Level#toLevel(java.lang.String, org.apache.log4j.Level)}.
* Tests that if conversion fails the specified default value is returned.
*/
public void testToLevelWithDefault() {
assertSame("Default value is indeed returned if null name is passed", XLevel.toLevel(null, MOCK), MOCK);
assertSame("XLevel.TRACE is returned if the name is equal to \"TRACE\" irrespecctive of case", XLevel.toLevel("trAce"), XLevel.TRACE);
Level levelResults = Level.toLevel("MOCK", MOCK);
Level xLevelResults = XLevel.toLevel("MOCK", MOCK);
assertSame("In all other cases conversion is deferred to Level", xLevelResults, levelResults);
assertSame("If conversion fails the default value is returned", xLevelResults, MOCK);
}
/**
* Tests {@link XLevel#toLevel(java.lang.String) method.
* Tests that this method simply delegates the work to
* {@link XLevel#toLevel(java.lang.String, org.apache.log4j.Level) with default value
* specified as {@link XLevel#TRACE}.
*/
public void testToLevel() {
assertSame("XLevel.TRACE is returned if null name is passed", XLevel.toLevel(null), XLevel.TRACE);
assertSame("XLevel.TRACE is returned if the name is equal to \"TRACE\" irrespective of case", XLevel.toLevel("trAce"), XLevel.TRACE);
Level levelResults = Level.toLevel("MOCK", XLevel.TRACE);
Level xLevelResults = XLevel.toLevel("MOCK");
assertSame("In all other cases conversion is deferred to Level", xLevelResults, levelResults);
assertSame("If conversion fails XLevel.TRACE is returned", xLevelResults, XLevel.TRACE);
}
/**
* Tests {@link XLevel#toLevel(int) method.
* Tests that if level is equal to {@link XLevel#TRACE_INT} {@link XLevel#TRACE} is returned.
* Tests that in other cases the conversion is deferred to {@link Level#toLevel(int)}
* Tests that if conversion fails the {@link Level#DEBUG} is returned.
*/
public void testToLevelInt() {
assertSame("XLevel.TRACE is returned is " + TRACE_INT + "is passed", XLevel.toLevel(TRACE_INT), XLevel.TRACE);
Level levelResults = Level.toLevel(MOCK_INT);
Level xLevelResults = XLevel.toLevel(MOCK_INT);
assertSame("In all other cases conversion is deferred to Level", xLevelResults, levelResults);
assertSame("If conversion fails Level.DEBUG is returned", xLevelResults, Level.DEBUG);
}
}