1 package ch.qos.logback.classic.pattern;
2
3 import static org.junit.Assert.*;
4
5 import org.junit.After;
6 import org.junit.Before;
7 import org.junit.Test;
8 import org.slf4j.IMarkerFactory;
9 import org.slf4j.Marker;
10 import org.slf4j.helpers.BasicMarkerFactory;
11
12 import ch.qos.logback.classic.Level;
13 import ch.qos.logback.classic.LoggerContext;
14 import ch.qos.logback.classic.spi.LoggingEvent;
15
16 public class MarkerConverterTest {
17
18 LoggerContext lc;
19 MarkerConverter converter;
20
21 IMarkerFactory markerFactory = new BasicMarkerFactory();
22
23 @Before
24 public void setUp() throws Exception {
25 lc = new LoggerContext();
26 converter = new MarkerConverter();
27 converter.start();
28 }
29
30 @After
31 public void tearDown() throws Exception {
32 lc = null;
33 converter.stop();
34 converter = null;
35 }
36
37 @Test
38 public void testWithNullMarker() {
39 String result = converter.convert(createLoggingEvent(null));
40 assertEquals("", result);
41 }
42
43 @Test
44 public void testWithMarker() {
45 String name = "test";
46 Marker marker = markerFactory.getMarker(name);
47 String result = converter.convert(createLoggingEvent(marker));
48 assertEquals(name, result);
49 }
50
51 @Test
52 public void testWithOneChildMarker() {
53 Marker marker = markerFactory.getMarker("test");
54 marker.add(markerFactory.getMarker("child"));
55
56 String result = converter.convert(createLoggingEvent(marker));
57
58 assertEquals("test [ child ]", result);
59 }
60
61 @Test
62 public void testWithSeveralChildMarker() {
63 Marker marker = markerFactory.getMarker("testParent");
64 marker.add(markerFactory.getMarker("child1"));
65 marker.add(markerFactory.getMarker("child2"));
66 marker.add(markerFactory.getMarker("child3"));
67
68 String result = converter.convert(createLoggingEvent(marker));
69
70 assertEquals("testParent [ child1, child2, child3 ]", result);
71 }
72
73 private LoggingEvent createLoggingEvent(Marker marker) {
74 LoggingEvent le = new LoggingEvent(this.getClass().getName(), lc.getLogger(LoggerContext.ROOT_NAME),
75 Level.DEBUG, "test message", null, null);
76 le.setMarker(marker);
77 return le;
78 }
79 }