1 package ch.qos.logback.core.util; 2 3 import static org.junit.Assert.*; 4 5 import java.io.ByteArrayOutputStream; 6 import java.io.PrintStream; 7 8 import org.junit.After; 9 import org.junit.Before; 10 import org.junit.Test; 11 12 import ch.qos.logback.core.Context; 13 import ch.qos.logback.core.ContextBase; 14 import ch.qos.logback.core.status.ErrorStatus; 15 import ch.qos.logback.core.status.InfoStatus; 16 import ch.qos.logback.core.status.Status; 17 import ch.qos.logback.core.status.WarnStatus; 18 19 public class StatusPrinterTest { 20 21 ByteArrayOutputStream outputStream; 22 PrintStream ps; 23 24 @Before 25 public void setUp() throws Exception { 26 outputStream = new ByteArrayOutputStream(); 27 ps = new PrintStream(outputStream); 28 StatusPrinter.setPrintStream(ps); 29 } 30 31 @After 32 public void tearDown() throws Exception { 33 StatusPrinter.setPrintStream(System.out); 34 ps = null; 35 outputStream = null; 36 } 37 38 @Test 39 public void testBasic() { 40 Context context = new ContextBase(); 41 context.getStatusManager().add(new InfoStatus("test", this)); 42 StatusPrinter.print(context); 43 String result = outputStream.toString(); 44 assertTrue(result.contains("|-INFO in "+this.getClass().getName())); 45 } 46 47 @Test 48 public void testNested() { 49 Status s0 = new ErrorStatus("test0", this); 50 Status s1 = new InfoStatus("test1", this); 51 Status s11 = new InfoStatus("test11", this); 52 Status s12 = new InfoStatus("test12", this); 53 s1.add(s11); 54 s1.add(s12); 55 56 Status s2 = new InfoStatus("test2", this); 57 Status s21 = new InfoStatus("test21", this); 58 Status s211 = new WarnStatus("test211", this); 59 60 Status s22 = new InfoStatus("test22", this); 61 s2.add(s21); 62 s2.add(s22); 63 s21.add(s211); 64 65 66 Context context = new ContextBase(); 67 context.getStatusManager().add(s0); 68 context.getStatusManager().add(s1); 69 context.getStatusManager().add(s2); 70 71 StatusPrinter.print(context); 72 String result = outputStream.toString(); 73 assertTrue(result.contains("+ INFO in "+this.getClass().getName())); 74 assertTrue(result.contains("+ WARN in "+this.getClass().getName())); 75 assertTrue(result.contains(" |-WARN in "+this.getClass().getName())); 76 } 77 78 @Test 79 public void testWithException() { 80 Status s0 = new ErrorStatus("test0", this); 81 Status s1 = new InfoStatus("test1", this, new Exception("testEx")); 82 Status s11 = new InfoStatus("test11", this); 83 Status s12 = new InfoStatus("test12", this); 84 s1.add(s11); 85 s1.add(s12); 86 87 Status s2 = new InfoStatus("test2", this); 88 Status s21 = new InfoStatus("test21", this); 89 Status s211 = new WarnStatus("test211", this); 90 91 Status s22 = new InfoStatus("test22", this); 92 s2.add(s21); 93 s2.add(s22); 94 s21.add(s211); 95 96 Context context = new ContextBase(); 97 context.getStatusManager().add(s0); 98 context.getStatusManager().add(s1); 99 context.getStatusManager().add(s2); 100 StatusPrinter.print(context); 101 String result = outputStream.toString(); 102 assertTrue(result.contains("|-ERROR in "+this.getClass().getName())); 103 assertTrue(result.contains("+ INFO in "+this.getClass().getName())); 104 assertTrue(result.contains("ch.qos.logback.core.util.StatusPrinterTest.testWithException")); 105 } 106 107 }