1 package org.grlea.log.test; 2 3 6 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 ; 26 import java.io.ByteArrayInputStream ; 27 import java.io.ByteArrayOutputStream ; 28 import java.io.IOException ; 29 import java.io.InputStreamReader ; 30 import java.io.PrintWriter ; 31 import java.util.Properties ; 32 33 39 public class 40 TestOfSettingLogOutput 41 extends TestCase 42 { 43 private ByteArrayOutputStream outputStream; 44 private SimpleLog log; 45 private Properties properties; 46 private PrintWriter writer; 47 48 public 49 TestOfSettingLogOutput(String name) 50 { 51 super(name); 53 } 54 55 protected void 56 setUp() 57 { 58 properties = new Properties (); 59 log = new SimpleLog(properties); 60 61 outputStream = new ByteArrayOutputStream (512); 62 writer = new PrintWriter (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 78 { 79 new SimpleLogger(log, getClass()).fatal("Testing Fatal"); 80 81 String [] expectedOutputLineParts = {" |main|TestOfSettingLogOutput|Testing Fatal"}; 82 checkOutput(expectedOutputLineParts); 83 } 84 85 86 public void 87 testReloadingDoesntOverrideLogOutput() 88 throws Exception 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 [] expectedOutputLineParts = {" |main|TestOfSettingLogOutput|Testing Fatal"}; 98 checkOutput(expectedOutputLineParts); 99 100 assertEquals("SimpleLog.writer", writer, log.getWriter()); 101 } 102 103 protected void 104 checkOutput(String [] expectedOutputLineParts) 105 throws IOException 106 { 107 byte[] output = outputStream.toByteArray(); 108 ByteArrayInputStream byteIn = new ByteArrayInputStream (output); 109 InputStreamReader streamReader = new InputStreamReader (byteIn); 110 BufferedReader in = new BufferedReader (streamReader); 111 String 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 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 135 public static TestSuite 136 suite() 137 { 138 return new TestSuite(TestOfSettingLogOutput.class); 139 } 140 } | Popular Tags |