1   package ch.qos.logback.classic.pattern;
2   
3   import static org.junit.Assert.assertEquals;
4   
5   import java.io.PrintWriter;
6   import java.io.StringWriter;
7   
8   import org.junit.After;
9   import org.junit.Before;
10  import org.junit.Test;
11  
12  import ch.qos.logback.classic.Level;
13  import ch.qos.logback.classic.LoggerContext;
14  import ch.qos.logback.classic.spi.LoggingEvent;
15  import ch.qos.logback.classic.util.TeztHelper;
16  
17  public class ThrowableProxyConverterTest {
18  
19    LoggerContext lc = new LoggerContext();
20    ThrowableProxyConverter tpc = new ThrowableProxyConverter();
21    StringWriter sw = new StringWriter();
22    PrintWriter pw = new PrintWriter(sw);
23  
24    @Before
25    public void setUp() throws Exception {
26      tpc.setContext(lc);
27      tpc.start();
28    }
29  
30    @After
31    public void tearDown() throws Exception {
32    }
33  
34    private LoggingEvent createLoggingEvent(Throwable t) {
35      LoggingEvent le = new LoggingEvent(this.getClass().getName(), lc
36          .getLogger(LoggerContext.ROOT_NAME), Level.DEBUG, "test message", t,
37          null);
38      return le;
39    }
40  
41    @Test
42    public void smoke() {
43      Exception t = new Exception("smoke");
44      verify(t);
45    }
46  
47    @Test
48    public void nested() {
49      Throwable t = TeztHelper.makeNestedException(1);
50      verify(t);
51    }
52  
53    void verify(Throwable t) {
54      t.printStackTrace(pw);
55  
56      LoggingEvent le = createLoggingEvent(t);
57      String result = tpc.convert(le);
58      System.out.println(result);
59      result = result.replace("common frames omitted", "more");
60      assertEquals(sw.toString(), result);
61    }
62  
63  
64  }