KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > grlea > log > test > TestOfSettingLogOutput


1 package org.grlea.log.test;
2
3 // $Id: TestOfSettingLogOutput.java,v 1.3 2006/07/13 12:44:57 grlea Exp $
4
// Copyright (c) 2004-2006 Graham Lea. All rights reserved.
5

6 // Licensed under the Apache License, Version 2.0 (the "License");
7
// you may not use this file except in compliance with the License.
8
// You may obtain a copy of the License at
9
//
10
// http://www.apache.org/licenses/LICENSE-2.0
11
//
12
// Unless required by applicable law or agreed to in writing, software
13
// distributed under the License is distributed on an "AS IS" BASIS,
14
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
// See the License for the specific language governing permissions and
16
// limitations under the License.
17

18
19 import org.grlea.log.SimpleLog;
20 import org.grlea.log.SimpleLogger;
21
22 import junit.framework.TestCase;
23 import junit.framework.TestSuite;
24
25 import java.io.BufferedReader JavaDoc;
26 import java.io.ByteArrayInputStream JavaDoc;
27 import java.io.ByteArrayOutputStream JavaDoc;
28 import java.io.IOException JavaDoc;
29 import java.io.InputStreamReader JavaDoc;
30 import java.io.PrintWriter JavaDoc;
31 import java.util.Properties JavaDoc;
32
33 /**
34  * <p>Test setting the output of a {@link SimpleLog}.</p>
35  *
36  * @author Graham Lea
37  * @version $Revision: 1.3 $
38  */

39 public class
40 TestOfSettingLogOutput
41 extends TestCase
42 {
43    private ByteArrayOutputStream JavaDoc outputStream;
44    private SimpleLog log;
45    private Properties JavaDoc properties;
46    private PrintWriter JavaDoc writer;
47
48    public
49    TestOfSettingLogOutput(String JavaDoc name)
50    {
51       // Standard TestCase constructor. You shouldn't edit this.
52
super(name);
53    }
54
55    protected void
56    setUp()
57    {
58       properties = new Properties JavaDoc();
59       log = new SimpleLog(properties);
60
61       outputStream = new ByteArrayOutputStream JavaDoc(512);
62       writer = new PrintWriter JavaDoc(outputStream, true);
63       log.setWriter(writer);
64    }
65
66    protected void
67    tearDown()
68    {
69       log = null;
70       properties = null;
71       outputStream = null;
72       writer = null;
73    }
74
75    public void
76    testSettingLogOutput()
77    throws Exception JavaDoc
78    {
79       new SimpleLogger(log, getClass()).fatal("Testing Fatal");
80
81       String JavaDoc[] expectedOutputLineParts = {" |main|TestOfSettingLogOutput|Testing Fatal"};
82       checkOutput(expectedOutputLineParts);
83    }
84
85
86    public void
87    testReloadingDoesntOverrideLogOutput()
88    throws Exception JavaDoc
89    {
90       assertEquals("SimpleLog.writer", writer, log.getWriter());
91
92       new SimpleLogger(log, getClass()).fatal("Testing Fatal");
93
94       properties.setProperty("simplelog.logFile", "TestOfSettingOutput.log");
95       log.reloadProperties();
96
97       String JavaDoc[] expectedOutputLineParts = {" |main|TestOfSettingLogOutput|Testing Fatal"};
98       checkOutput(expectedOutputLineParts);
99
100       assertEquals("SimpleLog.writer", writer, log.getWriter());
101    }
102
103    protected void
104    checkOutput(String JavaDoc[] expectedOutputLineParts)
105    throws IOException JavaDoc
106    {
107       byte[] output = outputStream.toByteArray();
108       ByteArrayInputStream JavaDoc byteIn = new ByteArrayInputStream JavaDoc(output);
109       InputStreamReader JavaDoc streamReader = new InputStreamReader JavaDoc(byteIn);
110       BufferedReader JavaDoc in = new BufferedReader JavaDoc(streamReader);
111       String JavaDoc outputLine;
112       int lineNumber = 0;
113       while ((outputLine = in.readLine()) != null)
114       {
115          if (lineNumber >= expectedOutputLineParts.length)
116          {
117             fail("More output lines than expected.\nExtra line: " + outputLine);
118          }
119
120          String JavaDoc expectedOutputLinePart = expectedOutputLineParts[lineNumber];
121          boolean linePartFound = outputLine.indexOf(expectedOutputLinePart) != -1;
122          assertEquals("'" + expectedOutputLinePart + "' found in '" + outputLine + "'",
123                       true, linePartFound);
124
125          lineNumber++;
126       }
127
128       assertEquals("output lines", expectedOutputLineParts.length, lineNumber);
129    }
130
131    /**
132     * Returns a test suite that will automatically run all test methods in this
133     * class beginning with "test".
134     */

135    public static TestSuite
136    suite()
137    {
138       return new TestSuite(TestOfSettingLogOutput.class);
139    }
140 }
Popular Tags