1   /*
2    * Copyright (C) The DNA Group. All rights reserved.
3    *
4    * This software is published under the terms of the DNA
5    * Software License version 1.1, a copy of which has been included
6    * with this distribution in the LICENSE.txt file.
7    */
8   package org.codehaus.dna.impl;
9   
10  import java.util.logging.Level;
11  
12  import org.codehaus.dna.impl.Jdk14Logger;
13  
14  import junit.framework.TestCase;
15  
16  public class Jdk14LoggerTestCase
17      extends TestCase
18  {
19      private MockLogger m_mockLogger;
20  
21      public void testLogkitLoggerEmptyCtor()
22          throws Exception
23      {
24          try
25          {
26              new Jdk14Logger( null );
27          }
28          catch( NullPointerException npe )
29          {
30              assertEquals( "npe.getMessage()", "logger", npe.getMessage() );
31          }
32      }
33  
34      public void testJdk14LoggerGetChildLogger()
35          throws Exception
36      {
37          final Jdk14Logger logger = createLogger( Level.FINE );
38  
39          assertNotSame( "logger.getChildLogger == logger",
40                         logger,
41                         logger.getChildLogger( "whatever" ) );
42      }
43  
44      public void testJdk14LoggerTraceEnabled()
45          throws Exception
46      {
47          final Level level = Level.ALL;
48          final Level type = Level.FINEST;
49          final String message = "Meep!";
50          final Throwable throwable = null;
51          final boolean output = true;
52  
53          final Jdk14Logger logger = createLogger( level );
54          logger.trace( message );
55          checkLogger( output, message, throwable, type );
56      }
57  
58      public void testJdk14LoggerTraceDisabled()
59          throws Exception
60      {
61          final Level level = Level.OFF;
62          final String message = "Meep!";
63  
64          final Jdk14Logger logger = createLogger( level );
65          logger.trace( message );
66          checkLogger( false, null, null, null );
67      }
68  
69      public void testJdk14LoggerTraceWithExceptionEnabled()
70          throws Exception
71      {
72          final Level level = Level.ALL;
73          final Level type = Level.FINEST;
74          final String message = "Meep!";
75          final Throwable throwable = new Throwable();
76          final boolean output = true;
77  
78          final Jdk14Logger logger = createLogger( level );
79  
80          logger.trace( message, throwable );
81          checkLogger( output, message, throwable, type );
82      }
83  
84      public void testJdk14LoggerTraceWithExceptionDisabled()
85          throws Exception
86      {
87          final Level level = Level.OFF;
88          final String message = "Meep!";
89          final Throwable throwable = new Throwable();
90  
91          final Jdk14Logger logger = createLogger( level );
92  
93          logger.trace( message, throwable );
94          checkLogger( false, null, null, null );
95      }
96  
97      public void testJdk14LoggerDebugEnabled()
98          throws Exception
99      {
100         final Level level = Level.ALL;
101         final Level type = Level.FINE;
102         final String message = "Meep!";
103         final Throwable throwable = null;
104         final boolean output = true;
105 
106         final Jdk14Logger logger = createLogger( level );
107         logger.debug( message );
108         checkLogger( output, message, throwable, type );
109     }
110 
111     public void testJdk14LoggerDebugDisabled()
112         throws Exception
113     {
114         final Level level = Level.OFF;
115         final String message = "Meep!";
116 
117         final Jdk14Logger logger = createLogger( level );
118         logger.debug( message );
119         checkLogger( false, null, null, null );
120     }
121 
122     public void testJdk14LoggerDebugWithExceptionEnabled()
123         throws Exception
124     {
125         final Level level = Level.ALL;
126         final Level type = Level.FINE;
127         final String message = "Meep!";
128         final Throwable throwable = new Throwable();
129         final boolean output = true;
130 
131         final Jdk14Logger logger = createLogger( level );
132         logger.debug( message, throwable );
133         checkLogger( output, message, throwable, type );
134     }
135 
136     public void testJdk14LoggerDebugWithExceptionDisabled()
137         throws Exception
138     {
139         final Level level = Level.OFF;
140         final String message = "Meep!";
141         final Throwable throwable = new Throwable();
142 
143         final Jdk14Logger logger = createLogger( level );
144         logger.debug( message, throwable );
145         checkLogger( false, null, null, null );
146     }
147 
148     public void testJdk14LoggerInfoEnabled()
149         throws Exception
150     {
151         final Level level = Level.ALL;
152         final Level type = Level.INFO;
153         final String message = "Meep!";
154         final Throwable throwable = null;
155         final boolean output = true;
156 
157         final Jdk14Logger logger = createLogger( level );
158         logger.info( message );
159         checkLogger( output, message, throwable, type );
160     }
161 
162     public void testJdk14LoggerInfoDisabled()
163         throws Exception
164     {
165         final Level level = Level.OFF;
166         final String message = "Meep!";
167 
168         final Jdk14Logger logger = createLogger( level );
169         logger.info( message );
170         checkLogger( false, null, null, null );
171     }
172 
173     public void testJdk14LoggerInfoWithExceptionEnabled()
174         throws Exception
175     {
176         final Level level = Level.ALL;
177         final Level type = Level.INFO;
178         final String message = "Meep!";
179         final Throwable throwable = new Throwable();
180         final boolean output = true;
181 
182         final Jdk14Logger logger = createLogger( level );
183         logger.info( message, throwable );
184         checkLogger( output, message, throwable, type );
185     }
186 
187     public void testJdk14LoggerInfoWithExceptionDisabled()
188         throws Exception
189     {
190         final Level level = Level.OFF;
191         final String message = "Meep!";
192         final Throwable throwable = new Throwable();
193 
194         final Jdk14Logger logger = createLogger( level );
195         logger.info( message, throwable );
196         checkLogger( false, null, null, null );
197     }
198 
199     public void testJdk14LoggerWarnEnabled()
200         throws Exception
201     {
202         final Level level = Level.ALL;
203         final Level type = Level.WARNING;
204         final String message = "Meep!";
205         final Throwable throwable = null;
206         final boolean output = true;
207 
208         final Jdk14Logger logger = createLogger( level );
209         logger.warn( message );
210         checkLogger( output, message, throwable, type );
211     }
212 
213     public void testJdk14LoggerWarnDisabled()
214         throws Exception
215     {
216         final Level level = Level.OFF;
217         final String message = "Meep!";
218 
219         final Jdk14Logger logger = createLogger( level );
220         logger.warn( message );
221         checkLogger( false, null, null, null );
222     }
223 
224     public void testJdk14LoggerWarnWithExceptionEnabled()
225         throws Exception
226     {
227         final Level level = Level.ALL;
228         final Level type = Level.WARNING;
229         final String message = "Meep!";
230         final Throwable throwable = new Throwable();
231         final boolean output = true;
232 
233         final Jdk14Logger logger = createLogger( level );
234         logger.warn( message, throwable );
235         checkLogger( output, message, throwable, type );
236     }
237 
238     public void testJdk14LoggerWarnWithExceptionDisabled()
239         throws Exception
240     {
241         final Level level = Level.OFF;
242         final String message = "Meep!";
243         final Throwable throwable = new Throwable();
244 
245         final Jdk14Logger logger = createLogger( level );
246         logger.warn( message, throwable );
247         checkLogger( false, null, null, null );
248     }
249 
250     public void testJdk14LoggerErrorEnabled()
251         throws Exception
252     {
253         final Level level = Level.ALL;
254         final Level type = Level.SEVERE;
255         final String message = "Meep!";
256         final Throwable throwable = null;
257         final boolean output = true;
258 
259         final Jdk14Logger logger = createLogger( level );
260         logger.error( message );
261         checkLogger( output, message, throwable, type );
262     }
263 
264     public void testJdk14LoggerErrorWithExceptionEnabled()
265         throws Exception
266     {
267         final Level level = Level.ALL;
268         final Level type = Level.SEVERE;
269         final String message = "Meep!";
270         final Throwable throwable = new Throwable();
271         final boolean output = true;
272 
273         final Jdk14Logger logger = createLogger( level );
274         logger.error( message, throwable );
275         checkLogger( output, message, throwable, type );
276     }
277 
278     public void testConsoleLevelComparisonWithDebugEnabled()
279         throws Exception
280     {
281         final Jdk14Logger logger = createLogger( Level.FINEST );
282 
283         assertEquals( "logger.isTraceEnabled()", true, logger.isTraceEnabled() );
284         assertEquals( "logger.isDebugEnabled()", true, logger.isDebugEnabled() );
285         assertEquals( "logger.isInfoEnabled()", true, logger.isInfoEnabled() );
286         assertEquals( "logger.isWarnEnabled()", true, logger.isWarnEnabled() );
287         assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
288     }
289 
290     public void testConsoleLevelComparisonWithInfoEnabled()
291         throws Exception
292     {
293         final Jdk14Logger logger = createLogger( Level.INFO );
294 
295         assertEquals( "logger.isTraceEnabled()", false, logger.isTraceEnabled() );
296         assertEquals( "logger.isDebugEnabled()", false, logger.isDebugEnabled() );
297         assertEquals( "logger.isInfoEnabled()", true, logger.isInfoEnabled() );
298         assertEquals( "logger.isWarnEnabled()", true, logger.isWarnEnabled() );
299         assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
300     }
301 
302     public void testConsoleLevelComparisonWithWarnEnabled()
303         throws Exception
304     {
305         final Jdk14Logger logger = createLogger( Level.WARNING );
306 
307         assertEquals( "logger.isTraceEnabled()", false, logger.isTraceEnabled() );
308         assertEquals( "logger.isDebugEnabled()", false, logger.isDebugEnabled() );
309         assertEquals( "logger.isInfoEnabled()", false, logger.isInfoEnabled() );
310         assertEquals( "logger.isWarnEnabled()", true, logger.isWarnEnabled() );
311         assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
312     }
313 
314     public void testConsoleLevelComparisonWithErrorEnabled()
315         throws Exception
316     {
317         final Jdk14Logger logger = createLogger( Level.SEVERE );
318 
319         assertEquals( "logger.isTraceEnabled()", false, logger.isTraceEnabled() );
320         assertEquals( "logger.isDebugEnabled()", false, logger.isDebugEnabled() );
321         assertEquals( "logger.isInfoEnabled()", false, logger.isInfoEnabled() );
322         assertEquals( "logger.isWarnEnabled()", false, logger.isWarnEnabled() );
323         assertEquals( "logger.isErrorEnabled()", true, logger.isErrorEnabled() );
324     }
325 
326     private Jdk14Logger createLogger( final Level priority )
327     {
328         m_mockLogger = new MockLogger( priority );
329         return new Jdk14Logger( m_mockLogger );
330     }
331 
332     private void checkLogger( final boolean output,
333                               final String message,
334                               final Throwable throwable,
335                               final Level priority )
336     {
337         assertEquals( "logger.m_message == message", message, m_mockLogger.m_message );
338         assertEquals( "logger.m_output == output", output, m_mockLogger.m_output );
339         assertEquals( "logger.m_throwable == null", throwable, m_mockLogger.m_throwable );
340         assertEquals( "logger.m_priority == null", priority, m_mockLogger.m_priority );
341     }
342 }