1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.slf4j.impl;
26
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertFalse;
29 import static org.junit.Assert.assertNull;
30 import static org.junit.Assert.assertTrue;
31
32 import java.io.ByteArrayOutputStream;
33 import java.io.PrintStream;
34
35 import org.junit.After;
36 import org.junit.Before;
37 import org.junit.Test;
38
39 public class SimpleLoggerTest {
40
41 String A_KEY = SimpleLogger.LOG_KEY_PREFIX + "a";
42 PrintStream original = System.out;
43 ByteArrayOutputStream bout = new ByteArrayOutputStream();
44 PrintStream replacement = new PrintStream(bout);
45
46 @Before
47 public void before() {
48 System.setProperty(A_KEY, "info");
49 }
50
51 @After
52 public void after() {
53 System.clearProperty(A_KEY);
54 System.clearProperty(SimpleLogger.CACHE_OUTPUT_STREAM_STRING_KEY);
55 System.setErr(original);
56 }
57
58 @Test
59 public void emptyLoggerName() {
60 SimpleLogger simpleLogger = new SimpleLogger("a");
61 assertEquals("info", simpleLogger.recursivelyComputeLevelString());
62 }
63
64 @Test
65 public void offLevel() {
66 System.setProperty(A_KEY, "off");
67 SimpleLogger.init();
68 SimpleLogger simpleLogger = new SimpleLogger("a");
69 assertEquals("off", simpleLogger.recursivelyComputeLevelString());
70 assertFalse(simpleLogger.isErrorEnabled());
71 }
72
73 @Test
74 public void loggerNameWithNoDots_WithLevel() {
75 SimpleLogger.init();
76 SimpleLogger simpleLogger = new SimpleLogger("a");
77
78 assertEquals("info", simpleLogger.recursivelyComputeLevelString());
79 }
80
81 @Test
82 public void loggerNameWithOneDotShouldInheritFromParent() {
83 SimpleLogger simpleLogger = new SimpleLogger("a.b");
84 assertEquals("info", simpleLogger.recursivelyComputeLevelString());
85 }
86
87 @Test
88 public void loggerNameWithNoDots_WithNoSetLevel() {
89 SimpleLogger simpleLogger = new SimpleLogger("x");
90 assertNull(simpleLogger.recursivelyComputeLevelString());
91 }
92
93 @Test
94 public void loggerNameWithOneDot_NoSetLevel() {
95 SimpleLogger simpleLogger = new SimpleLogger("x.y");
96 assertNull(simpleLogger.recursivelyComputeLevelString());
97 }
98
99 @Test
100 public void checkUseOfLastSystemStreamReference() {
101 SimpleLogger.init();
102 SimpleLogger simpleLogger = new SimpleLogger(this.getClass().getName());
103
104 System.setErr(replacement);
105 simpleLogger.info("hello");
106 replacement.flush();
107 assertTrue(bout.toString().contains("INFO org.slf4j.impl.SimpleLoggerTest - hello"));
108 }
109
110 @Test
111 public void checkUseOfCachedOutputStream() {
112 System.setErr(replacement);
113 System.setProperty(SimpleLogger.CACHE_OUTPUT_STREAM_STRING_KEY, "true");
114 SimpleLogger.init();
115 SimpleLogger simpleLogger = new SimpleLogger(this.getClass().getName());
116
117 System.setErr(original);
118
119 simpleLogger.info("hello");
120 replacement.flush();
121 assertTrue(bout.toString().contains("INFO org.slf4j.impl.SimpleLoggerTest - hello"));
122 }
123 }