1package test;
2
3import junit.framework.TestCase;
4
5import org.slf4j.LoggerFactory;
6
7import ch.qos.logback.classic.LoggerContext;
8import ch.qos.logback.classic.spi.LoggingEvent;
9import ch.qos.logback.core.read.ListAppender;
10import org.apache.log4j.Level;
11
12/**
13 * A class that tests the invocation of the org.apache.log4j.Logger class that
14 * belongs to the log4j-bridge package
15 *
16 * @author Sébastien Pennec
17 * @author Ceki Gülcü
18 */
19
20public class LoggerTest extends TestCase {
21
22  LoggerContext context;
23  ListAppender<LoggingEvent> appender;
24  ch.qos.logback.classic.Logger logbackLogger;
25  org.apache.log4j.Logger log4jLogger;
26
27  public void setUp() throws Exception {
28    context = (LoggerContext) LoggerFactory.getILoggerFactory();
29    context.shutdownAndReset();
30    appender = new ListAppender<LoggingEvent>();
31    appender.setContext(context);
32    appender.setName("listAppender");
33    appender.start();
34    ch.qos.logback.classic.Logger lbLogger = context
35        .getLogger(LoggerContext.ROOT_NAME);
36    lbLogger.addAppender(appender);
37
38    log4jLogger = org.apache.log4j.Logger.getLogger(LoggerTest.class);
39    logbackLogger = context.getLogger(LoggerTest.class);
40    super.setUp();
41  }
42
43  public void tearDown() throws Exception {
44    appender.stop();
45    context.stop();
46    appender = null;
47    context = null;
48    logbackLogger = null;
49    log4jLogger = null;
50    super.tearDown();
51  }
52
53  public void testLogWithObjectMessages() {
54    LoggingEvent event;
55
56    log4jLogger.debug("test");
57    event = appender.list.get(0);
58    assertEquals("test", event.getMessage());
59    appender.list.clear();
60
61    log4jLogger.debug(null);
62    event = appender.list.get(0);
63    assertEquals(null, event.getMessage());
64    appender.list.clear();
65
66    DummyObject dummy = new DummyObject();
67    log4jLogger.debug(dummy);
68    event = appender.list.get(0);
69    assertEquals(dummy.toString(), event.getMessage());
70    appender.list.clear();
71  }
72
73  public void testIsEnabledAPI() {
74    assertFalse(log4jLogger.isTraceEnabled());
75    assertTrue(log4jLogger.isDebugEnabled());
76    assertTrue(log4jLogger.isInfoEnabled());
77    assertTrue(log4jLogger.isWarnEnabled());
78    assertTrue(log4jLogger.isErrorEnabled());
79  }
80
81  public void testPrintAPI() {
82    Exception e = new Exception("just testing");
83
84    log4jLogger.trace(null);
85    assertEquals(1, appender.list.size());
86    appender.list.clear();
87
88    log4jLogger.debug(null);
89    assertEquals(1, appender.list.size());
90    appender.list.clear();
91
92    log4jLogger.debug("debug message");
93    assertEquals(1, appender.list.size());
94    appender.list.clear();
95
96    log4jLogger.info(null);
97    assertEquals(1, appender.list.size());
98    appender.list.clear();
99
100    log4jLogger.info("info  message");
101    assertEquals(1, appender.list.size());
102    appender.list.clear();
103
104    log4jLogger.warn(null);
105    assertEquals(1, appender.list.size());
106    appender.list.clear();
107
108    log4jLogger.warn("warn message");
109    assertEquals(1, appender.list.size());
110    appender.list.clear();
111
112    log4jLogger.error(null);
113    assertEquals(1, appender.list.size());
114    appender.list.clear();
115
116    log4jLogger.error("error message");
117    assertEquals(1, appender.list.size());
118    appender.list.clear();
119
120    log4jLogger.debug(null, e);
121    assertEquals(1, appender.list.size());
122    appender.list.clear();
123
124    log4jLogger.debug("debug message", e);
125    assertEquals(1, appender.list.size());
126    appender.list.clear();
127
128    log4jLogger.info(null, e);
129    assertEquals(1, appender.list.size());
130    appender.list.clear();
131
132    log4jLogger.info("info  message", e);
133    assertEquals(1, appender.list.size());
134    appender.list.clear();
135
136    log4jLogger.warn(null, e);
137    assertEquals(1, appender.list.size());
138    appender.list.clear();
139
140    log4jLogger.warn("warn message", e);
141    assertEquals(1, appender.list.size());
142    appender.list.clear();
143
144    log4jLogger.error(null, e);
145    assertEquals(1, appender.list.size());
146    appender.list.clear();
147
148    log4jLogger.error("error message", e);
149    assertEquals(1, appender.list.size());
150    appender.list.clear();
151
152  }
153
154  public void testLogAPI() {
155    log4jLogger.log("x", Level.TRACE, "x", null);
156    assertEquals(0, appender.list.size());
157
158    log4jLogger.log("x", Level.DEBUG, "x", null);
159    log4jLogger.log("x", Level.INFO, "x", null);
160    log4jLogger.log("x", Level.WARN, "x", null);
161    log4jLogger.log("x", Level.ERROR, "x", null);
162    log4jLogger.log("x", Level.FATAL, "x", null);
163
164    assertEquals(5, appender.list.size());
165    appender.list.clear();
166
167  }
168
169}
170