1
2
3
4
5
6
7
8 package org.codehaus.dna.impl;
9
10 import junit.framework.TestCase;
11 import org.apache.log4j.Appender;
12 import org.apache.log4j.Level;
13 import org.apache.log4j.Logger;
14 import org.codehaus.dna.impl.Log4JLogger;
15
16 public class Log4JLoggerTestCase
17 extends TestCase
18 {
19 public void testLog4JLoggerEmptyCtor()
20 throws Exception
21 {
22 try
23 {
24 new Log4JLogger( null );
25 }
26 catch( NullPointerException npe )
27 {
28 assertEquals( "npe.getMessage()", "logger", npe.getMessage() );
29 }
30 }
31
32 public void testLog4JLoggerGetChildLogger()
33 throws Exception
34 {
35 final MockAppender target = new MockAppender();
36 final Log4JLogger logger = createLogger( target, Level.DEBUG );
37
38 assertNotSame( "logger.getChildLogger == logger",
39 logger,
40 logger.getChildLogger( "whatever" ) );
41 }
42
43 public void testLog4JLoggerTraceEnabled()
44 throws Exception
45 {
46 final Level level = Level.DEBUG;
47 final Level type = Level.DEBUG;
48 final String message = "Meep!";
49 final Throwable throwable = null;
50 final boolean output = true;
51
52 final MockAppender target = new MockAppender();
53 final Log4JLogger logger = createLogger( target, level );
54 logger.trace( message );
55 checkLogger( target, output, message, throwable, type );
56 }
57
58 public void testLog4JLoggerTraceDisabled()
59 throws Exception
60 {
61 final Level level = Level.ERROR;
62 final String message = "Meep!";
63
64 final MockAppender target = new MockAppender();
65 final Log4JLogger logger = createLogger( target, level );
66 logger.trace( message );
67 checkLogger( target, false, null, null, null );
68 }
69
70 public void testLog4JLoggerTraceWithExceptionEnabled()
71 throws Exception
72 {
73 final Level level = Level.DEBUG;
74 final Level type = Level.DEBUG;
75 final String message = "Meep!";
76 final Throwable throwable = new Throwable();
77 final boolean output = true;
78
79 final MockAppender target = new MockAppender();
80 final Log4JLogger logger = createLogger( target, level );
81
82 logger.trace( message, throwable );
83 checkLogger( target, output, message, throwable, type );
84 }
85
86 public void testLog4JLoggerTraceWithExceptionDisabled()
87 throws Exception
88 {
89 final Level level = Level.ERROR;
90 final String message = "Meep!";
91 final Throwable throwable = new Throwable();
92
93 final MockAppender target = new MockAppender();
94 final Log4JLogger logger = createLogger( target, level );
95
96 logger.trace( message, throwable );
97 checkLogger( target, false, null, null, null );
98 }
99
100 public void testLog4JLoggerDebugEnabled()
101 throws Exception
102 {
103 final Level level = Level.DEBUG;
104 final Level type = Level.DEBUG;
105 final String message = "Meep!";
106 final Throwable throwable = null;
107 final boolean output = true;
108
109 final MockAppender target = new MockAppender();
110 final Log4JLogger logger = createLogger( target, level );
111 logger.debug( message );
112 checkLogger( target, output, message, throwable, type );
113 }
114
115 public void testLog4JLoggerDebugDisabled()
116 throws Exception
117 {
118 final Level level = Level.ERROR;
119 final String message = "Meep!";
120
121 final MockAppender target = new MockAppender();
122 final Log4JLogger logger = createLogger( target, level );
123 logger.debug( message );
124 checkLogger( target, false, null, null, null );
125 }
126
127 public void testLog4JLoggerDebugWithExceptionEnabled()
128 throws Exception
129 {
130 final Level level = Level.DEBUG;
131 final Level type = Level.DEBUG;
132 final String message = "Meep!";
133 final Throwable throwable = new Throwable();
134 final boolean output = true;
135
136 final MockAppender target = new MockAppender();
137 final Log4JLogger logger = createLogger( target, level );
138 logger.debug( message, throwable );
139 checkLogger( target, output, message, throwable, type );
140 }
141
142 public void testLog4JLoggerDebugWithExceptionDisabled()
143 throws Exception
144 {
145 final Level level = Level.ERROR;
146 final String message = "Meep!";
147 final Throwable throwable = new Throwable();
148
149 final MockAppender target = new MockAppender();
150 final Log4JLogger logger = createLogger( target, level );
151 logger.debug( message, throwable );
152 checkLogger( target, false, null, null, null );
153 }
154
155 public void testLog4JLoggerInfoEnabled()
156 throws Exception
157 {
158 final Level level = Level.DEBUG;
159 final Level type = Level.INFO;
160 final String message = "Meep!";
161 final Throwable throwable = null;
162 final boolean output = true;
163
164 final MockAppender target = new MockAppender();
165 final Log4JLogger logger = createLogger( target, level );
166 logger.info( message );
167 checkLogger( target, output, message, throwable, type );
168 }
169
170 public void testLog4JLoggerInfoDisabled()
171 throws Exception
172 {
173 final Level level = Level.ERROR;
174 final String message = "Meep!";
175
176 final MockAppender target = new MockAppender();
177 final Log4JLogger logger = createLogger( target, level );
178 logger.info( message );
179 checkLogger( target, false, null, null, null );
180 }
181
182 public void testLog4JLoggerInfoWithExceptionEnabled()
183 throws Exception
184 {
185 final Level level = Level.DEBUG;
186 final Level type = Level.INFO;
187 final String message = "Meep!";
188 final Throwable throwable = new Throwable();
189 final boolean output = true;
190
191 final MockAppender target = new MockAppender();
192 final Log4JLogger logger = createLogger( target, level );
193 logger.info( message, throwable );
194 checkLogger( target, output, message, throwable, type );
195 }
196
197 public void testLog4JLoggerInfoWithExceptionDisabled()
198 throws Exception
199 {
200 final Level level = Level.ERROR;
201 final String message = "Meep!";
202 final Throwable throwable = new Throwable();
203
204 final MockAppender target = new MockAppender();
205 final Log4JLogger logger = createLogger( target, level );
206 logger.info( message, throwable );
207 checkLogger( target, false, null, null, null );
208 }
209
210 public void testLog4JLoggerWarnEnabled()
211 throws Exception
212 {
213 final Level level = Level.DEBUG;
214 final Level type = Level.WARN;
215 final String message = "Meep!";
216 final Throwable throwable = null;
217 final boolean output = true;
218
219 final MockAppender target = new MockAppender();
220 final Log4JLogger logger = createLogger( target, level );
221 logger.warn( message );
222 checkLogger( target, output, message, throwable, type );
223 }
224
225 public void testLog4JLoggerWarnDisabled()
226 throws Exception
227 {
228 final Level level = Level.ERROR;
229 final String message = "Meep!";
230
231 final MockAppender target = new MockAppender();
232 final Log4JLogger logger = createLogger( target, level );
233 logger.warn( message );
234 checkLogger( target, false, null, null, null );
235 }
236
237 public void testLog4JLoggerWarnWithExceptionEnabled()
238 throws Exception
239 {
240 final Level level = Level.DEBUG;
241 final Level type = Level.WARN;
242 final String message = "Meep!";
243 final Throwable throwable = new Throwable();
244 final boolean output = true;
245
246 final MockAppender target = new MockAppender();
247 final Log4JLogger logger = createLogger( target, level );
248 logger.warn( message, throwable );
249 checkLogger( target, output, message, throwable, type );
250 }
251
252 public void testLog4JLoggerWarnWithExceptionDisabled()
253 throws Exception
254 {
255 final Level level = Level.ERROR;
256 final String message = "Meep!";
257 final Throwable throwable = new Throwable();
258
259 final MockAppender target = new MockAppender();
260 final Log4JLogger logger = createLogger( target, level );
261 logger.warn( message, throwable );
262 checkLogger( target, false, null, null, null );
263 }
264
265 public void testLog4JLoggerErrorEnabled()
266 throws Exception
267 {
268 final Level level = Level.DEBUG;
269 final Level type = Level.ERROR;
270 final String message = "Meep!";
271 final Throwable throwable = null;
272 final boolean output = true;
273
274 final MockAppender target = new MockAppender();
275 final Log4JLogger logger = createLogger( target, level );
276 logger.error( message );
277 checkLogger( target, output, message, throwable, type );
278 }
279
280 public void testLog4JLoggerErrorWithExceptionEnabled()
281 throws Exception
282 {
283 final Level level = Level.DEBUG;
284 final Level type = Level.ERROR;
285 final String message = "Meep!";
286 final Throwable throwable = new Throwable();
287 final boolean output = true;
288
289 final MockAppender target = new MockAppender();
290 final Log4JLogger logger = createLogger( target, level );
291 logger.error( message, throwable );
292 checkLogger( target, output, message, throwable, type );
293 }
294
295 public void testConsoleLevelComparisonWithDebugEnabled()
296 throws Exception
297 {
298 final MockAppender target = new MockAppender();
299 final Log4JLogger logger = createLogger( target, Level.DEBUG );
300
301 assertEquals( "logger.isTraceEnabled()", true, logger.isTraceEnabled() );
302 assertEquals( "logger.isDebugEnabled()", true, logger.isDebugEnabled() );
303 assertEquals( "logger.isInfoEnabled()", true, logger.isInfoEnabled() );
304 assertEquals( "logger.isWarnEnabled()", true, logger.isWarnEnabled() );
305 assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
306 }
307
308 public void testConsoleLevelComparisonWithInfoEnabled()
309 throws Exception
310 {
311 final MockAppender target = new MockAppender();
312 final Log4JLogger logger = createLogger( target, Level.INFO );
313
314 assertEquals( "logger.isTraceEnabled()", false, logger.isTraceEnabled() );
315 assertEquals( "logger.isDebugEnabled()", false, logger.isDebugEnabled() );
316 assertEquals( "logger.isInfoEnabled()", true, logger.isInfoEnabled() );
317 assertEquals( "logger.isWarnEnabled()", true, logger.isWarnEnabled() );
318 assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
319 }
320
321 public void testConsoleLevelComparisonWithWarnEnabled()
322 throws Exception
323 {
324 final MockAppender target = new MockAppender();
325 final Log4JLogger logger = createLogger( target, Level.WARN );
326
327 assertEquals( "logger.isTraceEnabled()", false, logger.isTraceEnabled() );
328 assertEquals( "logger.isDebugEnabled()", false, logger.isDebugEnabled() );
329 assertEquals( "logger.isInfoEnabled()", false, logger.isInfoEnabled() );
330 assertEquals( "logger.isWarnEnabled()", true, logger.isWarnEnabled() );
331 assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
332 }
333
334 public void testConsoleLevelComparisonWithErrorEnabled()
335 throws Exception
336 {
337 final MockAppender target = new MockAppender();
338 final Log4JLogger logger = createLogger( target, Level.ERROR );
339
340 assertEquals( "logger.isTraceEnabled()", false, logger.isTraceEnabled() );
341 assertEquals( "logger.isDebugEnabled()", false, logger.isDebugEnabled() );
342 assertEquals( "logger.isInfoEnabled()", false, logger.isInfoEnabled() );
343 assertEquals( "logger.isWarnEnabled()", false, logger.isWarnEnabled() );
344 assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
345 }
346
347 private Log4JLogger createLogger( final Appender target,
348 final Level priority )
349 {
350 final Logger log4jLogger = Logger.getLogger( "test" );
351 log4jLogger.removeAllAppenders();
352 log4jLogger.addAppender( target );
353 log4jLogger.setLevel( priority );
354 return new Log4JLogger( log4jLogger );
355 }
356
357 private void checkLogger( final MockAppender target,
358 final boolean output,
359 final String message,
360 final Throwable throwable,
361 final Level priority )
362 {
363 assertEquals( "logger.m_message == message", message, target.m_message );
364 assertEquals( "logger.m_output == output", output, target.m_output );
365 assertEquals( "logger.m_throwable == null", throwable, target.m_throwable );
366 assertEquals( "logger.m_priority == null", priority, target.m_priority );
367 }
368 }