• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.slf4j.jul;
2 
3 import static org.junit.Assert.assertEquals;
4 
5 import java.util.function.Supplier;
6 import java.util.logging.Handler;
7 import java.util.logging.Level;
8 import java.util.logging.LogRecord;
9 
10 import org.junit.After;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16 
17 public class FluentApiInvocationTest {
18 
19     ListHandler listHandler = new ListHandler();
20     java.util.logging.Logger root = java.util.logging.Logger.getLogger("");
21     Level oldLevel;
22     Logger logger = LoggerFactory.getLogger(this.getClass());
23 
24     @Before
setUp()25     public void setUp() throws Exception {
26         oldLevel = root.getLevel();
27         root.setLevel(Level.FINE);
28         // removeAllHandlers(root);
29         root.addHandler(listHandler);
30     }
31 
32     @After
tearDown()33     public void tearDown() throws Exception {
34         root.setLevel(oldLevel);
35         removeListHandlers(root);
36     }
37 
removeListHandlers(java.util.logging.Logger logger)38     void removeListHandlers(java.util.logging.Logger logger) {
39         Handler[] handlers = logger.getHandlers();
40         for (Handler h : handlers) {
41             if (h instanceof ListHandler)
42                 logger.removeHandler(h);
43         }
44     }
45 
46     @Test
singleMessage()47     public void singleMessage() {
48         String msg = "Hello world.";
49         logger.atDebug().log(msg);
50         assertLogMessage(msg, 0);
51     }
52 
53     @Test
messageWithArguments()54     public void messageWithArguments() {
55         String msg = "Hello {}.";
56         logger.atDebug().addArgument("world").log(msg);
57         assertLogMessage("Hello world.", 0);
58     }
59 
60     @Test
messageWithTwoArguments()61     public void messageWithTwoArguments() {
62         int old = 15;
63         int t = 16;
64 
65         {
66             String msg = "Temperature set to {}. Old temperature was {}.";
67             logger.atDebug().addArgument(t).addArgument(old).log(msg);
68             assertLogMessage("Temperature set to 16. Old temperature was 15.", 0);
69         }
70 
71         {
72             String msg = "Temperature set to {}. Old temperature was {}.";
73             logger.atDebug().log(msg, t, old);
74             assertLogMessage("Temperature set to 16. Old temperature was 15.", 0);
75         }
76 
77         {
78             String msg = "Temperature set to {}. Old temperature was {}.";
79             logger.atDebug().addArgument(t).log(msg, old);
80             assertLogMessage("Temperature set to 16. Old temperature was 15.", 0);
81         }
82 
83         {
84             String msg = "Temperature set to {}. Old temperature was {}.";
85             logger.atDebug().addArgument(() -> t16()).log(msg, old);
86             assertLogMessage("Temperature set to 16. Old temperature was 15.", 0);
87         }
88     }
89 
90     @Test
supplierArguments()91     public void supplierArguments() {
92         Supplier<String> stringSupplier = () -> "world";
93         logger.atInfo().addArgument(stringSupplier).log("hello {}");
94         assertLogMessage("hello world", 0);
95     }
96 
t16()97     public int t16() {
98         return 16;
99     }
100 
101     @Test
messageWithThrowable()102     public void messageWithThrowable() {
103         String msg = "Hello world.";
104         Throwable t = new IllegalStateException();
105         logger.atDebug().setCause(t).log(msg);
106         assertLogMessage("Hello world.", 0);
107         assertThrowable(t, 0);
108     }
109 
110     @Test
messageWithArgumentsAndThrowable()111     public void messageWithArgumentsAndThrowable() {
112         String msg = "Hello {}.";
113         Throwable t = new IllegalStateException();
114 
115         logger.atDebug().setCause(t).addArgument("world").log(msg);
116         assertLogMessage("Hello world.", 0);
117         assertThrowable(t, 0);
118     }
119 
120     @Test
messageWithKeyValuePair()121     public void messageWithKeyValuePair() {
122         String msg = "Hello world.";
123         logger.atDebug().addKeyValue("k", "v").log(msg);
124         assertLogMessage("k=v Hello world.", 0);
125 
126         int oldT = 15;
127         int newT = 16;
128         logger.atDebug().addKeyValue("oldT", oldT).addKeyValue("newT", newT).log("Temperature changed.");
129         assertLogMessage("oldT=15 newT=16 Temperature changed.", 1);
130 
131     }
132 
assertLogMessage(String expected, int index)133     private void assertLogMessage(String expected, int index) {
134         LogRecord logRecord = listHandler.recordList.get(index);
135         Assert.assertNotNull(logRecord);
136         assertEquals(expected, logRecord.getMessage());
137     }
138 
assertThrowable(Throwable expected, int index)139     private void assertThrowable(Throwable expected, int index) {
140         LogRecord logRecord = listHandler.recordList.get(index);
141         Assert.assertNotNull(logRecord);
142         assertEquals(expected, logRecord.getThrown());
143     }
144 }
145